Repository: camel Updated Branches: refs/heads/master dcdc7760a -> 516834a2a
CAMEL-8578 - May double encode uri when using HTTP_URI or HTTP_QUERY headers Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c9dd906c Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c9dd906c Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c9dd906c Branch: refs/heads/master Commit: c9dd906c783a794293c9e7d4dcda45ea2c069826 Parents: dcdc776 Author: Sami Nurminen <[email protected]> Authored: Sun Jul 12 15:24:04 2015 +0300 Committer: Claus Ibsen <[email protected]> Committed: Tue Jul 14 10:12:30 2015 +0200 ---------------------------------------------------------------------- .../camel/component/http/helper/HttpHelper.java | 2 +- .../component/http/helper/HttpHelperTest.java | 44 ++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/c9dd906c/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java b/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java index e5bbf45..d4f4620 100644 --- a/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java +++ b/components/camel-http/src/main/java/org/apache/camel/component/http/helper/HttpHelper.java @@ -282,7 +282,7 @@ public final class HttpHelper { } // We should user the query string from the HTTP_URI header if (queryString == null) { - queryString = uri.getQuery(); + queryString = uri.getRawQuery(); } if (queryString != null) { // need to encode query string http://git-wip-us.apache.org/repos/asf/camel/blob/c9dd906c/components/camel-http/src/test/java/org/apache/camel/component/http/helper/HttpHelperTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http/src/test/java/org/apache/camel/component/http/helper/HttpHelperTest.java b/components/camel-http/src/test/java/org/apache/camel/component/http/helper/HttpHelperTest.java index 6f8f66b..ddbb0b9 100644 --- a/components/camel-http/src/test/java/org/apache/camel/component/http/helper/HttpHelperTest.java +++ b/components/camel-http/src/test/java/org/apache/camel/component/http/helper/HttpHelperTest.java @@ -161,6 +161,50 @@ public class HttpHelperTest { assertEquals(HttpMethods.POST, method); } + @Test + public void createURIShouldKeepQueryParametersGivenInUrlParameter() throws URISyntaxException { + + URI uri = HttpHelper.createURI( + createExchangeWithOptionalCamelHttpUriHeader(null, + null), + "http://apache.org/?q=%E2%82%AC" + , createHttpEndpoint(false, "http://apache.org")); + assertEquals("http://apache.org/?q=%E2%82%AC",uri.toString()); + } + + @Test + public void createURIShouldEncodeExchangeHttpQuery() throws URISyntaxException { + + URI uri = HttpHelper.createURI( + createExchangeWithOptionalHttpQueryAndHttpMethodHeader("q= ", + null), + "http://apache.org/?q=%E2%82%AC" + , createHttpEndpoint(false, "http://apache.org")); + assertEquals("http://apache.org/?q=%20",uri.toString()); + } + + @Test + public void createURIShouldNotDoubleEncodeExchangeHttpQuery() throws URISyntaxException { + + URI uri = HttpHelper.createURI( + createExchangeWithOptionalHttpQueryAndHttpMethodHeader("q=%E2%82%AC", + null), + "http://apache.org/?q=%E2%82%AC" + , createHttpEndpoint(false, "http://apache.org")); + assertEquals("http://apache.org/?q=%E2%82%AC",uri.toString()); + } + + @Test + public void createURIShouldKeepQueryParametersGivenInEndPointUri() throws URISyntaxException { + + URI uri = HttpHelper.createURI( + createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, + null), + "http://apache.org/" + , createHttpEndpoint(false, "http://apache.org/?q=%E2%82%AC")); + assertEquals("http://apache.org/?q=%E2%82%AC",uri.toString()); + } + private Exchange createExchangeWithOptionalHttpQueryAndHttpMethodHeader(String httpQuery, HttpMethods httpMethod) { CamelContext context = new DefaultCamelContext(); Exchange exchange = new DefaultExchange(context);
