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