You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2013/04/22 11:20:34 UTC

Re: svn commit: r1469718 - in /camel/trunk/components/camel-http/src: main/java/org/apache/camel/component/http/HttpComponent.java test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java

Hi Willem

Does this commit break the unit test in camel-jetty for you?

We have this NPE on trunk now. And it looks like its related to
getHttpConnectionManager.

Can you take a look?



Running org.apache.camel.component.jetty.MultiThreadedHttpGetTest
Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 9.196
sec <<< FAILURE!
testHttpGetWithoutConversion(org.apache.camel.component.jetty.MultiThreadedHttpGetTest)
 Time elapsed: 3.582 sec  <<< ERROR!
java.lang.NullPointerException: null
at org.apache.camel.component.jetty.MultiThreadedHttpGetTest.testHttpGetWithoutConversion(MultiThreadedHttpGetTest.java:52)

On Fri, Apr 19, 2013 at 9:22 AM,  <ni...@apache.org> wrote:
> Author: ningjiang
> Date: Fri Apr 19 07:22:53 2013
> New Revision: 1469718
>
> URL: http://svn.apache.org/r1469718
> Log:
> CAMEL-6296 Support httpConnectionManager.* parameters on Camel-Http
>
> Added:
>     camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java
> Modified:
>     camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.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=1469718&r1=1469717&r2=1469718&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 Fri Apr 19 07:22:53 2013
> @@ -33,6 +33,7 @@ import org.apache.camel.util.URISupport;
>  import org.apache.commons.httpclient.HttpConnectionManager;
>  import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
>  import org.apache.commons.httpclient.params.HttpClientParams;
> +import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
>
>  /**
>   * Defines the <a href="http://camel.apache.org/http.html">HTTP
> @@ -42,7 +43,7 @@ import org.apache.commons.httpclient.par
>   */
>  public class HttpComponent extends HeaderFilterStrategyComponent {
>      protected HttpClientConfigurer httpClientConfigurer;
> -    protected HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
> +    protected HttpConnectionManager httpConnectionManager;
>      protected HttpBinding httpBinding;
>      protected HttpConfiguration httpConfiguration;
>
> @@ -217,14 +218,28 @@ public class HttpComponent extends Heade
>          IntrospectionSupport.setProperties(clientParams, parameters, "httpClient.");
>          // validate that we could resolve all httpClient. parameters as this component is lenient
>          validateParameters(uri, parameters, "httpClient.");
> -
> +        // http client can be configured from URI options
> +        HttpConnectionManagerParams connectionManagerParams = new HttpConnectionManagerParams();
> +        // setup the httpConnectionManagerParams
> +        IntrospectionSupport.setProperties(connectionManagerParams, parameters, "httpConnectionManager.");
> +        validateParameters(uri, parameters, "httpConnectionManager.");
> +        // make sure the component httpConnectionManager is take effect
> +        HttpConnectionManager thisHttpConnectionManager = httpConnectionManager;
> +        if (thisHttpConnectionManager == null) {
> +            // only set the params on the new created http connection manager
> +            thisHttpConnectionManager = new MultiThreadedHttpConnectionManager();
> +            thisHttpConnectionManager.setParams(connectionManagerParams);
> +        }
>          // create the configurer to use for this endpoint (authMethods contains the used methods created by the configurer)
>          final Set<AuthMethod> authMethods = new LinkedHashSet<AuthMethod>();
>          HttpClientConfigurer configurer = createHttpClientConfigurer(parameters, authMethods);
>          URI endpointUri = URISupport.createRemainingURI(new URI(addressUri), httpClientParameters);
>
>          // create the endpoint
> -        HttpEndpoint endpoint = new HttpEndpoint(endpointUri.toString(), this, clientParams, httpConnectionManager, configurer);
> +        HttpEndpoint endpoint = new HttpEndpoint(endpointUri.toString(), this, clientParams, thisHttpConnectionManager, configurer);
> +
> +        endpoint.getHttpConnectionManager().setParams(connectionManagerParams);
> +
>          if (headerFilterStrategy != null) {
>              endpoint.setHeaderFilterStrategy(headerFilterStrategy);
>          } else {
>
> Added: camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java?rev=1469718&view=auto
> ==============================================================================
> --- camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java (added)
> +++ camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java Fri Apr 19 07:22:53 2013
> @@ -0,0 +1,57 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.camel.component.http;
> +
> +import static org.apache.camel.component.http.HttpMethods.POST;
> +import org.apache.camel.Exchange;
> +import org.apache.camel.FailedToCreateRouteException;
> +import org.apache.camel.ResolveEndpointFailedException;
> +import org.apache.camel.builder.RouteBuilder;
> +import org.apache.camel.test.junit4.CamelTestSupport;
> +import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
> +import org.junit.Before;
> +import org.junit.Test;
> +
> +public class HttpConnectionManagerSettingTest extends CamelTestSupport {
> +
> +    @Before
> +    public void setUp() throws Exception {
> +        try {
> +            super.setUp();
> +            fail("Should have thrown ResolveEndpointFailedException");
> +        } catch (FailedToCreateRouteException e) {
> +            ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
> +            assertTrue(cause.getMessage().endsWith("Unknown parameters=[{xxx=true}]"));
> +        }
> +    }
> +
> +    @Test
> +    public void testHttpConnectionManagerSettingConfiguration() {
> +        HttpEndpoint endpoint = (HttpEndpoint)context.getEndpoint("http://www.google.com?httpConnectionManager.maxTotalConnections=300");
> +        HttpConnectionManagerParams params = endpoint.getHttpConnectionManager().getParams();
> +        assertEquals("Get the wrong parameter.", 300, params.getMaxTotalConnections());
> +    }
> +
> +    protected RouteBuilder createRouteBuilder() throws Exception {
> +        return new RouteBuilder() {
> +            public void configure() {
> +                from("direct:start").setHeader(Exchange.HTTP_METHOD, POST).to("http://www.google.com?httpConnectionManager.xxx=true");
> +            }
> +        };
> +    }
> +
> +}
>
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Re: svn commit: r1469718 - in /camel/trunk/components/camel-http/src: main/java/org/apache/camel/component/http/HttpComponent.javatest/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java

Posted by Willem jiang <wi...@gmail.com>.
Sorry, I just committed the fix.


--  
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem


Sent with Sparrow (http://www.sparrowmailapp.com/?sig)


On Monday, April 22, 2013 at 5:20 PM, Claus Ibsen wrote:

> Hi Willem
>  
> Does this commit break the unit test in camel-jetty for you?
>  
> We have this NPE on trunk now. And it looks like its related to
> getHttpConnectionManager.
>  
> Can you take a look?
>  
>  
>  
> Running org.apache.camel.component.jetty.MultiThreadedHttpGetTest
> Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 9.196
> sec <<< FAILURE!
> testHttpGetWithoutConversion(org.apache.camel.component.jetty.MultiThreadedHttpGetTest)
> Time elapsed: 3.582 sec <<< ERROR!
> java.lang.NullPointerException: null
> at org.apache.camel.component.jetty.MultiThreadedHttpGetTest.testHttpGetWithoutConversion(MultiThreadedHttpGetTest.java:52)
>  
> On Fri, Apr 19, 2013 at 9:22 AM, <ningjiang@apache.org (mailto:ningjiang@apache.org)> wrote:
> > Author: ningjiang
> > Date: Fri Apr 19 07:22:53 2013
> > New Revision: 1469718
> >  
> > URL: http://svn.apache.org/r1469718
> > Log:
> > CAMEL-6296 Support httpConnectionManager.* parameters on Camel-Http
> >  
> > Added:
> > camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java
> > Modified:
> > camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.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=1469718&r1=1469717&r2=1469718&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 Fri Apr 19 07:22:53 2013
> > @@ -33,6 +33,7 @@ import org.apache.camel.util.URISupport;
> > import org.apache.commons.httpclient.HttpConnectionManager;
> > import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
> > import org.apache.commons.httpclient.params.HttpClientParams;
> > +import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
> >  
> > /**
> > * Defines the <a href="http://camel.apache.org/http.html">HTTP
> > @@ -42,7 +43,7 @@ import org.apache.commons.httpclient.par
> > */
> > public class HttpComponent extends HeaderFilterStrategyComponent {
> > protected HttpClientConfigurer httpClientConfigurer;
> > - protected HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
> > + protected HttpConnectionManager httpConnectionManager;
> > protected HttpBinding httpBinding;
> > protected HttpConfiguration httpConfiguration;
> >  
> > @@ -217,14 +218,28 @@ public class HttpComponent extends Heade
> > IntrospectionSupport.setProperties(clientParams, parameters, "httpClient.");
> > // validate that we could resolve all httpClient. parameters as this component is lenient
> > validateParameters(uri, parameters, "httpClient.");
> > -
> > + // http client can be configured from URI options
> > + HttpConnectionManagerParams connectionManagerParams = new HttpConnectionManagerParams();
> > + // setup the httpConnectionManagerParams
> > + IntrospectionSupport.setProperties(connectionManagerParams, parameters, "httpConnectionManager.");
> > + validateParameters(uri, parameters, "httpConnectionManager.");
> > + // make sure the component httpConnectionManager is take effect
> > + HttpConnectionManager thisHttpConnectionManager = httpConnectionManager;
> > + if (thisHttpConnectionManager == null) {
> > + // only set the params on the new created http connection manager
> > + thisHttpConnectionManager = new MultiThreadedHttpConnectionManager();
> > + thisHttpConnectionManager.setParams(connectionManagerParams);
> > + }
> > // create the configurer to use for this endpoint (authMethods contains the used methods created by the configurer)
> > final Set<AuthMethod> authMethods = new LinkedHashSet<AuthMethod>();
> > HttpClientConfigurer configurer = createHttpClientConfigurer(parameters, authMethods);
> > URI endpointUri = URISupport.createRemainingURI(new URI(addressUri), httpClientParameters);
> >  
> > // create the endpoint
> > - HttpEndpoint endpoint = new HttpEndpoint(endpointUri.toString(), this, clientParams, httpConnectionManager, configurer);
> > + HttpEndpoint endpoint = new HttpEndpoint(endpointUri.toString(), this, clientParams, thisHttpConnectionManager, configurer);
> > +
> > + endpoint.getHttpConnectionManager().setParams(connectionManagerParams);
> > +
> > if (headerFilterStrategy != null) {
> > endpoint.setHeaderFilterStrategy(headerFilterStrategy);
> > } else {
> >  
> > Added: camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java
> > URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java?rev=1469718&view=auto
> > ==============================================================================
> > --- camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java (added)
> > +++ camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpConnectionManagerSettingTest.java Fri Apr 19 07:22:53 2013
> > @@ -0,0 +1,57 @@
> > +/**
> > + * Licensed to the Apache Software Foundation (ASF) under one or more
> > + * contributor license agreements. See the NOTICE file distributed with
> > + * this work for additional information regarding copyright ownership.
> > + * The ASF licenses this file to You under the Apache License, Version 2.0
> > + * (the "License"); you may not use this file except in compliance with
> > + * the License. You may obtain a copy of the License at
> > + *
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +package org.apache.camel.component.http;
> > +
> > +import static org.apache.camel.component.http.HttpMethods.POST;
> > +import org.apache.camel.Exchange;
> > +import org.apache.camel.FailedToCreateRouteException;
> > +import org.apache.camel.ResolveEndpointFailedException;
> > +import org.apache.camel.builder.RouteBuilder;
> > +import org.apache.camel.test.junit4.CamelTestSupport;
> > +import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
> > +import org.junit.Before;
> > +import org.junit.Test;
> > +
> > +public class HttpConnectionManagerSettingTest extends CamelTestSupport {
> > +
> > + @Before
> > + public void setUp() throws Exception {
> > + try {
> > + super.setUp();
> > + fail("Should have thrown ResolveEndpointFailedException");
> > + } catch (FailedToCreateRouteException e) {
> > + ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
> > + assertTrue(cause.getMessage().endsWith("Unknown parameters=[{xxx=true}]"));
> > + }
> > + }
> > +
> > + @Test
> > + public void testHttpConnectionManagerSettingConfiguration() {
> > + HttpEndpoint endpoint = (HttpEndpoint)context.getEndpoint("http://www.google.com?httpConnectionManager.maxTotalConnections=300");
> > + HttpConnectionManagerParams params = endpoint.getHttpConnectionManager().getParams();
> > + assertEquals("Get the wrong parameter.", 300, params.getMaxTotalConnections());
> > + }
> > +
> > + protected RouteBuilder createRouteBuilder() throws Exception {
> > + return new RouteBuilder() {
> > + public void configure() {
> > + from("direct:start").setHeader(Exchange.HTTP_METHOD, POST).to("http://www.google.com?httpConnectionManager.xxx=true");
> > + }
> > + };
> > + }
> > +
> > +}
> >  
>  
>  
>  
>  
>  
> --  
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Email: cibsen@redhat.com (mailto:cibsen@redhat.com)
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
>