diff options
author | Bjørn Christian Seime <bjorncs@oath.com> | 2017-11-21 12:38:13 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2017-11-21 12:50:35 +0100 |
commit | 437dfe2db270af3ce8c4da1975ce335bb625f557 (patch) | |
tree | 157a346e4f2747d1b9c45d8c0d8594eb4333cdc6 /jaxrs_client_utils/src/main | |
parent | 1b245f10e77b4aac6ac0197b1654815ccdc961c7 (diff) |
Add scheme parameter to jax-rs client
Diffstat (limited to 'jaxrs_client_utils/src/main')
5 files changed, 19 insertions, 10 deletions
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java index 4d5279ebfd4..d004ac3af45 100644 --- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java +++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java @@ -9,5 +9,5 @@ import com.yahoo.vespa.applicationmodel.HostName; * @author bakksjo */ public interface JaxRsClientFactory { - <T> T createClient(Class<T> apiClass, HostName hostName, int port, String pathPrefix); + <T> T createClient(Class<T> apiClass, HostName hostName, int port, String pathPrefix, String scheme); } diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java index 722652557c7..6523a0c138f 100644 --- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java +++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java @@ -34,13 +34,15 @@ import java.util.Set; public class JaxRsStrategyFactory { private final Set<HostName> hostNames; private int port; + private final String scheme; private final JaxRsClientFactory jaxRsClientFactory; // TODO: We might need to support per-host port specification. public JaxRsStrategyFactory( final Set<HostName> hostNames, final int port, - final JaxRsClientFactory jaxRsClientFactory) { + final JaxRsClientFactory jaxRsClientFactory, + String scheme) { if (hostNames.isEmpty()) { throw new IllegalArgumentException("hostNames argument must not be empty"); } @@ -48,19 +50,20 @@ public class JaxRsStrategyFactory { this.hostNames = hostNames; this.port = port; this.jaxRsClientFactory = jaxRsClientFactory; + this.scheme = scheme; } public <T> JaxRsStrategy<T> apiWithRetries(final Class<T> apiClass, final String pathPrefix) { Objects.requireNonNull(apiClass, "apiClass argument may not be null"); Objects.requireNonNull(pathPrefix, "pathPrefix argument may not be null"); - return new RetryingJaxRsStrategy<T>(hostNames, port, jaxRsClientFactory, apiClass, pathPrefix); + return new RetryingJaxRsStrategy<T>(hostNames, port, jaxRsClientFactory, apiClass, pathPrefix, scheme); } public <T> JaxRsStrategy<T> apiNoRetries(final Class<T> apiClass, final String pathPrefix) { Objects.requireNonNull(apiClass, "apiClass argument may not be null"); Objects.requireNonNull(pathPrefix, "pathPrefix argument may not be null"); final HostName hostName = getRandom(hostNames); - return new NoRetryJaxRsStrategy<T>(hostName, port, jaxRsClientFactory, apiClass, pathPrefix); + return new NoRetryJaxRsStrategy<T>(hostName, port, jaxRsClientFactory, apiClass, pathPrefix, scheme); } private static final Random random = new Random(); diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java index 8d096a0dff6..5fd72432702 100644 --- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java +++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java @@ -36,8 +36,8 @@ public class JerseyJaxRsClientFactory implements JaxRsClientFactory { * https://jersey.java.net/apidocs/latest/jersey/org/glassfish/jersey/client/HttpUrlConnectorProvider.html#SET_METHOD_WORKAROUND */ @Override - public <T> T createClient(final Class<T> apiClass, final HostName hostName, final int port, final String pathPrefix) { - final UriBuilder uriBuilder = UriBuilder.fromPath(pathPrefix).host(hostName.s()).port(port).scheme("http"); + public <T> T createClient(final Class<T> apiClass, final HostName hostName, final int port, final String pathPrefix, String scheme) { + final UriBuilder uriBuilder = UriBuilder.fromPath(pathPrefix).host(hostName.s()).port(port).scheme(scheme); final Client webClient = ClientBuilder.newClient() .property(ClientProperties.CONNECT_TIMEOUT, connectTimeoutMs) .property(ClientProperties.READ_TIMEOUT, readTimeoutMs) diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java index 0f053332d99..7d70c37a40d 100644 --- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java +++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java @@ -18,6 +18,7 @@ public class NoRetryJaxRsStrategy<T> implements JaxRsStrategy<T> { private final int port; private final JaxRsClientFactory jaxRsClientFactory; private final Class<T> apiClass; + private final String scheme; private String pathPrefix; public NoRetryJaxRsStrategy( @@ -25,7 +26,8 @@ public class NoRetryJaxRsStrategy<T> implements JaxRsStrategy<T> { final int port, final JaxRsClientFactory jaxRsClientFactory, final Class<T> apiClass, - final String pathPrefix) { + final String pathPrefix, + String scheme) { Objects.requireNonNull(hostName, "hostName argument may not be null"); Objects.requireNonNull(jaxRsClientFactory, "jaxRsClientFactory argument may not be null"); Objects.requireNonNull(apiClass, "apiClass argument may not be null"); @@ -35,11 +37,12 @@ public class NoRetryJaxRsStrategy<T> implements JaxRsStrategy<T> { this.jaxRsClientFactory = jaxRsClientFactory; this.apiClass = apiClass; this.pathPrefix = pathPrefix; + this.scheme = scheme; } @Override public <R> R apply(final Function<T, R> function) throws IOException { - final T jaxRsClient = jaxRsClientFactory.createClient(apiClass, hostName, port, pathPrefix); + final T jaxRsClient = jaxRsClientFactory.createClient(apiClass, hostName, port, pathPrefix, scheme); try { return function.apply(jaxRsClient); } catch (ProcessingException e) { diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java index a73297780c6..73320a4c72d 100644 --- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java +++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java @@ -28,13 +28,15 @@ public class RetryingJaxRsStrategy<T> implements JaxRsStrategy<T> { private final JaxRsClientFactory jaxRsClientFactory; private final Class<T> apiClass; private String pathPrefix; + private final String scheme; public RetryingJaxRsStrategy( final Set<HostName> hostNames, final int port, final JaxRsClientFactory jaxRsClientFactory, final Class<T> apiClass, - final String pathPrefix) { + final String pathPrefix, + String scheme) { if (hostNames.isEmpty()) { throw new IllegalArgumentException("hostNames argument must not be empty"); } @@ -47,6 +49,7 @@ public class RetryingJaxRsStrategy<T> implements JaxRsStrategy<T> { this.jaxRsClientFactory = jaxRsClientFactory; this.apiClass = apiClass; this.pathPrefix = pathPrefix; + this.scheme = scheme; } @Override @@ -55,7 +58,7 @@ public class RetryingJaxRsStrategy<T> implements JaxRsStrategy<T> { for (int i = 0; i < NUM_LOOP_ATTEMPTS; ++i) { for (final HostName hostName : hostNames) { - final T jaxRsClient = jaxRsClientFactory.createClient(apiClass, hostName, port, pathPrefix); + final T jaxRsClient = jaxRsClientFactory.createClient(apiClass, hostName, port, pathPrefix, scheme); try { return function.apply(jaxRsClient); } catch (ProcessingException e) { |