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 2010/04/12 12:45:38 UTC

svn commit: r933186 - in /camel/trunk/components: camel-http/src/main/java/org/apache/camel/component/http/ camel-http/src/test/java/org/apache/camel/component/http/ camel-servlet/src/main/java/org/apache/camel/component/servlet/

Author: ningjiang
Date: Mon Apr 12 10:45:37 2010
New Revision: 933186

URL: http://svn.apache.org/viewvc?rev=933186&view=rev
Log:
CAMEL-2634 merged revision 925761 into camel-http

Modified:
    camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
    camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpClientConfigurerTest.java
    camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSelectMethodTest.java
    camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java

Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java?rev=933186&r1=933185&r2=933186&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java Mon Apr 12 10:45:37 2010
@@ -44,7 +44,7 @@ public class HttpComponent extends Heade
     /**
      * Connects the URL specified on the endpoint to the specified processor.
      *
-     * @param  consumer the consumer
+     * @param consumer the consumer
      * @throws Exception can be thrown
      */
     public void connect(HttpConsumer consumer) throws Exception {
@@ -53,30 +53,25 @@ public class HttpComponent extends Heade
     /**
      * Disconnects the URL specified on the endpoint from the specified processor.
      *
-     * @param  consumer the consumer
+     * @param consumer the consumer
      * @throws Exception can be thrown
      */
     public void disconnect(HttpConsumer consumer) throws Exception {
     }
 
     /** 
-     * Setting http binding and http client configurer according to the parameters
-     * Also setting the BasicAuthenticationHttpClientConfigurer if the username 
-     * and password option are not null.
+     * Creates the HttpClientConfigurer based on the given parameters
      * 
      * @param parameters the map of parameters 
+     * @return the configurer
      */
-    protected void configureParameters(Map<String, Object> parameters) {
-        // lookup http binding in registry if provided
-        if ( httpBinding == null ) {
-            httpBinding = resolveAndRemoveReferenceParameter(
-                    parameters, "httpBindingRef", HttpBinding.class);
-        }
-        
-        // lookup http client front configurer in the registry if provided
-        if ( httpClientConfigurer == null ) {
-            httpClientConfigurer = resolveAndRemoveReferenceParameter(
-                    parameters, "httpClientConfigurerRef", HttpClientConfigurer.class);
+    protected HttpClientConfigurer createHttpClientConfigurer(Map<String, Object> parameters) {
+        // prefer to use endpoint configured over component configured
+        HttpClientConfigurer configurer = resolveAndRemoveReferenceParameter(
+                parameters, "httpClientConfigurerRef", HttpClientConfigurer.class);
+        if (configurer == null) {
+            // fallback to component configured
+            configurer = getHttpClientConfigurer();
         }
         
         // check the user name and password for basic authentication
@@ -85,9 +80,9 @@ public class HttpComponent extends Heade
         String domain = getAndRemoveParameter(parameters, "domain", String.class);
         String host = getAndRemoveParameter(parameters, "host", String.class);
         if (username != null && password != null) {
-            httpClientConfigurer = CompositeHttpConfigurer.combineConfigurers(
-                httpClientConfigurer, 
-                new BasicAuthenticationHttpClientConfigurer(username, password, domain, host));
+            configurer = CompositeHttpConfigurer.combineConfigurers(
+                    configurer,
+                    new BasicAuthenticationHttpClientConfigurer(username, password, domain, host));
         }
         
         // check the proxy details for proxy configuration
@@ -99,33 +94,34 @@ public class HttpComponent extends Heade
             String proxyDomain = getAndRemoveParameter(parameters, "proxyDomain", String.class);
             String proxyNtHost = getAndRemoveParameter(parameters, "proxyNtHost", String.class);
             if (proxyUsername != null && proxyPassword != null) {
-                httpClientConfigurer = CompositeHttpConfigurer.combineConfigurers(
-                    httpClientConfigurer, new ProxyHttpClientConfigurer(proxyHost, proxyPort, proxyUsername, proxyPassword, proxyDomain, proxyNtHost));
+                configurer = CompositeHttpConfigurer.combineConfigurers(
+                        configurer, new ProxyHttpClientConfigurer(proxyHost, proxyPort, proxyUsername, proxyPassword, proxyDomain, proxyNtHost));
             } else {
-                httpClientConfigurer = CompositeHttpConfigurer.combineConfigurers(
-                    httpClientConfigurer, new ProxyHttpClientConfigurer(proxyHost, proxyPort));
+                configurer = CompositeHttpConfigurer.combineConfigurers(
+                        configurer, new ProxyHttpClientConfigurer(proxyHost, proxyPort));
             }
         }
-        
+
+        return configurer;
     }
     
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
 
+        // must extract well known parameters before we create the endpoint
+        HttpBinding binding = resolveAndRemoveReferenceParameter(parameters, "httpBindingRef", HttpBinding.class);
+        Boolean throwExceptionOnFailure = getAndRemoveParameter(parameters, "throwExceptionOnFailure", Boolean.class);
+        Boolean bridgeEndpoint = getAndRemoveParameter(parameters, "bridgeEndpoint", Boolean.class);
+        Boolean matchOnUriPrefix = getAndRemoveParameter(parameters, "matchOnUriPrefix", Boolean.class);
         // http client can be configured from URI options
         HttpClientParams clientParams = new HttpClientParams();
         IntrospectionSupport.setProperties(clientParams, parameters, "httpClient.");
         // validate that we could resolve all httpClient. parameters as this component is lenient
-        validateParameters(uri, parameters, "httpClient.");
-
-        configureParameters(parameters);
-
-        // should we use an exception for failed error codes?
-        Boolean throwExceptionOnFailure = getAndRemoveParameter(parameters, "throwExceptionOnFailure", Boolean.class);
-
-        Boolean bridgeEndpoint = getAndRemoveParameter(parameters, "bridgeEndpoint", Boolean.class);
+        validateParameters(uri, parameters, "httpClient.");       
+        
+        // create the configurer to use for this endpoint
+        HttpClientConfigurer configurer = createHttpClientConfigurer(parameters);
         
-        Boolean matchOnUriPrefix = Boolean.parseBoolean(getAndRemoveParameter(parameters, "matchOnUriPrefix", String.class));
         // restructure uri to be based on the parameters left as we dont want to include the Camel internal options
         URI httpUri = URISupport.createRemainingURI(new URI(uri), CastUtils.cast(parameters));
         uri = httpUri.toString();
@@ -140,11 +136,19 @@ public class HttpComponent extends Heade
             }
         }
 
-        HttpEndpoint endpoint = new HttpEndpoint(uri, this, httpUri, clientParams, httpConnectionManager, httpClientConfigurer);
-        if (httpBinding != null) {
-            endpoint.setBinding(httpBinding);
-        }
+        // create the endpoint
+        HttpEndpoint endpoint = new HttpEndpoint(uri, this, httpUri, clientParams, httpConnectionManager, configurer);
         setEndpointHeaderFilterStrategy(endpoint);
+
+        // prefer to use endpoint configured over component configured
+        if (binding == null) {
+            // fallback to component configured
+            binding = getHttpBinding();
+        }
+        if (binding != null) {
+            endpoint.setBinding(binding);
+        }
+        // should we use an exception for failed error codes?
         if (throwExceptionOnFailure != null) {
             endpoint.setThrowExceptionOnFailure(throwExceptionOnFailure);
         }
@@ -154,10 +158,12 @@ public class HttpComponent extends Heade
         if (matchOnUriPrefix != null) {
             endpoint.setMatchOnUriPrefix(matchOnUriPrefix);
         }
+
         setProperties(endpoint, parameters);
         return endpoint;
-    }    
    
+    }
+    
     @Override
     protected boolean useIntrospectionOnEndpoint() {
         return false;
@@ -186,5 +192,4 @@ public class HttpComponent extends Heade
     public void setHttpBinding(HttpBinding httpBinding) {
         this.httpBinding = httpBinding;
     }
-    
 }

Modified: camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpClientConfigurerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpClientConfigurerTest.java?rev=933186&r1=933185&r2=933186&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpClientConfigurerTest.java (original)
+++ camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpClientConfigurerTest.java Mon Apr 12 10:45:37 2010
@@ -18,36 +18,26 @@ package org.apache.camel.component.http;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
  * @version $Revision: 905992 $
  */
 public class HttpClientConfigurerTest extends CamelTestSupport {
-    protected String expectedText = "activemq";
+    private HttpClientConfigurer configurer;
     
     @Test
     public void testHttpClientConfigurer() throws Exception {
-        HttpClientConfigurer configurer = getMandatoryEndpoint("http://www.google.com/search", HttpEndpoint.class).getHttpClientConfigurer();
-
-        assertNotNull("Client configurer should not be null!", configurer);
-
+        HttpClientConfigurer gotConfigurer = getMandatoryEndpoint("http://www.google.com/search", HttpEndpoint.class).getHttpClientConfigurer();
+        assertSame(configurer, gotConfigurer);
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-
-                ProxyHttpClientConfigurer configurer = new ProxyHttpClientConfigurer(
-                        "proxyhost",
-                        80,
-                        "user",
-                        "password",
-                        null,
-                        null);
-
+                // add configurer to http component
+                configurer = new ProxyHttpClientConfigurer("proxyhost", 80, "user", "password", null, null);
                 getContext().getComponent("http", HttpComponent.class).setHttpClientConfigurer(configurer);
 
                 from("direct:start")

Modified: camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSelectMethodTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSelectMethodTest.java?rev=933186&r1=933185&r2=933186&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSelectMethodTest.java (original)
+++ camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSelectMethodTest.java Mon Apr 12 10:45:37 2010
@@ -33,8 +33,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testNoDataDefaultIsGet() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+        
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "GET", null);
 
@@ -51,8 +51,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testDataDefaultIsPost() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "POST", null);
 
@@ -69,8 +69,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testWithMethodPostInHeader() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "POST", null);
 
@@ -88,8 +88,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testWithMethodGetInHeader() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "GET", null);
 
@@ -107,8 +107,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testWithEndpointQuery() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com?q=Camel");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "GET", "q=Camel");
 
@@ -125,8 +125,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testWithQueryInHeader() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "GET", "q=Camel");
 
@@ -144,8 +144,8 @@ public class HttpProducerSelectMethodTes
 
     @Test
     public void testWithQueryInHeaderOverrideEndpoint() throws Exception {
-        HttpComponent component = new HttpComponent();
-        component.setCamelContext(context);
+        HttpComponent component = context.getComponent("http", HttpComponent.class);
+
         HttpEndpoint endpoiont = (HttpEndpoint) component.createEndpoint("http://www.google.com?q=Donkey");
         MyHttpProducer producer = new MyHttpProducer(endpoiont, "GET", "q=Camel");
 

Modified: camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java?rev=933186&r1=933185&r2=933186&view=diff
==============================================================================
--- camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java (original)
+++ camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java Mon Apr 12 10:45:37 2010
@@ -61,8 +61,9 @@ public class ServletComponent extends Ht
 
         HttpClientParams params = new HttpClientParams();
         IntrospectionSupport.setProperties(params, parameters, "httpClient.");
-        // configure regular parameters
-        configureParameters(parameters);
+        
+        // create the configurer to use for this endpoint
+        HttpClientConfigurer configurer = createHttpClientConfigurer(parameters);
 
         // must extract well known parameters before we create the endpoint
         HttpBinding binding = resolveAndRemoveReferenceParameter(parameters, "httpBindingRef", HttpBinding.class);
@@ -72,7 +73,7 @@ public class ServletComponent extends Ht
         URI httpUri = URISupport.createRemainingURI(new URI(UnsafeUriCharactersEncoder.encode(uri)), CastUtils.cast(parameters));
         uri = httpUri.toString();
 
-        ServletEndpoint endpoint = createServletEndpoint(uri, this, httpUri, params, getHttpConnectionManager(), httpClientConfigurer);
+        ServletEndpoint endpoint = createServletEndpoint(uri, this, httpUri, params, getHttpConnectionManager(), configurer);
         setEndpointHeaderFilterStrategy(endpoint);
 
         // prefer to use endpoint configured over component configured