public <RootResponse> Response<RootResponse> create(@NonNull String url, @NonNull Class<RootResponse> clazz, ClientConfiguration clientConfigurationOrNull) { Optional<ClientConfiguration> clientConfiguration = Optional.ofNullable(clientConfigurationOrNull); JerseyClient newClient = jerseyClientBuilder.register(SseFeature.class).withConfig(clientConfig).build(); newClient.register(LastEventIdHeaderFilter.class); if (clientConfigurationOrNull != null && !Strings.isNullOrEmpty(clientConfigurationOrNull.getAuthorization())) { newClient.register(new AuthHeaderFilter(clientConfigurationOrNull.getAuthorization())); } MediaType mediaType = clientConfiguration.map(c -> c.getMediaType()).orElse(MediaType.APPLICATION_JSON_TYPE); ResponseBuilder responseBuilder = new ResponseBuilder(newClient, objectMapper, mediaType); JerseyWebTarget webTarget = newClient.target(url); Builder requestBuilder = webTarget.request(mediaType); String readEntity = requestBuilder.get().readEntity(String.class); return responseBuilder.buildResponse(readEntity, clazz, URI.create(url)).get(); }