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