You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2014/04/17 11:00:18 UTC

svn commit: r1588174 - /sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java

Author: cziegeler
Date: Thu Apr 17 09:00:18 2014
New Revision: 1588174

URL: http://svn.apache.org/r1588174
Log:
SLING-3504 : SlingHttpServletResponseImpl.encodeXXX methods always add context path

Modified:
    sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java

Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java?rev=1588174&r1=1588173&r2=1588174&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java Thu Apr 17 09:00:18 2014
@@ -58,38 +58,44 @@ public class SlingHttpServletResponseImp
     // ---------- Redirection support through PathResolver --------------------
 
     @Override
-    public String encodeURL(String url) {
+    public String encodeURL(final String url) {
+        // remove context path
+        String path = removeContextPath(url);
+
         // make the path absolute
-        url = makeAbsolutePath(url);
+        path = makeAbsolutePath(path);
 
         // resolve the url to as if it would be a resource path
-        url = map(url);
+        path = map(path);
 
         // have the servlet container to further encodings
-        return super.encodeURL(url);
+        return super.encodeURL(path);
     }
 
     @Override
-    public String encodeRedirectURL(String url) {
+    public String encodeRedirectURL(final String url) {
+        // remove context path
+        String path = removeContextPath(url);
+
         // make the path absolute
-        url = makeAbsolutePath(url);
+        path = makeAbsolutePath(path);
 
         // resolve the url to as if it would be a resource path
-        url = map(url);
+        path = map(path);
 
         // have the servlet container to further encodings
-        return super.encodeRedirectURL(url);
+        return super.encodeRedirectURL(path);
     }
 
     @Override
     @Deprecated
-    public String encodeUrl(String url) {
+    public String encodeUrl(final String url) {
         return encodeURL(url);
     }
 
     @Override
     @Deprecated
-    public String encodeRedirectUrl(String url) {
+    public String encodeRedirectUrl(final String url) {
         return encodeRedirectURL(url);
     }
 
@@ -364,4 +370,12 @@ public class SlingHttpServletResponseImp
     private String map(String url) {
         return getRequestData().getResourceResolver().map(getRequestData().getServletRequest(), url);
     }
+
+    private String removeContextPath(final String path) {
+        final String contextPath = this.getRequestData().getSlingRequest().getContextPath().concat("/");
+        if ( contextPath.length() > 1 && path.startsWith(contextPath) ) {
+            return path.substring(contextPath.length() - 1);
+        }
+        return path;
+    }
 }