Repository: cxf Updated Branches: refs/heads/master 43460c235 -> 0a900283e
[CXF-6353] Support for setting HTTP connection properties as JAX-RS 2.0 properties Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/0a900283 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/0a900283 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/0a900283 Branch: refs/heads/master Commit: 0a900283eb743516e66c5988700b002e40c1bf45 Parents: 43460c2 Author: Sergey Beryozkin <[email protected]> Authored: Fri Apr 17 16:59:48 2015 +0100 Committer: Sergey Beryozkin <[email protected]> Committed: Fri Apr 17 16:59:48 2015 +0100 ---------------------------------------------------------------------- .../cxf/jaxrs/client/spec/ClientImpl.java | 27 ++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/0a900283/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java index ba9dc23..95c7650 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java @@ -40,6 +40,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; import org.apache.cxf.configuration.jsse.TLSClientParameters; +import org.apache.cxf.jaxrs.client.ClientConfiguration; import org.apache.cxf.jaxrs.client.ClientProviderFactory; import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean; import org.apache.cxf.jaxrs.client.WebClient; @@ -47,6 +48,9 @@ import org.apache.cxf.jaxrs.model.FilterProviderInfo; import org.apache.cxf.transport.https.SSLUtils; public class ClientImpl implements Client { + private static final String HTTP_CONNECTION_TIMEOUT_PROP = "http.connection.timeout"; + private static final String HTTP_RECEIVE_TIMEOUT_PROP = "http.receive.timeout"; + private Configurable<Client> configImpl; private TLSConfiguration secConfig; private boolean closed; @@ -254,21 +258,34 @@ public class ClientImpl implements Client { } pf.setUserProviders(providers); - WebClient.getConfig(targetClient).getRequestContext().putAll(getConfiguration().getProperties()); - WebClient.getConfig(targetClient).getRequestContext().put(Client.class.getName(), ClientImpl.this); - WebClient.getConfig(targetClient).getRequestContext().put(Configuration.class.getName(), + Map<String, Object> configProps = getConfiguration().getProperties(); + ClientConfiguration clientCfg = WebClient.getConfig(targetClient); + + clientCfg.getRequestContext().putAll(configProps); + clientCfg.getRequestContext().put(Client.class.getName(), ClientImpl.this); + clientCfg.getRequestContext().put(Configuration.class.getName(), getConfiguration()); // TLS TLSClientParameters tlsParams = secConfig.getTlsClientParams(); if (tlsParams.getSSLSocketFactory() != null || tlsParams.getTrustManagers() != null) { - WebClient.getConfig(targetClient).getHttpConduit().setTlsClientParameters(tlsParams); + clientCfg.getHttpConduit().setTlsClientParameters(tlsParams); + } + Long connTimeOutValue = getLongValue(configProps.get(HTTP_CONNECTION_TIMEOUT_PROP)); + if (connTimeOutValue != null) { + clientCfg.getHttpConduit().getClient().setConnectionTimeout(connTimeOutValue); + } + Long recTimeOutValue = getLongValue(configProps.get(HTTP_RECEIVE_TIMEOUT_PROP)); + if (recTimeOutValue != null) { + clientCfg.getHttpConduit().getClient().setReceiveTimeout(recTimeOutValue); } // start building the invocation return new InvocationBuilderImpl(WebClient.fromClient(targetClient)); } - + private Long getLongValue(Object o) { + return o instanceof Long ? (Long)o : o instanceof String ? Long.valueOf(o.toString()) : null; + } private void initTargetClientIfNeeded() { URI uri = uriBuilder.build(); if (targetClient == null) {
