You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ha...@apache.org on 2012/02/03 08:14:22 UTC

svn commit: r1240015 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/util/URISupport.java test/java/org/apache/camel/util/URISupportTest.java

Author: hadrian
Date: Fri Feb  3 07:14:21 2012
New Revision: 1240015

URL: http://svn.apache.org/viewvc?rev=1240015&view=rev
Log:
CAMEL-4954. Fix for double decoding of % in uris

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java?rev=1240015&r1=1240014&r2=1240015&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java Fri Feb  3 07:14:21 2012
@@ -83,8 +83,10 @@ public final class URISupport {
                 for (String parameter : parameters) {
                     int p = parameter.indexOf("=");
                     if (p >= 0) {
+                        // The replaceAll is an ugly workaround for CAMEL-4954, awaiting a cleaner fix once CAMEL-4425
+                        // is fully resolved in all components
                         String name = URLDecoder.decode(parameter.substring(0, p), CHARSET);
-                        String value = URLDecoder.decode(parameter.substring(p + 1), CHARSET);
+                        String value = URLDecoder.decode(parameter.substring(p + 1).replaceAll("%", "%25"), CHARSET);
 
                         // does the key already exist?
                         if (rc.containsKey(name)) {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java?rev=1240015&r1=1240014&r2=1240015&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java Fri Feb  3 07:14:21 2012
@@ -126,6 +126,13 @@ public class URISupportTest extends Cont
         assertEquals("jms://queue:foo?foo=bar&selector=somekey%3D%27somevalue%27", out);
     }
 
+    public void testNormalizeEndpointWithPercentSignInParameter() throws Exception {
+        String out = URISupport.normalizeUri("http://someendpoint?username=james&password=%25test");
+        assertNotNull(out);
+        // Camel will safe encode the URI
+        assertEquals("http://someendpoint?password=%25test&username=james", out);
+    }
+
     public void testParseParameters() throws Exception {
         URI u = new URI("quartz:myGroup/myTimerName?cron=0+0+*+*+*+?");
         Map<String, Object> params = URISupport.parseParameters(u);