Author: fmeschbe
Date: Mon Dec 29 13:27:27 2008
New Revision: 730000
URL: http://svn.apache.org/viewvc?rev=730000&view=rev
Log:
SLING-791 Correctly handle trailing slashes in the base path
Modified:
incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/RedirectServlet.java
incubator/sling/trunk/servlets/get/src/test/java/org/apache/sling/servlets/get/RedirectServletTest.java
Modified:
incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/RedirectServlet.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/RedirectServlet.java?rev=730000&r1=729999&r2=730000&view=diff
==============================================================================
---
incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/RedirectServlet.java
(original)
+++
incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/RedirectServlet.java
Mon Dec 29 13:27:27 2008
@@ -176,6 +176,11 @@
private static void makeRelative(StringBuffer pathBuffer, String base,
String target) {
+ // pseudo entry to correctly calculate the relative path
+ if (base.endsWith("/")) {
+ base = base.concat(String.valueOf(Character.MAX_VALUE));
+ }
+
String[] bParts = base.substring(1).split("/");
String[] tParts = target.substring(1).split("/");
Modified:
incubator/sling/trunk/servlets/get/src/test/java/org/apache/sling/servlets/get/RedirectServletTest.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/servlets/get/src/test/java/org/apache/sling/servlets/get/RedirectServletTest.java?rev=730000&r1=729999&r2=730000&view=diff
==============================================================================
---
incubator/sling/trunk/servlets/get/src/test/java/org/apache/sling/servlets/get/RedirectServletTest.java
(original)
+++
incubator/sling/trunk/servlets/get/src/test/java/org/apache/sling/servlets/get/RedirectServletTest.java
Mon Dec 29 13:27:27 2008
@@ -39,6 +39,12 @@
assertEquals("d", toRedirect(base, target));
}
+ public void testTrailingSlash() {
+ String base = "/a/b/c/";
+ String target = "/a/b/c.html";
+ assertEquals("../c.html", toRedirect(base, target));
+ }
+
public void testCommonAncestor() {
String base = "/a/b/c/d";
String target = "/a/b/x/y";