You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2013/12/09 03:11:46 UTC
[42/50] [abbrv] git commit: CAMEL-7010 Upgraded camel-http4 to use
HttpClient 4.3 API
CAMEL-7010 Upgraded camel-http4 to use HttpClient 4.3 API
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7e65a14d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7e65a14d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7e65a14d
Branch: refs/heads/camel-gora
Commit: 7e65a14d0fb2e49282bbf51ebe463c6fff38073d
Parents: 3227252
Author: Willem Jiang <wi...@gmail.com>
Authored: Sat Dec 7 22:11:15 2013 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Sat Dec 7 22:12:29 2013 +0800
----------------------------------------------------------------------
.../aws/swf/CamelSWFWorkflowClientTest.java | 2 +-
.../aws/swf/SwfComponentSpringTest.java | 2 -
.../camel/component/http/helper/HttpHelper.java | 2 +-
...BasicAuthenticationHttpClientConfigurer.java | 10 +-
.../http4/CompositeHttpConfigurer.java | 6 +-
.../component/http4/HttpClientConfigurer.java | 4 +-
.../camel/component/http4/HttpComponent.java | 147 +++++++------------
.../camel/component/http4/HttpEndpoint.java | 90 ++++++------
.../camel/component/http4/HttpProducer.java | 26 ++--
.../http4/ProxyHttpClientConfigurer.java | 13 +-
.../http4/AdviceAndInterceptHttp4IssueTest.java | 2 +-
.../component/http4/HttpAuthenticationTest.java | 22 +--
.../component/http4/HttpCompressionTest.java | 19 ++-
.../http4/HttpProducerContentTypeTest.java | 1 -
.../component/http4/HttpProxyServerTest.java | 51 ++-----
.../camel/component/http4/HttpRedirectTest.java | 8 +-
.../http4/HttpReferenceParameterTest.java | 4 +-
.../component/http4/HttpSOTimeoutTest.java | 4 +-
.../component/http4/HttpServerTestSupport.java | 6 +-
.../http4/HttpWithHttpUriHeaderTest.java | 1 -
.../http4/HttpsAuthenticationTest.java | 24 ++-
...TwoDifferentSslContextParametersGetTest.java | 2 +
.../apache/camel/itest/http/Http4RouteTest.java | 2 +-
.../itest/http/Http4EndpointTest-context.xml | 34 +----
.../Http4MaxConnectionPerHostTest-context.xml | 30 ----
25 files changed, 205 insertions(+), 307 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/CamelSWFWorkflowClientTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/CamelSWFWorkflowClientTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/CamelSWFWorkflowClientTest.java
index 42b53fe..69bc01f 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/CamelSWFWorkflowClientTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/CamelSWFWorkflowClientTest.java
@@ -72,7 +72,7 @@ public class CamelSWFWorkflowClientTest {
Date closeTimestamp = new Date();
executionInfo.setCloseTimestamp(closeTimestamp);
executionInfo.setExecutionStatus("CLOSED");
- executionInfo.setTagList(Collections.EMPTY_LIST);
+ executionInfo.setTagList((List<String>)Collections.EMPTY_LIST);
WorkflowExecutionDetail workflowExecutionDetail = new WorkflowExecutionDetail();
workflowExecutionDetail.setExecutionInfo(executionInfo);
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/SwfComponentSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/SwfComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/SwfComponentSpringTest.java
index 12b8437..55b8a50 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/SwfComponentSpringTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/swf/SwfComponentSpringTest.java
@@ -18,10 +18,8 @@ package org.apache.camel.component.aws.swf;
import org.apache.camel.EndpointInject;
import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.aws.sqs.SqsConstants;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.spring.CamelSpringTestSupport;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java b/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java
index 96ebeef..65b5a03 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java
@@ -167,7 +167,7 @@ public final class HttpHelper {
} else {
CachedOutputStream cos = new CachedOutputStream(exchange);
IOHelper.copyAndCloseInput(is, cos);
- return cos.getStreamCache();
+ return cos.newStreamCache();
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java
index c17df1c..8671369 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java
@@ -20,8 +20,8 @@ import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.NTCredentials;
import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.HttpClientBuilder;
public class BasicAuthenticationHttpClientConfigurer implements HttpClientConfigurer {
private final String username;
@@ -36,14 +36,16 @@ public class BasicAuthenticationHttpClientConfigurer implements HttpClientConfig
this.host = host;
}
- public void configureHttpClient(HttpClient client) {
+ public void configureHttpClient(HttpClientBuilder clientBuilder) {
Credentials defaultcreds;
if (domain != null) {
defaultcreds = new NTCredentials(username, password, host, domain);
} else {
defaultcreds = new UsernamePasswordCredentials(username, password);
}
- ((DefaultHttpClient) client).getCredentialsProvider().setCredentials(AuthScope.ANY, defaultcreds);
+ BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(AuthScope.ANY, defaultcreds);
+ clientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java
index f96e71f..29c3d98 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.http4;
import java.util.ArrayList;
import java.util.List;
-import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
public class CompositeHttpConfigurer implements HttpClientConfigurer {
@@ -35,9 +35,9 @@ public class CompositeHttpConfigurer implements HttpClientConfigurer {
configurers.remove(configurer);
}
- public void configureHttpClient(HttpClient client) {
+ public void configureHttpClient(HttpClientBuilder clientBuilder) {
for (HttpClientConfigurer configurer : configurers) {
- configurer.configureHttpClient(client);
+ configurer.configureHttpClient(clientBuilder);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
index e79174f..95b2672 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java
@@ -16,7 +16,7 @@
*/
package org.apache.camel.component.http4;
-import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
/**
* A pluggable strategy for configuring the HttpClient used by this component
@@ -30,5 +30,5 @@ public interface HttpClientConfigurer {
*
* @param client the client
*/
- void configureHttpClient(HttpClient client);
+ void configureHttpClient(HttpClientBuilder clientBuilder);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
index 4d0d230..855f40e 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
@@ -16,7 +16,9 @@
*/
package org.apache.camel.component.http4;
+import java.io.IOException;
import java.net.URI;
+import java.security.GeneralSecurityException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -31,23 +33,18 @@ import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
import org.apache.camel.util.jsse.SSLContextParameters;
-import org.apache.http.auth.params.AuthParamBean;
import org.apache.http.client.CookieStore;
-import org.apache.http.client.params.ClientParamBean;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.params.ConnRouteParamBean;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.HttpClientConnectionManager;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.BrowserCompatHostnameVerifier;
-import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier;
-import org.apache.http.cookie.params.CookieSpecParamBean;
-import org.apache.http.impl.conn.PoolingClientConnectionManager;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.HttpConnectionParamBean;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParamBean;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.protocol.HttpContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,7 +59,7 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
private static final Logger LOG = LoggerFactory.getLogger(HttpComponent.class);
protected HttpClientConfigurer httpClientConfigurer;
- protected ClientConnectionManager clientConnectionManager;
+ protected HttpClientConnectionManager clientConnectionManager;
protected HttpBinding httpBinding;
protected HttpContext httpContext;
protected SSLContextParameters sslContextParameters;
@@ -75,8 +72,6 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
// It's MILLISECONDS, the default value is always keep alive
protected long connectionTimeToLive = -1;
- private volatile SSLContextParameters usedSslContextParams;
-
/**
* Connects the URL specified on the endpoint to the specified processor.
*
@@ -151,11 +146,7 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
String proxyAuthPassword = getAndRemoveParameter(parameters, "proxyAuthPassword", String.class);
String proxyAuthDomain = getAndRemoveParameter(parameters, "proxyAuthDomain", String.class);
String proxyAuthNtHost = getAndRemoveParameter(parameters, "proxyAuthNtHost", String.class);
- boolean secureProxy = HttpHelper.isSecureConnection(proxyAuthScheme);
-
- // register scheme for proxy
- registerPort(secureProxy, x509HostnameVerifier, proxyAuthPort, sslContextParameters);
-
+
if (proxyAuthUsername != null && proxyAuthPassword != null) {
return CompositeHttpConfigurer.combineConfigurers(
configurer, new ProxyHttpClientConfigurer(proxyAuthHost, proxyAuthPort, proxyAuthScheme, proxyAuthUsername, proxyAuthPassword, proxyAuthDomain, proxyAuthNtHost));
@@ -171,7 +162,14 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
Map<String, Object> httpClientParameters = new HashMap<String, Object>(parameters);
// http client can be configured from URI options
- HttpParams clientParams = configureHttpParams(parameters);
+ HttpClientBuilder clientBuilder = HttpClientBuilder.create();
+ // allow the builder pattern
+ IntrospectionSupport.setProperties(clientBuilder, parameters, "httpClient.", true);
+ // set the Request configure this way and allow the builder pattern
+ RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
+ IntrospectionSupport.setProperties(requestConfigBuilder, parameters, "httpClient.", true);
+ clientBuilder.setDefaultRequestConfig(requestConfigBuilder.build());
+
// validate that we could resolve all httpClient. parameters as this component is lenient
validateParameters(uri, parameters, "httpClient.");
@@ -191,6 +189,7 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
if (x509HostnameVerifier == null) {
x509HostnameVerifier = getX509HostnameVerifier();
}
+
// TODO cmueller: remove the "sslContextParametersRef" look up in Camel 3.0
SSLContextParameters sslContextParameters = resolveAndRemoveReferenceParameter(parameters, "sslContextParametersRef", SSLContextParameters.class);
@@ -200,6 +199,7 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
if (sslContextParameters == null) {
sslContextParameters = getSslContextParameters();
}
+
String httpMethodRestrict = getAndRemoveParameter(parameters, "httpMethodRestrict", String.class);
HeaderFilterStrategy headerFilterStrategy = resolveAndRemoveReferenceParameter(parameters, "headerFilterStrategy", HeaderFilterStrategy.class);
@@ -250,7 +250,11 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
String endpointUriString = endpointUri.toString();
LOG.debug("Creating endpoint uri {}", endpointUriString);
- HttpEndpoint endpoint = new HttpEndpoint(endpointUriString, this, clientParams, clientConnectionManager, configurer);
+ HttpClientConnectionManager localConnectionManager = clientConnectionManager;
+ if (localConnectionManager == null) {
+ localConnectionManager = createConnectionManager(createConnectionRegistry(x509HostnameVerifier, sslContextParameters));
+ }
+ HttpEndpoint endpoint = new HttpEndpoint(endpointUriString, this, clientBuilder, localConnectionManager, configurer);
if (urlRewrite != null) {
// let CamelContext deal with the lifecycle of the url rewrite
// this ensures its being shutdown when Camel shutdown etc.
@@ -294,9 +298,7 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
if (endpoint.getCookieStore() == null) {
endpoint.setCookieStore(getCookieStore());
}
- // register port on schema registry
- registerPort(secure, x509HostnameVerifier, port, sslContextParameters);
-
+
return endpoint;
}
@@ -314,86 +316,37 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
return port;
}
- @SuppressWarnings("deprecation")
- protected void registerPort(boolean secure, X509HostnameVerifier x509HostnameVerifier, int port, SSLContextParameters sslContextParams) throws Exception {
- if (usedSslContextParams == null) {
- usedSslContextParams = sslContextParams;
- }
-
- // we must use same SSLContextParameters for this component.
- if (usedSslContextParams != sslContextParams) {
- // use identity hashcode in exception message
- Object previous = ObjectHelper.getIdentityHashCode(usedSslContextParams);
- Object next = ObjectHelper.getIdentityHashCode(sslContextParams);
- throw new IllegalArgumentException("Only same instance of SSLContextParameters is supported. Cannot use a different instance."
- + " Previous instance hashcode: " + previous + ", New instance hashcode: " + next);
- }
-
- SchemeRegistry registry = clientConnectionManager.getSchemeRegistry();
- if (secure) {
- SSLSocketFactory socketFactory;
- if (sslContextParams == null) {
- socketFactory = SSLSocketFactory.getSocketFactory();
- } else {
- socketFactory = new SSLSocketFactory(sslContextParams.createSSLContext());
- }
-
- socketFactory.setHostnameVerifier(x509HostnameVerifier);
- // must register both https and https4
- registry.register(new Scheme("https", port, socketFactory));
- LOG.info("Registering SSL scheme https on port " + port);
-
- registry.register(new Scheme("https4", port, socketFactory));
- LOG.info("Registering SSL scheme https4 on port " + port);
+ protected Registry<ConnectionSocketFactory> createConnectionRegistry(X509HostnameVerifier x509HostnameVerifier, SSLContextParameters sslContextParams)
+ throws GeneralSecurityException, IOException {
+ // create the default connection registry to use
+ RegistryBuilder<ConnectionSocketFactory> builder = RegistryBuilder.<ConnectionSocketFactory>create();
+ builder.register("http", PlainConnectionSocketFactory.getSocketFactory());
+ builder.register("http4", PlainConnectionSocketFactory.getSocketFactory());
+ if (sslContextParams != null) {
+ builder.register("https", new SSLConnectionSocketFactory(sslContextParams.createSSLContext(), x509HostnameVerifier));
+ builder.register("https4", new SSLConnectionSocketFactory(sslContextParams.createSSLContext(), x509HostnameVerifier));
} else {
- // must register both http and http4
- registry.register(new Scheme("http", port, new PlainSocketFactory()));
- LOG.info("Registering PLAIN scheme http on port " + port);
- registry.register(new Scheme("http4", port, new PlainSocketFactory()));
- LOG.info("Registering PLAIN scheme http4 on port " + port);
+ builder.register("https4", SSLConnectionSocketFactory.getSocketFactory());
+ builder.register("https", SSLConnectionSocketFactory.getSocketFactory());
}
+ return builder.build();
}
-
- protected ClientConnectionManager createConnectionManager() {
- SchemeRegistry schemeRegistry = new SchemeRegistry();
+
+ protected HttpClientConnectionManager createConnectionManager(Registry<ConnectionSocketFactory> registry) {
// setup the connection live time
- PoolingClientConnectionManager answer = new PoolingClientConnectionManager(schemeRegistry, getConnectionTimeToLive(), TimeUnit.MILLISECONDS);
+ PoolingHttpClientConnectionManager answer =
+ new PoolingHttpClientConnectionManager(registry, null, null, null, getConnectionTimeToLive(), TimeUnit.MILLISECONDS);
if (getMaxTotalConnections() > 0) {
answer.setMaxTotal(getMaxTotalConnections());
}
if (getConnectionsPerRoute() > 0) {
answer.setDefaultMaxPerRoute(getConnectionsPerRoute());
}
-
LOG.info("Created ClientConnectionManager " + answer);
return answer;
}
- protected HttpParams configureHttpParams(Map<String, Object> parameters) throws Exception {
- HttpParams clientParams = new BasicHttpParams();
-
- AuthParamBean authParamBean = new AuthParamBean(clientParams);
- IntrospectionSupport.setProperties(authParamBean, parameters, "httpClient.");
-
- ClientParamBean clientParamBean = new ClientParamBean(clientParams);
- IntrospectionSupport.setProperties(clientParamBean, parameters, "httpClient.");
-
- ConnRouteParamBean connRouteParamBean = new ConnRouteParamBean(clientParams);
- IntrospectionSupport.setProperties(connRouteParamBean, parameters, "httpClient.");
-
- CookieSpecParamBean cookieSpecParamBean = new CookieSpecParamBean(clientParams);
- IntrospectionSupport.setProperties(cookieSpecParamBean, parameters, "httpClient.");
-
- HttpConnectionParamBean httpConnectionParamBean = new HttpConnectionParamBean(clientParams);
- IntrospectionSupport.setProperties(httpConnectionParamBean, parameters, "httpClient.");
-
- HttpProtocolParamBean httpProtocolParamBean = new HttpProtocolParamBean(clientParams);
- IntrospectionSupport.setProperties(httpProtocolParamBean, parameters, "httpClient.");
-
- return clientParams;
- }
-
@Override
protected boolean useIntrospectionOnEndpoint() {
return false;
@@ -407,11 +360,11 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
this.httpClientConfigurer = httpClientConfigurer;
}
- public ClientConnectionManager getClientConnectionManager() {
+ public HttpClientConnectionManager getClientConnectionManager() {
return clientConnectionManager;
}
- public void setClientConnectionManager(ClientConnectionManager clientConnectionManager) {
+ public void setClientConnectionManager(HttpClientConnectionManager clientConnectionManager) {
this.clientConnectionManager = clientConnectionManager;
}
@@ -482,9 +435,6 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
@Override
public void doStart() throws Exception {
super.doStart();
- if (clientConnectionManager == null) {
- clientConnectionManager = createConnectionManager();
- }
}
@Override
@@ -495,7 +445,8 @@ public class HttpComponent extends HeaderFilterStrategyComponent {
clientConnectionManager.shutdown();
clientConnectionManager = null;
}
- usedSslContextParams = null;
+
super.doStop();
}
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
index c5086a3..2ef06b8 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
@@ -21,7 +21,6 @@ import java.net.URISyntaxException;
import org.apache.camel.PollingConsumer;
import org.apache.camel.Producer;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.component.http4.helper.HttpHelper;
import org.apache.camel.impl.DefaultPollingEndpoint;
import org.apache.camel.spi.HeaderFilterStrategy;
@@ -30,11 +29,10 @@ import org.apache.camel.util.ObjectHelper;
import org.apache.http.HttpHost;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.params.ConnRoutePNames;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.HttpParams;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.conn.HttpClientConnectionManager;
+import org.apache.http.impl.client.BasicCookieStore;
+import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.protocol.HttpContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,9 +50,9 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
private HttpContext httpContext;
private HttpComponent component;
private URI httpUri;
- private HttpParams clientParams;
private HttpClientConfigurer httpClientConfigurer;
- private ClientConnectionManager clientConnectionManager;
+ private HttpClientConnectionManager clientConnectionManager;
+ private HttpClientBuilder clientBuilder;
private HttpClient httpClient;
private boolean throwExceptionOnFailure = true;
private boolean bridgeEndpoint;
@@ -67,8 +65,8 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
private String httpMethodRestrict;
private UrlRewrite urlRewrite;
private boolean clearExpiredCookies = true;
- private CookieStore cookieStore;
-
+ private CookieStore cookieStore = new BasicCookieStore();
+
public HttpEndpoint() {
}
@@ -76,21 +74,21 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
this(endPointURI, component, httpURI, null);
}
- public HttpEndpoint(String endPointURI, HttpComponent component, URI httpURI, ClientConnectionManager clientConnectionManager) throws URISyntaxException {
- this(endPointURI, component, httpURI, new BasicHttpParams(), clientConnectionManager, null);
+ public HttpEndpoint(String endPointURI, HttpComponent component, URI httpURI, HttpClientConnectionManager clientConnectionManager) throws URISyntaxException {
+ this(endPointURI, component, httpURI, HttpClientBuilder.create(), clientConnectionManager, null);
}
- public HttpEndpoint(String endPointURI, HttpComponent component, HttpParams clientParams,
- ClientConnectionManager clientConnectionManager, HttpClientConfigurer clientConfigurer) throws URISyntaxException {
- this(endPointURI, component, null, clientParams, clientConnectionManager, clientConfigurer);
+ public HttpEndpoint(String endPointURI, HttpComponent component, HttpClientBuilder clientBuilder,
+ HttpClientConnectionManager clientConnectionManager, HttpClientConfigurer clientConfigurer) throws URISyntaxException {
+ this(endPointURI, component, null, clientBuilder, clientConnectionManager, clientConfigurer);
}
- public HttpEndpoint(String endPointURI, HttpComponent component, URI httpURI, HttpParams clientParams,
- ClientConnectionManager clientConnectionManager, HttpClientConfigurer clientConfigurer) throws URISyntaxException {
+ public HttpEndpoint(String endPointURI, HttpComponent component, URI httpURI, HttpClientBuilder clientBuilder,
+ HttpClientConnectionManager clientConnectionManager, HttpClientConfigurer clientConfigurer) throws URISyntaxException {
super(endPointURI, component);
this.component = component;
this.httpUri = httpURI;
- this.clientParams = clientParams;
+ this.clientBuilder = clientBuilder;
this.httpClientConfigurer = clientConfigurer;
this.clientConnectionManager = clientConnectionManager;
}
@@ -125,13 +123,13 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
* Producers and consumers should use the {@link #getHttpClient()} method instead.
*/
protected HttpClient createHttpClient() {
- ObjectHelper.notNull(clientParams, "clientParams");
+ ObjectHelper.notNull(clientBuilder, "httpClientBuilder");
ObjectHelper.notNull(clientConnectionManager, "httpConnectionManager");
- DefaultHttpClient answer = new DefaultHttpClient(clientConnectionManager, getClientParams());
- if (cookieStore != null) {
- answer.setCookieStore(cookieStore);
- }
+ // setup the cookieStore
+ clientBuilder.setDefaultCookieStore(cookieStore);
+ // setup the httpConnectionManager
+ clientBuilder.setConnectionManager(clientConnectionManager);
// configure http proxy from camelContext
if (ObjectHelper.isNotEmpty(getCamelContext().getProperty("http.proxyHost")) && ObjectHelper.isNotEmpty(getCamelContext().getProperty("http.proxyPort"))) {
@@ -143,27 +141,27 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
scheme = HttpHelper.isSecureConnection(getEndpointUri()) ? "https" : "http";
}
LOG.debug("CamelContext properties http.proxyHost, http.proxyPort, and http.proxyScheme detected. Using http proxy host: {} port: {} scheme: {}", new Object[]{host, port, scheme});
- try {
- component.registerPort(HttpHelper.isSecureConnection(scheme), component.getX509HostnameVerifier(), port, component.getSslContextParameters());
- } catch (Exception ex) {
- throw new RuntimeCamelException(ex);
- }
HttpHost proxy = new HttpHost(host, port, scheme);
- answer.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
+ clientBuilder.setProxy(proxy);
+ }
+
+ if (isAuthenticationPreemptive()) {
+ // setup the PreemptiveAuthInterceptor here
+ clientBuilder.addInterceptorFirst(new PreemptiveAuthInterceptor());
}
HttpClientConfigurer configurer = getHttpClientConfigurer();
if (configurer != null) {
- configurer.configureHttpClient(answer);
+ configurer.configureHttpClient(clientBuilder);
}
if (isBridgeEndpoint()) {
// need to use noop cookiestore as we do not want to keep cookies in memory
- answer.setCookieStore(new NoopCookieStore());
+ clientBuilder.setDefaultCookieStore(new NoopCookieStore());
}
- LOG.debug("Created HttpClient {}", answer);
- return answer;
+ LOG.debug("Setup the HttpClientBuilder {}", clientBuilder);
+ return clientBuilder.build();
}
public void connect(HttpConsumer consumer) throws Exception {
@@ -182,31 +180,39 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
public boolean isSingleton() {
return true;
}
+
+ @Override
+ protected void doStop() throws Exception {
+ if (component != null && component.getClientConnectionManager() != clientConnectionManager) {
+ // need to shutdown the ConnectionManager
+ clientConnectionManager.shutdown();
+ }
+ }
// Properties
//-------------------------------------------------------------------------
/**
- * Provide access to the client parameters used on new {@link HttpClient} instances
+ * Provide access to the http client request parameters used on new {@link RequestConfig} instances
* used by producers or consumers of this endpoint.
*/
- public HttpParams getClientParams() {
- return clientParams;
+ public HttpClientBuilder getClientBuilder() {
+ return clientBuilder;
}
/**
- * Provide access to the client parameters used on new {@link HttpClient} instances
+ * Provide access to the http client request parameters used on new {@link RequestConfig} instances
* used by producers or consumers of this endpoint.
*/
- public void setClientParams(HttpParams clientParams) {
- this.clientParams = clientParams;
+ public void setClientBuilder(HttpClientBuilder clientBuilder) {
+ this.clientBuilder = clientBuilder;
}
public HttpClientConfigurer getHttpClientConfigurer() {
return httpClientConfigurer;
}
-
+
public HttpContext getHttpContext() {
return httpContext;
}
@@ -272,11 +278,11 @@ public class HttpEndpoint extends DefaultPollingEndpoint implements HeaderFilter
this.httpUri = httpUri;
}
- public ClientConnectionManager getClientConnectionManager() {
+ public HttpClientConnectionManager getClientConnectionManager() {
return clientConnectionManager;
}
- public void setClientConnectionManager(ClientConnectionManager clientConnectionManager) {
+ public void setClientConnectionManager(HttpClientConnectionManager clientConnectionManager) {
this.clientConnectionManager = clientConnectionManager;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
index e2b09d4..dbe578f 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
@@ -62,7 +62,7 @@ import org.apache.http.entity.InputStreamEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.params.CoreProtocolPNames;
+import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
@@ -88,11 +88,9 @@ public class HttpProducer extends DefaultProducer {
public void process(Exchange exchange) throws Exception {
- if (getEndpoint().isClearExpiredCookies()) {
- if (httpClient instanceof DefaultHttpClient) {
- boolean cleared = ((DefaultHttpClient) httpClient).getCookieStore().clearExpired(new Date());
- log.debug("Any expired cookies cleared: {}", cleared);
- }
+ if (getEndpoint().isClearExpiredCookies() && !getEndpoint().isBridgeEndpoint()) {
+ // create the cookies before the invocation
+ getEndpoint().getCookieStore().clearExpired(new Date());
}
// if we bridge endpoint then we need to skip matching headers with the HTTP_QUERY to avoid sending
@@ -109,15 +107,11 @@ public class HttpProducer extends DefaultProducer {
exchange.getIn().getHeaders().remove("host");
}
HttpRequestBase httpRequest = createMethod(exchange);
- if (getEndpoint().isAuthenticationPreemptive()) {
- Credentials creds = ((DefaultHttpClient) httpClient).getCredentialsProvider().getCredentials(AuthScope.ANY);
- httpRequest.addHeader(new BasicScheme().authenticate(creds, httpRequest));
- }
Message in = exchange.getIn();
String httpProtocolVersion = in.getHeader(Exchange.HTTP_PROTOCOL_VERSION, String.class);
if (httpProtocolVersion != null) {
// set the HTTP protocol version
- httpRequest.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpHelper.parserHttpVersion(httpProtocolVersion));
+ httpRequest.setProtocolVersion(HttpHelper.parserHttpVersion(httpProtocolVersion));
}
HeaderFilterStrategy strategy = getEndpoint().getHeaderFilterStrategy();
@@ -255,11 +249,15 @@ public class HttpProducer extends DefaultProducer {
* @throws IOException can be thrown
*/
protected HttpResponse executeMethod(HttpUriRequest httpRequest) throws IOException {
+ HttpContext localContext = new BasicHttpContext();
+ if (getEndpoint().isAuthenticationPreemptive()) {
+ BasicScheme basicAuth = new BasicScheme();
+ localContext.setAttribute("preemptive-auth", basicAuth);
+ }
if (httpContext != null) {
- return httpClient.execute(httpRequest, httpContext);
- } else {
- return httpClient.execute(httpRequest);
+ localContext = new BasicHttpContext(httpContext);
}
+ return httpClient.execute(httpRequest, localContext);
}
/**
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java
index c7d4b78..35d9234 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java
@@ -21,9 +21,8 @@ import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.NTCredentials;
import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.params.ConnRoutePNames;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.HttpClientBuilder;
/**
* Strategy for configuring the HttpClient with a proxy
@@ -52,8 +51,8 @@ public class ProxyHttpClientConfigurer implements HttpClientConfigurer {
this.ntHost = ntHost;
}
- public void configureHttpClient(HttpClient client) {
- client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, new HttpHost(host, port, scheme));
+ public void configureHttpClient(HttpClientBuilder clientBuilder) {
+ clientBuilder.setProxy(new HttpHost(host, port, scheme));
if (username != null && password != null) {
Credentials defaultcreds;
@@ -62,7 +61,9 @@ public class ProxyHttpClientConfigurer implements HttpClientConfigurer {
} else {
defaultcreds = new UsernamePasswordCredentials(username, password);
}
- ((DefaultHttpClient) client).getCredentialsProvider().setCredentials(AuthScope.ANY, defaultcreds);
+ BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(AuthScope.ANY, defaultcreds);
+ clientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java
index 82085b5..d2fb645 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java
@@ -29,7 +29,7 @@ import org.junit.Test;
public class AdviceAndInterceptHttp4IssueTest extends CamelTestSupport {
private String simpleProvider = "http4:fakeHTTPADDRESS.com:80?throwExceptionOnFailure=false";
- private String providerWithParameter = "http4:fakeHTTPADDRESS.com:80?throwExceptionOnFailure=false&httpClient.cookiePolicy=ignoreCookies";
+ private String providerWithParameter = "http4:fakeHTTPADDRESS.com:80?throwExceptionOnFailure=false&httpClient.cookieSpec=ignoreCookies";
private volatile boolean messageIntercepted;
@Test
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java
index f9576a8..5ca499c 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java
@@ -16,17 +16,22 @@
*/
package org.apache.camel.component.http4;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.component.http4.handler.AuthenticationValidationHandler;
+import org.apache.http.HttpRequestInterceptor;
+import org.apache.http.HttpResponseInterceptor;
import org.apache.http.HttpStatus;
import org.apache.http.localserver.LocalTestServer;
import org.apache.http.localserver.RequestBasicAuth;
import org.apache.http.localserver.ResponseBasicUnauthorized;
-import org.apache.http.protocol.BasicHttpProcessor;
+import org.apache.http.protocol.HttpProcessor;
+import org.apache.http.protocol.ImmutableHttpProcessor;
import org.apache.http.protocol.ResponseContent;
import org.junit.Test;
@@ -45,7 +50,6 @@ public class HttpAuthenticationTest extends BaseHttpTest {
public void process(Exchange exchange) throws Exception {
}
});
-
assertExchange(exchange);
}
@@ -82,13 +86,13 @@ public class HttpAuthenticationTest extends BaseHttpTest {
}
@Override
- protected BasicHttpProcessor getBasicHttpProcessor() {
- BasicHttpProcessor httpproc = new BasicHttpProcessor();
- httpproc.addInterceptor(new RequestBasicAuth());
-
- httpproc.addInterceptor(new ResponseContent());
- httpproc.addInterceptor(new ResponseBasicUnauthorized());
-
+ protected HttpProcessor getBasicHttpProcessor() {
+ List<HttpRequestInterceptor> requestInterceptors = new ArrayList<HttpRequestInterceptor>();
+ requestInterceptors.add(new RequestBasicAuth());
+ List<HttpResponseInterceptor> responseInterceptors = new ArrayList<HttpResponseInterceptor>();
+ responseInterceptors.add(new ResponseContent());
+ responseInterceptors.add(new ResponseBasicUnauthorized());
+ ImmutableHttpProcessor httpproc = new ImmutableHttpProcessor(requestInterceptors, responseInterceptors);
return httpproc;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java
index 4d52668..2feab44 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java
@@ -19,7 +19,9 @@ package org.apache.camel.component.http4;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
@@ -39,9 +41,11 @@ import org.apache.http.HttpResponseInterceptor;
import org.apache.http.HttpStatus;
import org.apache.http.entity.HttpEntityWrapper;
import org.apache.http.localserver.LocalTestServer;
+import org.apache.http.localserver.ResponseBasicUnauthorized;
import org.apache.http.message.BasicHeader;
-import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HttpContext;
+import org.apache.http.protocol.HttpProcessor;
+import org.apache.http.protocol.ImmutableHttpProcessor;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
@@ -74,12 +78,13 @@ public class HttpCompressionTest extends BaseHttpTest {
}
@Override
- protected BasicHttpProcessor getBasicHttpProcessor() {
- BasicHttpProcessor httpproc = new BasicHttpProcessor();
- httpproc.addInterceptor(new RequestDecompressingInterceptor());
-
- httpproc.addInterceptor(new ResponseCompressingInterceptor());
-
+ protected HttpProcessor getBasicHttpProcessor() {
+ List<HttpRequestInterceptor> requestInterceptors = new ArrayList<HttpRequestInterceptor>();
+ requestInterceptors.add(new RequestDecompressingInterceptor());
+ List<HttpResponseInterceptor> responseInterceptors = new ArrayList<HttpResponseInterceptor>();
+ responseInterceptors.add(new ResponseCompressingInterceptor());
+ responseInterceptors.add(new ResponseBasicUnauthorized());
+ ImmutableHttpProcessor httpproc = new ImmutableHttpProcessor(requestInterceptors, responseInterceptors);
return httpproc;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java
index 2c42a84..601e89b 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java
@@ -18,7 +18,6 @@
package org.apache.camel.component.http4;
import java.io.IOException;
-import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java
index b92f313..1d7a449 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java
@@ -17,7 +17,9 @@
package org.apache.camel.component.http4;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.camel.Exchange;
@@ -39,10 +41,11 @@ import org.apache.http.HttpStatus;
import org.apache.http.ProtocolException;
import org.apache.http.auth.AUTH;
import org.apache.http.client.HttpClient;
-import org.apache.http.conn.params.ConnRoutePNames;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.localserver.LocalTestServer;
-import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HttpContext;
+import org.apache.http.protocol.ImmutableHttpProcessor;
import org.apache.http.protocol.ResponseContent;
import org.junit.After;
import org.junit.Before;
@@ -62,11 +65,13 @@ public class HttpProxyServerTest extends BaseHttpTest {
@Before
public void setUp() throws Exception {
super.setUp();
-
- BasicHttpProcessor httpproc = new BasicHttpProcessor();
- httpproc.addInterceptor(new RequestProxyBasicAuth());
- httpproc.addInterceptor(new ResponseContent());
- httpproc.addInterceptor(new ResponseProxyBasicUnauthorized());
+
+ List<HttpRequestInterceptor> requestInterceptors = new ArrayList<HttpRequestInterceptor>();
+ requestInterceptors.add(new RequestProxyBasicAuth());
+ List<HttpResponseInterceptor> responseInterceptors = new ArrayList<HttpResponseInterceptor>();
+ responseInterceptors.add(new ResponseContent());
+ responseInterceptors.add(new ResponseProxyBasicUnauthorized());
+ ImmutableHttpProcessor httpproc = new ImmutableHttpProcessor(requestInterceptors, responseInterceptors);
proxy = new LocalTestServer(httpproc, null);
proxy.start();
@@ -86,16 +91,7 @@ public class HttpProxyServerTest extends BaseHttpTest {
public void testDifferentHttpProxyConfigured() throws Exception {
HttpEndpoint http1 = context.getEndpoint("http4://www.google.com?proxyAuthHost=myproxy&proxyAuthPort=1234", HttpEndpoint.class);
HttpEndpoint http2 = context.getEndpoint("http4://www.google.com?test=parameter&proxyAuthHost=myotherproxy&proxyAuthPort=2345", HttpEndpoint.class);
-
- HttpClient client1 = http1.createHttpClient();
- HttpHost proxy1 = (HttpHost)client1.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY);
- assertEquals("myproxy", proxy1.getHostName());
- assertEquals(1234, proxy1.getPort());
-
- HttpClient client2 = http2.createHttpClient();
- HttpHost proxy2 = (HttpHost)client2.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY);
- assertEquals("myotherproxy", proxy2.getHostName());
- assertEquals(2345, proxy2.getPort());
+ // HttpClientBuilder doesn't support get the configuration here
//As the endpointUri is recreated, so the parameter could be in different place, so we use the URISupport.normalizeUri
assertEquals("Get a wrong endpoint uri of http1", "http4://www.google.com?proxyAuthHost=myproxy&proxyAuthPort=1234", URISupport.normalizeUri(http1.getEndpointUri()));
@@ -104,25 +100,6 @@ public class HttpProxyServerTest extends BaseHttpTest {
assertEquals("Should get the same EndpointKey", http1.getEndpointKey(), http2.getEndpointKey());
}
- @Test
- public void testhttpGetProxyScheme() throws Exception {
- context.getProperties().put("http.proxyHost", "myProxy");
- context.getProperties().put("http.proxyPort", "1234");
- context.getProperties().put("http.proxyScheme", "http");
- try {
- HttpEndpoint http1 = context.getEndpoint("https4://www.google.com", HttpEndpoint.class);
-
- HttpClient client1 = http1.createHttpClient();
- HttpHost proxy1 = (HttpHost)client1.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY);
- assertEquals("myProxy", proxy1.getHostName());
- assertEquals(1234, proxy1.getPort());
- assertEquals("http", proxy1.getSchemeName());
- } finally {
- context.getProperties().remove("http.proxyHost");
- context.getProperties().remove("http.proxyPort");
- context.getProperties().remove("http.proxyScheme");
- }
- }
@Test
public void httpGetWithProxyAndWithoutUser() throws Exception {
@@ -217,7 +194,7 @@ public class HttpProxyServerTest extends BaseHttpTest {
private int getProxyPort() {
return proxy.getServiceAddress().getPort();
}
-
+
class RequestProxyBasicAuth implements HttpRequestInterceptor {
public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException {
String auth = null;
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
index 5c2a9b5..1251e13 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
@@ -40,8 +40,8 @@ public class HttpRedirectTest extends BaseHttpTest {
localServer.register("/test", new RedirectHandler(HttpStatus.SC_MOVED_PERMANENTLY));
String uri = "http4://" + getHostName() + ":" + getPort()
- + "/test?httpClient.handleRedirects=false&httpClient.soTimeout=60000&httpClient.connectionTimeout=60000"
- + "&httpClient.staleCheckingEnabled=false";
+ + "/test?httpClient.redirectsEnabled=false&httpClient.socketTimeout=60000&httpClient.connectTimeout=60000"
+ + "&httpClient.staleConnectionCheckEnabled=false";
Exchange out = template.request(uri, new Processor() {
public void process(Exchange exchange) throws Exception {
// no data
@@ -62,8 +62,8 @@ public class HttpRedirectTest extends BaseHttpTest {
localServer.register("/someplaceelse", new BasicValidationHandler("GET", null, null, "Bye World"));
String uri = "http4://" + getHostName() + ":" + getPort()
- + "/test?httpClient.soTimeout=60000&httpClient.connectionTimeout=60000"
- + "&httpClient.staleCheckingEnabled=false";
+ + "/test?httpClient.socketTimeout=60000&httpClient.connectTimeout=60000"
+ + "&httpClient.staleConnectionCheckEnabled=false";
Exchange out = template.request(uri, new Processor() {
public void process(Exchange exchange) throws Exception {
// no data
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
index 2baaa24..10781f1 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.http4;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.junit.Test;
@@ -94,7 +94,7 @@ public class HttpReferenceParameterTest extends CamelTestSupport {
private static class TestClientConfigurer implements HttpClientConfigurer {
- public void configureHttpClient(HttpClient client) {
+ public void configureHttpClient(HttpClientBuilder clientBuilder) {
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java
index a315409..f2b17b0 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java
@@ -30,7 +30,7 @@ public class HttpSOTimeoutTest extends BaseHttpTest {
@Test
public void httpGet() throws Exception {
- Exchange exchange = template.request("http4://" + getHostName() + ":" + getPort() + "?httpClient.soTimeout=5000", new Processor() {
+ Exchange exchange = template.request("http4://" + getHostName() + ":" + getPort() + "?httpClient.SocketTimeout=5000", new Processor() {
public void process(Exchange exchange) throws Exception {
}
});
@@ -40,7 +40,7 @@ public class HttpSOTimeoutTest extends BaseHttpTest {
@Test
public void httpGetShouldThrowASocketTimeoutException() throws Exception {
- Exchange reply = template.request("http4://" + getHostName() + ":" + getPort() + "?httpClient.soTimeout=1000", new Processor() {
+ Exchange reply = template.request("http4://" + getHostName() + ":" + getPort() + "?httpClient.SocketTimeout=1000", new Processor() {
public void process(Exchange exchange) throws Exception {
}
});
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpServerTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpServerTestSupport.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpServerTestSupport.java
index aaf08df..4cec5d1 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpServerTestSupport.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpServerTestSupport.java
@@ -22,8 +22,8 @@ import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.HttpResponseFactory;
import org.apache.http.localserver.LocalTestServer;
-import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HttpExpectationVerifier;
+import org.apache.http.protocol.HttpProcessor;
import org.junit.After;
import org.junit.Before;
@@ -68,9 +68,9 @@ public abstract class HttpServerTestSupport extends CamelTestSupport {
* Returns the org.apache.http.protocol.BasicHttpProcessor which should be
* used by the server.
*
- * @return basicHttpProcessor
+ * @return HttpProcessor
*/
- protected BasicHttpProcessor getBasicHttpProcessor() {
+ protected HttpProcessor getBasicHttpProcessor() {
return null;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java
index 4f5d791..45c27de 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java
@@ -36,7 +36,6 @@ public class HttpWithHttpUriHeaderTest extends BaseHttpTest {
exchange.getIn().setHeader(Exchange.HTTP_URI, "http4://" + getHostName() + ":" + getPort() + "/");
}
});
-
assertExchange(exchange);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java
index 1648177..abe552d 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java
@@ -16,14 +16,21 @@
*/
package org.apache.camel.component.http4;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.http4.handler.AuthenticationValidationHandler;
import org.apache.camel.impl.JndiRegistry;
+import org.apache.http.HttpRequestInterceptor;
+import org.apache.http.HttpResponseInterceptor;
import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
import org.apache.http.localserver.RequestBasicAuth;
import org.apache.http.localserver.ResponseBasicUnauthorized;
-import org.apache.http.protocol.BasicHttpProcessor;
+
+import org.apache.http.protocol.HttpProcessor;
+import org.apache.http.protocol.ImmutableHttpProcessor;
import org.apache.http.protocol.ResponseContent;
import org.junit.Test;
@@ -57,13 +64,14 @@ public class HttpsAuthenticationTest extends BaseHttpsTest {
}
@Override
- protected BasicHttpProcessor getBasicHttpProcessor() {
- BasicHttpProcessor httpproc = new BasicHttpProcessor();
- httpproc.addInterceptor(new RequestBasicAuth());
-
- httpproc.addInterceptor(new ResponseContent());
- httpproc.addInterceptor(new ResponseBasicUnauthorized());
-
+ protected HttpProcessor getBasicHttpProcessor() {
+ List<HttpRequestInterceptor> requestInterceptors = new ArrayList<HttpRequestInterceptor>();
+ requestInterceptors.add(new RequestBasicAuth());
+ List<HttpResponseInterceptor> responseInterceptors = new ArrayList<HttpResponseInterceptor>();
+ responseInterceptors.add(new ResponseContent());
+ responseInterceptors.add(new ResponseBasicUnauthorized());
+ ImmutableHttpProcessor httpproc = new ImmutableHttpProcessor(requestInterceptors, responseInterceptors);
+
return httpproc;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java
index 43c7a24..c98ef31 100644
--- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java
+++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java
@@ -21,8 +21,10 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.util.jsse.SSLContextParameters;
import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
+import org.junit.Ignore;
import org.junit.Test;
+@Ignore("Now we support to set sslContextParameters on different endpoints")
public class HttpsTwoDifferentSslContextParametersGetTest extends BaseHttpsTest {
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/tests/camel-itest/src/test/java/org/apache/camel/itest/http/Http4RouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/http/Http4RouteTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/http/Http4RouteTest.java
index c4160a9..e6d35a4 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/http/Http4RouteTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/http/Http4RouteTest.java
@@ -30,7 +30,7 @@ public class Http4RouteTest extends CamelTestSupport {
@Test
public void sendHttpGetRequestTest() {
String response = template.requestBody("http4://localhost:" + port
- + "/test?aa=bb&httpClient.soTimeout=10000&httpClient.connectionTimeout=10000"
+ + "/test?aa=bb&httpClient.socketTimeout=10000&httpClient.connectTimeout=10000"
+ "&bridgeEndpoint=true&throwExceptionOnFailure=false" , null, String.class);
assertEquals("aa=bb", response);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4EndpointTest-context.xml
----------------------------------------------------------------------
diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4EndpointTest-context.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4EndpointTest-context.xml
index f9abedd..66bce44 100644
--- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4EndpointTest-context.xml
+++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4EndpointTest-context.xml
@@ -28,38 +28,16 @@
<bean id="httpEndpoint" class="org.apache.camel.component.http4.HttpEndpoint">
<property name="httpUri" value="http://127.0.0.1:${HttpTestServer.Port}/"/>
- <property name="clientParams" ref="clientParams"/>
- <property name="clientConnectionManager" ref="clientConnectionManager"/>
+ <property name="clientBuilder" ref="clientBuilder"/>
+ <property name="clientConnectionManager" ref="myManager"/>
</bean>
-
- <bean id="clientParams" class="org.apache.http.params.BasicHttpParams" />
-
- <bean id="clientConnectionManager" class="org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager">
- <constructor-arg ref="clientParams"/>
- <constructor-arg ref="schemeRegistry"/>
- </bean>
-
- <bean id="plainSocketFactory" class="org.apache.http.conn.scheme.PlainSocketFactory" factory-method="getSocketFactory" />
- <bean id="http" class="org.apache.http.conn.scheme.Scheme">
- <constructor-arg value="http" />
- <constructor-arg>
- <bean class="org.apache.http.conn.scheme.PlainSocketFactory" factory-method="getSocketFactory" />
- </constructor-arg>
- <constructor-arg value="80" />
- </bean>
+ <bean id="myManager" class="org.apache.http.impl.conn.PoolingHttpClientConnectionManager"/>
+
+ <!-- You can set the client configuration by setting up the builder class -->
+ <bean id="clientBuilder" class="org.apache.http.impl.client.HttpClientBuilder" />
- <bean id="schemeRegistry" class="org.apache.http.conn.scheme.SchemeRegistry" />
- <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
- <property name="targetObject" ref="schemeRegistry"/>
- <property name="targetMethod" value="register"/>
- <property name="arguments">
- <list>
- <ref bean="http"/>
- </list>
- </property>
- </bean>
<!-- END SNIPPET: e1 -->
<!-- START SNIPPET: e2 -->
http://git-wip-us.apache.org/repos/asf/camel/blob/7e65a14d/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4MaxConnectionPerHostTest-context.xml
----------------------------------------------------------------------
diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4MaxConnectionPerHostTest-context.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4MaxConnectionPerHostTest-context.xml
index e2e97a6..1287de6 100644
--- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4MaxConnectionPerHostTest-context.xml
+++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/http/Http4MaxConnectionPerHostTest-context.xml
@@ -27,39 +27,9 @@
<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent"/>
<bean id="httpComponent" class="org.apache.camel.component.http4.HttpComponent">
<property name="camelContext" ref="camel"/>
- <property name="clientConnectionManager" ref="clientConnectionManager"/>
<property name="connectionsPerRoute" value="5" />
</bean>
- <bean id="clientConnectionManager" class="org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager">
- <constructor-arg ref="clientParams"/>
- <constructor-arg ref="schemeRegistry"/>
- </bean>
-
- <bean id="clientParams" class="org.apache.http.params.BasicHttpParams" />
-
- <bean id="plainSocketFactory" class="org.apache.http.conn.scheme.PlainSocketFactory" factory-method="getSocketFactory" />
-
- <bean id="http" class="org.apache.http.conn.scheme.Scheme">
- <constructor-arg value="http" />
- <constructor-arg>
- <bean class="org.apache.http.conn.scheme.PlainSocketFactory" factory-method="getSocketFactory" />
- </constructor-arg>
- <constructor-arg value="80" />
- </bean>
-
- <bean id="schemeRegistry" class="org.apache.http.conn.scheme.SchemeRegistry" />
-
- <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
- <property name="targetObject" ref="schemeRegistry"/>
- <property name="targetMethod" value="register"/>
- <property name="arguments">
- <list>
- <ref bean="http"/>
- </list>
- </property>
- </bean>
-
<!-- END SNIPPET: e1 -->
<!-- START SNIPPET: e2 -->