You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/04/07 10:43:31 UTC

svn commit: r1310700 - in /camel/branches/camel-2.9.x: ./ components/camel-http4/src/main/java/org/apache/camel/component/http4/ components/camel-http4/src/test/java/org/apache/camel/component/http4/

Author: davsclaus
Date: Sat Apr  7 08:43:30 2012
New Revision: 1310700

URL: http://svn.apache.org/viewvc?rev=1310700&view=rev
Log:
CAMEL-4693: Added support for httpContext option. Thanks to Jeff Segal for the patch.

Modified:
    camel/branches/camel-2.9.x/   (props changed)
    camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
    camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
    camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
    camel/branches/camel-2.9.x/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1310695

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java?rev=1310700&r1=1310699&r2=1310700&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java (original)
+++ camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java Sat Apr  7 08:43:30 2012
@@ -45,6 +45,7 @@ import org.apache.http.params.BasicHttpP
 import org.apache.http.params.HttpConnectionParamBean;
 import org.apache.http.params.HttpParams;
 import org.apache.http.params.HttpProtocolParamBean;
+import org.apache.http.protocol.HttpContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,6 +61,7 @@ public class HttpComponent extends Heade
     protected HttpClientConfigurer httpClientConfigurer;
     protected ClientConnectionManager clientConnectionManager;
     protected HttpBinding httpBinding;
+    protected HttpContext httpContext;
     protected SSLContextParameters sslContextParameters;
     protected X509HostnameVerifier x509HostnameVerifier = new BrowserCompatHostnameVerifier();
 
@@ -172,12 +174,17 @@ public class HttpComponent extends Heade
         if (httpBinding == null) {
             httpBinding = resolveAndRemoveReferenceParameter(parameters, "httpBinding", HttpBinding.class);
         }
-        
+
         HttpClientConfigurer httpClientConfigurer = resolveAndRemoveReferenceParameter(parameters, "httpClientConfigurerRef", HttpClientConfigurer.class);
         if (httpClientConfigurer == null) {
             httpClientConfigurer = resolveAndRemoveReferenceParameter(parameters, "httpClientConfigurer", HttpClientConfigurer.class);
         }
-        
+
+        HttpContext httpContext = resolveAndRemoveReferenceParameter(parameters, "httpContextRef", HttpContext.class);
+        if (httpContext == null) {
+            httpContext = resolveAndRemoveReferenceParameter(parameters, "httpContext", HttpContext.class);
+        }
+
         X509HostnameVerifier x509HostnameVerifier = resolveAndRemoveReferenceParameter(parameters, "x509HostnameVerifier", X509HostnameVerifier.class);
         if (x509HostnameVerifier == null) {
             x509HostnameVerifier = this.x509HostnameVerifier;
@@ -227,6 +234,9 @@ public class HttpComponent extends Heade
         if (httpClientConfigurer != null) {
             endpoint.setHttpClientConfigurer(httpClientConfigurer);
         }
+        if (httpContext != null) {
+            endpoint.setHttpContext(httpContext);
+        }
         // register port on schema registry
         int port = getPort(httpUri);
         registerPort(secure, x509HostnameVerifier, port, sslContextParameters);

Modified: camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java?rev=1310700&r1=1310699&r2=1310700&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java (original)
+++ camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java Sat Apr  7 08:43:30 2012
@@ -33,6 +33,7 @@ import org.apache.http.conn.params.ConnR
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.params.BasicHttpParams;
 import org.apache.http.params.HttpParams;
+import org.apache.http.protocol.HttpContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,6 +47,7 @@ public class HttpEndpoint extends Defaul
     private static final transient Logger LOG = LoggerFactory.getLogger(HttpEndpoint.class);
     private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
     private HttpBinding binding;
+    private HttpContext httpContext;
     private HttpComponent component;
     private URI httpUri;
     private HttpParams clientParams;
@@ -184,6 +186,10 @@ public class HttpEndpoint extends Defaul
         return httpClientConfigurer;
     }
 
+    public HttpContext getHttpContext() {
+        return httpContext;
+    }
+
     /**
      * Register a custom configuration strategy for new {@link HttpClient} instances
      * created by producers or consumers such as to configure authentication mechanisms etc
@@ -205,22 +211,18 @@ public class HttpEndpoint extends Defaul
         this.binding = binding;
     }
     
-    /**
-     * Used from the IntrospectionSupport in HttpComponent.
-     * @param binding
-     */
     public void setHttpBinding(HttpBinding binding) {
         this.binding = binding;
     }
-    
-    /**
-     * Used from the IntrospectionSupport in HttpComponent.
-     * @param binding
-     */
+
     public void setHttpBindingRef(HttpBinding binding) {
         this.binding = binding;
     }
 
+    public void setHttpContext(HttpContext httpContext) {
+        this.httpContext = httpContext;
+    }
+
     public String getPath() {
         return httpUri.getPath();
     }

Modified: camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java?rev=1310700&r1=1310699&r2=1310700&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java (original)
+++ camel/branches/camel-2.9.x/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java Sat Apr  7 08:43:30 2012
@@ -56,6 +56,7 @@ import org.apache.http.entity.FileEntity
 import org.apache.http.entity.InputStreamEntity;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.params.CoreProtocolPNames;
+import org.apache.http.protocol.HttpContext;
 import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,12 +67,14 @@ import org.slf4j.LoggerFactory;
 public class HttpProducer extends DefaultProducer {
     private static final transient Logger LOG = LoggerFactory.getLogger(HttpProducer.class);
     private HttpClient httpClient;
+    private HttpContext httpContext;
     private boolean throwException;
     private boolean transferException;
 
     public HttpProducer(HttpEndpoint endpoint) {
         super(endpoint);
         this.httpClient = endpoint.getHttpClient();
+        this.httpContext = endpoint.getHttpContext();
         this.throwException = endpoint.isThrowExceptionOnFailure();
         this.transferException = endpoint.isTransferException();
     }
@@ -234,7 +237,11 @@ public class HttpProducer extends Defaul
      * @throws IOException can be thrown
      */
     protected HttpResponse executeMethod(HttpUriRequest httpRequest) throws IOException {
-        return httpClient.execute(httpRequest);
+        if (httpContext != null) {
+            return httpClient.execute(httpRequest, httpContext);
+        } else {
+            return httpClient.execute(httpRequest);
+        }
     }
 
     /**

Modified: camel/branches/camel-2.9.x/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java?rev=1310700&r1=1310699&r2=1310700&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java (original)
+++ camel/branches/camel-2.9.x/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java Sat Apr  7 08:43:30 2012
@@ -20,6 +20,8 @@ import org.apache.camel.builder.RouteBui
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.http.client.HttpClient;
+import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.HttpContext;
 import org.junit.Test;
 
 /**
@@ -29,19 +31,21 @@ import org.junit.Test;
  */
 public class HttpReferenceParameterTest extends CamelTestSupport {
 
-    private static final String TEST_URI_1 = "http4://localhost:8080?httpBindingRef=#customBinding&httpClientConfigurerRef=#customConfigurer";
-    private static final String TEST_URI_2 = "http4://localhost:8081?httpBindingRef=customBinding&httpClientConfigurerRef=customConfigurer";
+    private static final String TEST_URI_1 = "http4://localhost:8080?httpBindingRef=#customBinding&httpClientConfigurerRef=#customConfigurer&httpContext=#customContext";
+    private static final String TEST_URI_2 = "http4://localhost:8081?httpBindingRef=customBinding&httpClientConfigurerRef=customConfigurer&httpContext=customContext";
 
     private HttpEndpoint endpoint1;
     private HttpEndpoint endpoint2;
 
     private TestHttpBinding testBinding;
     private TestClientConfigurer testConfigurer;
+    private HttpContext testHttpContext;
 
     @Override
     public void setUp() throws Exception {
         this.testBinding = new TestHttpBinding();
         this.testConfigurer = new TestClientConfigurer();
+        this.testHttpContext = new BasicHttpContext();
         super.setUp();
         this.endpoint1 = context.getEndpoint(TEST_URI_1, HttpEndpoint.class);
         this.endpoint2 = context.getEndpoint(TEST_URI_2, HttpEndpoint.class);
@@ -59,11 +63,18 @@ public class HttpReferenceParameterTest 
         assertSame(testConfigurer, endpoint2.getHttpClientConfigurer());
     }
 
+    @Test
+    public void testHttpContextRef() {
+        assertSame(testHttpContext, endpoint1.getHttpContext());
+        assertSame(testHttpContext, endpoint2.getHttpContext());
+    }
+
     @Override
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry registry = super.createRegistry();
         registry.bind("customBinding", testBinding);
         registry.bind("customConfigurer", testConfigurer);
+        registry.bind("customContext", testHttpContext);
         return registry;
     }