You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2007/11/26 18:12:59 UTC

svn commit: r598347 - /incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/slingservlets/DefaultSlingServlet.java

Author: bdelacretaz
Date: Mon Nov 26 09:12:59 2007
New Revision: 598347

URL: http://svn.apache.org/viewvc?rev=598347&view=rev
Log:
SLING-92: send a 404 instead of doing default rendering if URL info includes a suffix, i.e. if resource was found higher in the tree than what the URL says

Modified:
    incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/slingservlets/DefaultSlingServlet.java

Modified: incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/slingservlets/DefaultSlingServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/slingservlets/DefaultSlingServlet.java?rev=598347&r1=598346&r2=598347&view=diff
==============================================================================
--- incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/slingservlets/DefaultSlingServlet.java (original)
+++ incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/slingservlets/DefaultSlingServlet.java Mon Nov 26 09:12:59 2007
@@ -33,6 +33,7 @@
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.servlets.HttpConstants;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
 import org.apache.sling.microsling.servlet.MicroslingServletConfig;
@@ -92,6 +93,17 @@
         // make sure we have an Item, and render it via one of our renderingServlets
         final Object data = r.getRawData();
         if(data!=null && (data instanceof Item)) {
+            final String suffix = req.getRequestPathInfo().getSuffix();
+            if(suffix != null && suffix.length() > 0) {
+                // accept exact addressing only for default rendering:
+                // a non-empty suffix means there was extra stuff after the path
+                // of the resource
+                throw new HttpStatusCodeException(
+                        HttpServletResponse.SC_NOT_FOUND,
+                        "Ancestor resource found (" + r.getResourceMetadata().get(ResourceMetadata.RESOLUTION_PATH) + ")"
+                        + " but URL suffix must be empty for default rendering (suffix=" + suffix + ")"
+                );
+            }
             final String contentType = req.getResponseContentType();
             final Servlet s = renderingServlets.get(contentType);
             if(s!=null) {