[
https://issues.apache.org/jira/browse/CAMEL-12116?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pascal Schumacher closed CAMEL-12116.
-------------------------------------
Resolution: Invalid
Assignee: Pascal Schumacher
This issue is invalid. I forgot to add the _#_ before the registry reference in
the URI.
> Camel-http(s)4: Exception when using httpClient query parameter
> ---------------------------------------------------------------
>
> Key: CAMEL-12116
> URL: https://issues.apache.org/jira/browse/CAMEL-12116
> Project: Camel
> Issue Type: Bug
> Components: camel-http4
> Affects Versions: 2.20.1
> Reporter: Pascal Schumacher
> Assignee: Pascal Schumacher
>
> According to
> https://github.com/apache/camel/blob/master/components/camel-http4/src/main/docs/http4-component.adoc
> it is possible to provided a custom HttpClient with the query parameter
> _httpClient _.
> When I try to use parameter the route can not be created because the
> httpClient does not see to be looked up in the registry:
> {noformat}
> org.apache.camel.FailedToCreateRouteException: Failed to create route route1
> at: >>> To[https4://localhost:8443?httpClient=allTrustingHttpClient] <<< in
> route: Route(route1)[[From[seda:in]] -> [To[https4://localhost:8443...
> because of Failed to resolve endpoint:
> https4://localhost:8443?httpClient=allTrustingHttpClient due to: Could not
> find a suitable setter for property: httpClient as there isn't a setter
> method with same type: java.lang.String nor type conversion possible: No type
> converter available to convert from type: java.lang.String to the required
> type: org.apache.http.client.HttpClient with value allTrustingHttpClient
> at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1298)
> at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:204)
> at
> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1148)
> at
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3727)
> at
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3441)
> at
> org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:208)
> at
> org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3249)
> at
> org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3245)
> at
> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3268)
> at
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3245)
> at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
> at
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3168)
> at
> org.apache.camel.test.junit4.CamelTestSupport.startCamelContext(CamelTestSupport.java:678)
> at
> org.apache.camel.test.junit4.CamelTestSupport.doSetUp(CamelTestSupport.java:361)
> at
> org.apache.camel.test.junit4.CamelTestSupport.setUp(CamelTestSupport.java:262)
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve
> endpoint: https4://localhost:8443?httpClient=allTrustingHttpClient due to:
> Could not find a suitable setter for property: httpClient as there isn't a
> setter method with same type: java.lang.String nor type conversion possible:
> No type converter available to convert from type: java.lang.String to the
> required type: org.apache.http.client.HttpClient with value
> allTrustingHttpClient
> at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:763)
> at
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80)
> at
> org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:219)
> at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:115)
> at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:121)
> at
> org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:62)
> at
> org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:56)
> at
> org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:549)
> at
> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:510)
> at
> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:226)
> at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1295)
> ... 42 more
> Caused by: java.lang.IllegalArgumentException: Could not find a suitable
> setter for property: httpClient as there isn't a setter method with same
> type: java.lang.String nor type conversion possible: No type converter
> available to convert from type: java.lang.String to the required type:
> org.apache.http.client.HttpClient with value allTrustingHttpClient
> at
> org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:614)
> at
> org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:645)
> at
> org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:497)
> at
> org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:507)
> at
> org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:254)
> at
> org.apache.camel.impl.DefaultComponent.setProperties(DefaultComponent.java:309)
> at
> org.apache.camel.impl.DefaultComponent.setProperties(DefaultComponent.java:297)
> at
> org.apache.camel.component.http4.HttpComponent.createEndpoint(HttpComponent.java:258)
> at
> org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:126)
> at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:716)
> ... 52 more
> {noformat}
> A test case to replicated this behavior:
> {code:java}
> import java.util.concurrent.CompletableFuture;
> import java.util.concurrent.TimeUnit;
> import javax.net.ssl.SSLContext;
> import org.apache.camel.Produce;
> import org.apache.camel.ProducerTemplate;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.impl.JndiRegistry;
> import org.apache.camel.test.junit4.CamelTestSupport;
> import org.apache.http.client.HttpClient;
> import org.apache.http.conn.ssl.NoopHostnameVerifier;
> import org.apache.http.impl.client.HttpClients;
> import org.apache.http.ssl.SSLContextBuilder;
> import org.junit.Test;
> public class Https4CustomHttpClientTest extends CamelTestSupport {
> private static final String IN_URI = "seda:in";
> @Produce(uri = "seda:in")
> private ProducerTemplate in;
> @Test
> public void test() throws Exception {
> CompletableFuture<Object> out = in.asyncRequestBody(IN_URI, "");
> out.get(10, TimeUnit.SECONDS);
> }
> @Override
> protected RouteBuilder createRouteBuilder() {
> return new RouteBuilder() {
> @Override
> public void configure() throws Exception {
>
> from(IN_URI).to("https4://localhost:8443?httpClient=allTrustingHttpClient");
> }
> };
> }
> @Override
> protected JndiRegistry createRegistry() throws Exception {
> JndiRegistry jndi = super.createRegistry();
> jndi.bind("allTrustingHttpClient", createAllTrustingHttpClient());
> return jndi;
> }
> public static HttpClient createAllTrustingHttpClient() throws Exception {
> SSLContext sslContext = new
> SSLContextBuilder().loadTrustMaterial(null, (certificate, authType) ->
> true).build();
> return
> HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new
> NoopHostnameVerifier()).build();
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)