Author: ningjiang
Date: Tue Jan 29 12:11:22 2013
New Revision: 1439848
URL: http://svn.apache.org/viewvc?rev=1439848&view=rev
Log:
CAMEL-6017 supported to configure the proxy of jetty client by using URI option
or CamelContext properties
Modified:
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHttpClientOptionsTest.java
Modified:
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java?rev=1439848&r1=1439847&r2=1439848&view=diff
==============================================================================
---
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
(original)
+++
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
Tue Jan 29 12:11:22 2013
@@ -150,6 +150,9 @@ public class JettyHttpComponent extends
UrlRewrite urlRewrite = resolveAndRemoveReferenceParameter(parameters,
"urlRewrite", UrlRewrite.class);
SSLContextParameters sslContextParameters =
resolveAndRemoveReferenceParameter(parameters, "sslContextParametersRef",
SSLContextParameters.class);
SSLContextParameters ssl = sslContextParameters != null ?
sslContextParameters : this.sslContextParameters;
+ String proxyHost = getAndRemoveParameter(parameters, "proxyHost",
String.class);
+ Integer proxyPort = getAndRemoveParameter(parameters, "proxyPort",
Integer.class);
+
// extract httpClient. parameters
Map<String, Object> httpClientParameters =
IntrospectionSupport.extractProperties(parameters, "httpClient.");
@@ -165,12 +168,18 @@ public class JettyHttpComponent extends
} else {
setEndpointHeaderFilterStrategy(endpoint);
}
+ if (proxyHost != null) {
+ endpoint.setProxyHost(proxyHost);
+ endpoint.setProxyPort(proxyPort);
+ }
if (urlRewrite != null) {
// let CamelContext deal with the lifecycle of the url rewrite
// this ensures its being shutdown when Camel shutdown etc.
getCamelContext().addService(urlRewrite);
endpoint.setUrlRewrite(urlRewrite);
}
+ // setup the proxy host and proxy port
+
if (httpClientParameters != null && !httpClientParameters.isEmpty()) {
endpoint.setHttpClientParameters(httpClientParameters);
@@ -616,23 +625,33 @@ public class JettyHttpComponent extends
* Creates a new {@link HttpClient} and configures its proxy/thread pool
and SSL based on this
* component settings.
*
+ * @Param endpoint the instance of JettyHttpEndpoint
* @param minThreads optional minimum number of threads in client thread
pool
* @param maxThreads optional maximum number of threads in client thread
pool
* @param ssl option SSL parameters
*/
- public static CamelHttpClient createHttpClient(Integer minThreads, Integer
maxThreads, SSLContextParameters ssl) throws Exception {
+ public static CamelHttpClient createHttpClient(JettyHttpEndpoint endpoint,
Integer minThreads, Integer maxThreads, SSLContextParameters ssl) throws
Exception {
CamelHttpClient httpClient = new CamelHttpClient();
httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
+
+ CamelContext context = endpoint.getCamelContext();
- if (System.getProperty("http.proxyHost") != null &&
System.getProperty("http.proxyPort") != null) {
- String host = System.getProperty("http.proxyHost");
- int port = Integer.parseInt(System.getProperty("http.proxyPort"));
- if (LOG.isDebugEnabled()) {
- LOG.debug("Java System Property http.proxyHost and
http.proxyPort detected. Using http proxy host: {} port: {}", host, port);
- }
+ if (context != null
+ && ObjectHelper.isNotEmpty(context.getProperty("http.proxyHost"))
+ && ObjectHelper.isNotEmpty(context.getProperty("http.proxyPort")))
{
+ String host = context.getProperty("http.proxyHost");
+ int port = Integer.parseInt(context.getProperty("http.proxyPort"));
+ LOG.debug("CamelContext properties http.proxyHost and
http.proxyPort detected. Using http proxy host: {} port: {}", host, port);
httpClient.setProxy(new Address(host, port));
}
+ if (ObjectHelper.isNotEmpty(endpoint.getProxyHost()) &&
endpoint.getProxyPort() > 0) {
+ String host = endpoint.getProxyHost();
+ int port = endpoint.getProxyPort();
+ LOG.debug("proxyHost and proxyPort options detected. Using http
proxy host: {} port: {}", host, port);
+ httpClient.setProxy(new Address(host, port));
+ }
+
// must have both min and max
if (minThreads != null || maxThreads != null) {
Modified:
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java?rev=1439848&r1=1439847&r2=1439848&view=diff
==============================================================================
---
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
(original)
+++
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
Tue Jan 29 12:11:22 2013
@@ -54,6 +54,7 @@ public class JettyHttpEndpoint extends H
private Boolean useContinuation;
private SSLContextParameters sslContextParameters;
private Map<String, Object> httpClientParameters;
+
public JettyHttpEndpoint(JettyHttpComponent component, String uri, URI
httpURL) throws URISyntaxException {
super(uri, component, httpURL);
@@ -76,7 +77,7 @@ public class JettyHttpEndpoint extends H
// thread pool min/max from endpoint take precedence over from
component
Integer min = httpClientMinThreads != null ? httpClientMinThreads
: getComponent().getHttpClientMinThreads();
Integer max = httpClientMaxThreads != null ? httpClientMaxThreads
: getComponent().getHttpClientMaxThreads();
- HttpClient httpClient = JettyHttpComponent.createHttpClient(min,
max, sslContextParameters);
+ HttpClient httpClient = JettyHttpComponent.createHttpClient(this,
min, max, sslContextParameters);
// set optional http client parameters
if (httpClientParameters != null) {
Modified:
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHttpClientOptionsTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHttpClientOptionsTest.java?rev=1439848&r1=1439847&r2=1439848&view=diff
==============================================================================
---
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHttpClientOptionsTest.java
(original)
+++
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHttpClientOptionsTest.java
Tue Jan 29 12:11:22 2013
@@ -38,6 +38,26 @@ public class JettyHttpClientOptionsTest
Object out =
template.requestBody("http://localhost:{{port}}/myapp/myservice", "Hello
World");
assertEquals("Bye World",
context.getTypeConverter().convertTo(String.class, out));
}
+
+ @Test
+ public void testProxySettingOfJettyHttpClient() throws Exception {
+ // setup the Proxy setting through the URI
+ HttpEndpoint jettyEndpoint =
context.getEndpoint("jetty://http://localhost:{{port}}/proxy/setting?proxyHost=192.168.0.1&proxyPort=9090",
HttpEndpoint.class);
+ assertNotNull("Jetty endpoint should not be null ", jettyEndpoint);
+ JettyHttpProducer producer =
(JettyHttpProducer)jettyEndpoint.createProducer();
+ assertEquals("Get the wrong http proxy host parameter", "192.168.0.1",
producer.getClient().getProxy().getHost());
+ assertEquals("Get the wrong http proxy port paramerter", 9090,
producer.getClient().getProxy().getPort());
+
+ // setup the context properties
+ context.getProperties().put("http.proxyHost", "192.168.0.2");
+ context.getProperties().put("http.proxyPort", "8080");
+ jettyEndpoint =
context.getEndpoint("jetty://http://localhost:{{port}}/proxy2/setting",
HttpEndpoint.class);
+ producer = (JettyHttpProducer)jettyEndpoint.createProducer();
+ assertEquals("Get the wrong http proxy host parameter", "192.168.0.2",
producer.getClient().getProxy().getHost());
+ assertEquals("Get the wrong http proxy port paramerter", 8080,
producer.getClient().getProxy().getPort());
+ context.getProperties().clear();
+
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {