summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-06-10 23:47:15 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-06-10 23:47:15 +0000
commit3d9827c51882c2791e265d80e6e8437bd5449b2e (patch)
tree3eb700f4e6172372cc75ad14b12cf70d48bfba57
parent9efe0a5b91be393d34e3a7455926c417086acd2f (diff)
Fix URI double-escaping issue
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@783576 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeUtil.java4
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeUtil.java4
-rw-r--r--java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java1
3 files changed, 9 insertions, 0 deletions
diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeUtil.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeUtil.java
index b944e01095..fccd30d8ff 100644
--- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeUtil.java
+++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeUtil.java
@@ -66,6 +66,10 @@ public class NodeUtil {
* @return
*/
static URI createURI(String uri) {
+ if (uri.indexOf('%') != -1) {
+ // Avoid double-escaping
+ return URI.create(uri);
+ }
int index = uri.indexOf(':');
String scheme = null;
String ssp = uri;
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeUtil.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeUtil.java
index 91ebe3a9be..8bf3ea8b04 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeUtil.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeUtil.java
@@ -70,6 +70,10 @@ public class NodeUtil {
if (uri == null) {
return null;
}
+ if (uri.indexOf('%') != -1) {
+ // Avoid double-escaping
+ return URI.create(uri);
+ }
int index = uri.indexOf(':');
String scheme = null;
String ssp = uri;
diff --git a/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java b/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java
index 41898b6448..55e44c04ba 100644
--- a/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java
+++ b/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeUtilTestCase.java
@@ -33,5 +33,6 @@ public class NodeUtilTestCase {
Assert.assertEquals("/a%20b", NodeUtil.createURI("/a b").toString());
Assert.assertEquals("file:/a/b", NodeUtil.createURI("file:/a/b").toString());
Assert.assertEquals("file:/a%20b", NodeUtil.createURI("file:/a b").toString());
+ Assert.assertEquals("file:/a%20b", NodeUtil.createURI("file:/a%20b").toString());
}
}