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