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);

Reply via email to