You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2020/08/17 10:42:00 UTC

[jira] [Updated] (CAMEL-15420) camel-http dynamic aware removes Exchange.HTTP_QUERY header if Exchange.HTTP_PATH header not specified

     [ https://issues.apache.org/jira/browse/CAMEL-15420?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen updated CAMEL-15420:
--------------------------------
    Priority: Minor  (was: Major)

> camel-http dynamic aware removes Exchange.HTTP_QUERY header if Exchange.HTTP_PATH header not specified
> ------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-15420
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15420
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-http-common
>    Affects Versions: 2.24.3, 3.4.3
>            Reporter: Artem St
>            Priority: Minor
>         Attachments: HttpSendDynamicAwareHeadersTest.java
>
>
> If http path specified in endpoint uri instead of Exchange.HTTP_PATH header than dynamic aware ignores Exchange.HTTP_QUERY and set it as null.
> Sending message to route
> {code:java}
> from("direct:dynamicAware")
>  .setHeader(Exchange.HTTP_PATH, constant("dynamicAware"))
>  .setHeader(Exchange.HTTP_QUERY, constant("par1=val1&par2=val2"))
>  .toD("http://localhost:" + localServer.getLocalPort());{code}
> will return exchange with getIn().getHeader(Exchange.HTTP_QUERY) equal to "par1=val1&par2=val2".
> But, sending message to route 
> {code:java}
> from("direct:dynamicAwareWithoutPathHeader")
>  .setHeader(Exchange.HTTP_QUERY, constant("par1=val1&par2=val2"))
>  .toD("http://localhost:" + localServer.getLocalPort() + "/dynamicAware");{code}
> removes header Exchange.HTTP_QUERY from result.
>  
> Here is full code of test: (also attached as a .java file)
> {code:java}
> public class HttpSendDynamicAwareHeadersTest extends BaseHttpTest {
>  private HttpServer localServer;
>  @BeforeEach
>  @Override
>  public void setUp() throws Exception {
>  localServer = ServerBootstrap.bootstrap().
>  setHttpProcessor(getBasicHttpProcessor()).
>  setConnectionReuseStrategy(getConnectionReuseStrategy()).
>  setResponseFactory(getHttpResponseFactory()).
>  setExpectationVerifier(getHttpExpectationVerifier()).
>  setSslContext(getSSLContext()).
>  registerHandler("/dynamicAware", new BasicValidationHandler(GET.name(), null, null, null)).
>  create();
>  localServer.start();
>  super.setUp();
>  }
>  @AfterEach
>  @Override
>  public void tearDown() throws Exception {
>  super.tearDown();
>  if (localServer != null) {
>  localServer.stop();
>  }
>  }
>  @Override
>  protected RoutesBuilder createRouteBuilder() throws Exception {
>  return new RouteBuilder() {
>  @Override
>  public void configure() throws Exception {
>  from("direct:dynamicAware")
>  .setHeader(Exchange.HTTP_PATH, constant("dynamicAware"))
>  .setHeader(Exchange.HTTP_QUERY, constant("par1=val1&par2=val2"))
>  .toD("http://localhost:" + localServer.getLocalPort());
>  from("direct:dynamicAwareWithoutPathHeader")
>  .setHeader(Exchange.HTTP_QUERY, constant("par1=val1&par2=val2"))
>  .toD("http://localhost:" + localServer.getLocalPort() + "/dynamicAware");
>  }
>  };
>  }
>  @Test
>  public void testDynamicAwareHeaders() throws Exception {
>  Exchange e = fluentTemplate.to("direct:dynamicAware").send();
>  assertNotNull(e.getIn().getHeader(Exchange.HTTP_QUERY));
>  e = fluentTemplate.to("direct:dynamicAwareWithoutPathHeader").send();
>  assertNotNull(e.getIn().getHeader(Exchange.HTTP_QUERY));
>  }
> }{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)