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