aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java4
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java11
2 files changed, 13 insertions, 2 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java
index edac56c72dd..058fa1f7772 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java
@@ -98,7 +98,7 @@ public class UriPattern implements Comparable<UriPattern> {
if (port > 0 && port != uri.getPort())
return null;
- String uriPath = uri.getPath() == null ? "/" : uri.getPath();
+ String uriPath = uri.getRawPath() == null ? "/" : uri.getRawPath();
GlobPattern.Match pathMatch = path.match(uriPath, 1); // Don't match the leading '/'.
if (pathMatch == null)
return null;
@@ -123,7 +123,7 @@ public class UriPattern implements Comparable<UriPattern> {
@Override
public boolean equals(Object obj) {
- return obj instanceof UriPattern && pattern.equals(((UriPattern)obj).pattern);
+ return obj instanceof UriPattern && pattern.equals(((UriPattern) obj).pattern);
}
@Override
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java
index da48503729d..0ea82508f06 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java
@@ -271,6 +271,17 @@ public class UriPatternTestCase {
assertMatch(httpsPattern, "http://host:443/path", NO_GROUPS);
}
+ @Test
+ public void requireThatUrlEncodingIsNotDoneForPath() {
+ UriPattern encodedSlashPattern = new UriPattern("http://host:80/one%2Fpath");
+ assertMatch(encodedSlashPattern, "http://host:80/one%2Fpath", NO_GROUPS);
+ assertNotMatch(encodedSlashPattern, "http://host:80/one/path");
+
+ UriPattern actualSlashPattern = new UriPattern("http://host:80/two/paths");
+ assertNotMatch(actualSlashPattern, "http://host:80/two%2Fpaths");
+ assertMatch(actualSlashPattern, "http://host:80/two/paths", NO_GROUPS);
+ }
+
private static void assertIllegalPattern(String uri) {
try {
new UriPattern(uri);