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,  <[email protected]> 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: [email protected]
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to