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 {


Reply via email to