[
https://issues.apache.org/activemq/browse/CAMEL-2510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=57971#action_57971
]
Willem Jiang commented on CAMEL-2510:
-------------------------------------
Hi Roma,
The change that I made is trying to support the http bridge out of box.
If you want to route the all the request which URI is start with
"http://localhost:1234/route" to "http://localhost:4567/service", camel need
to lookup the request's HTTP_PATH to figure out the relative path and apply it
to http producer to send the request.
The original code supports this kind of route "http://localhost:1234" to
"http://host:4567/service" , but doesn't supports the upper route.
For the header of HTTP_PATH and HTTP_URI, cxfbean is using it to support the
JAXRS resource location.
> Mixing jetty/http in a route screws up the URI used by HttpClient
> -----------------------------------------------------------------
>
> Key: CAMEL-2510
> URL: https://issues.apache.org/activemq/browse/CAMEL-2510
> Project: Apache Camel
> Issue Type: Bug
> Affects Versions: 2.1.0, 2.2.0
> Reporter: Willem Jiang
> Assignee: Willem Jiang
> Fix For: 2.3.0
>
>
> Below test shows the Http producer can't build up right HttpRequest URI as a
> bridgeEndpoint.
> {code}
> public class JettyHttpTest extends CamelTestSupport {
> private String targetProducerUri =
> "http://localhost:8542/someservice?bridgeEndpoint=true&throwExceptionOnFailure=false";
> private String targetConsumerUri =
> "jetty:http://localhost:8542/someservice?matchOnUriPrefix=true";
> private String sourceUri =
> "jetty:http://localhost:6323/myservice?matchOnUriPrefix=true";
> private String sourceProducerUri = "http://localhost:6323/myservice";
> @Test
> public void testGetRootPath() throws Exception {
> MockEndpoint mock = getMockEndpoint("mock:result");
> mock.expectedBodiesReceived("Hi! /someservice");
> template.sendBody("direct:root", "");
> assertMockEndpointsSatisfied();
> }
>
> @Test
> public void testGetWithRelativePath() throws Exception {
> MockEndpoint mock = getMockEndpoint("mock:result");
> mock.expectedBodiesReceived("Hi! /someservice/relative");
>
> template.sendBody("direct:relative", "");
> assertMockEndpointsSatisfied();
>
> }
> @Override
> protected RouteBuilder createRouteBuilder() throws Exception {
> return new RouteBuilder() {
> @Override
> public void configure() throws Exception {
> from(targetConsumerUri)
> .process(new Processor() {
> public void process(Exchange exchange) throws
> Exception {
> String path =
> exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class);
> exchange.getOut().setBody("Hi! " + path);
> }
> });
> from(sourceUri)
> .to(targetProducerUri);
> from("direct:root")
> .to(sourceProducerUri)
> .to("mock:result");
>
> from("direct:relative")
> .to(sourceProducerUri + "/relative")
> .to("mock:result");
> }
> };
> }
> }
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.