[
https://issues.apache.org/activemq/browse/CAMEL-2510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=57953#action_57953
]
Roman Kalukiewicz commented on CAMEL-2510:
------------------------------------------
Should we really have such assertion in {{testGetWithRelativePath()}} test?
I believe we should have {{"Hi! /someservice"}} returned, not {{"Hi!
/someservice/relative"}} and no {{matchOnUriPrefix}} should be required on
{{targetConsumerUri}}.
In other words I believe, that by default we shouldn't propagate HTTP_PATH or
HTTP_URI at all from one endpoint to the other, because by default it is not
what people would expect. I would propose having two different header names for
overriding path for producer, and informative headers for requests
received.from consumers.
> 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.