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 2012/12/05 09:54:02 UTC

svn commit: r1417317 - /sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java

Author: cziegeler
Date: Wed Dec  5 08:54:01 2012
New Revision: 1417317

URL: http://svn.apache.org/viewvc?rev=1417317&view=rev
Log:
SLING-2693 :  ResourceUtil.isA() fails if resource has a type, whose super type is not readable 

Modified:
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java

Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java?rev=1417317&r1=1417316&r2=1417317&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java Wed Dec  5 08:54:01 2012
@@ -28,7 +28,6 @@ import static org.osgi.framework.Constan
 import static org.osgi.service.component.ComponentConstants.COMPONENT_NAME;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.PrintWriter;
 import java.net.URL;
 import java.util.ArrayList;
@@ -50,7 +49,6 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Properties;
@@ -66,9 +64,11 @@ import org.apache.sling.api.SlingHttpSer
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.request.RequestProgressTracker;
 import org.apache.sling.api.request.RequestUtil;
+import org.apache.sling.api.resource.AbstractResource;
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceDecorator;
+import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceProvider;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
@@ -888,7 +888,7 @@ public class SlingServletResolver
         // and finally register as event listener
         this.eventHandlerReg = context.getBundleContext().registerService(EventHandler.class.getName(), this,
                 properties);
-        
+
         this.plugin = new ServletResolverWebConsolePlugin(context.getBundleContext());
     }
 
@@ -1138,11 +1138,29 @@ public class SlingServletResolver
      */
     public Resource decorate(final Resource resource) {
         return new ResourceWrapper(resource) {
+            @Override
             public boolean isResourceType(final String type) {
-                return ResourceUtil.isA(new ResourceWrapper(getResource()) {
+                return ResourceUtil.isA(new AbstractResource() {
+
+                    public String getResourceType() {
+                        return resource.getResourceType();
+                    }
+
+                    public String getResourceSuperType() {
+                        return resource.getResourceSuperType();
+                    }
+
                     public ResourceResolver getResourceResolver() {
                         return scriptResolver;
                     }
+
+                    public ResourceMetadata getResourceMetadata() {
+                        return resource.getResourceMetadata();
+                    }
+
+                    public String getPath() {
+                        return resource.getPath();
+                    }
                 }, type);
             }
         };
@@ -1156,7 +1174,7 @@ public class SlingServletResolver
         // this is deprecated, but we just delegate anyway
         return this.decorate(resource);
     }
-    
+
     @SuppressWarnings("serial")
     class ServletResolverWebConsolePlugin extends HttpServlet {
         private static final String PARAMETER_URL = "url";
@@ -1184,12 +1202,12 @@ public class SlingServletResolver
                 service = null;
             }
         }
-        
+
         class DecomposedURL {
             final String extension;
             final String path;
             final String[] selectors;
-            
+
             DecomposedURL(String url) {
                 if (url != null) {
                     final int lastDot = url.lastIndexOf('.');
@@ -1223,7 +1241,7 @@ public class SlingServletResolver
                 }
             }
         }
-        
+
         @Override
         protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             final String url = request.getParameter(PARAMETER_URL);
@@ -1236,22 +1254,22 @@ public class SlingServletResolver
             ResourceResolver resourceResolver = null;
             try {
                 resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
-                
+
                 final PrintWriter pw = response.getWriter();
 
                 pw.print("<form method='get'>");
                 pw.println("<table class='content' cellpadding='0' cellspacing='0' width='100%'>");
-        
+
                 titleHtml(
                         pw,
                         "Servlet Resolver Test",
                         "To check which servlet is responsible for rendering a response, enter a request path into " +
                                  "the field and click 'Resolve' to resolve it.");
-        
+
                 tr(pw);
                 tdLabel(pw, "URL");
                 tdContent(pw);
-                
+
                 pw.println("<input type='text' name='" + PARAMETER_URL + "' value='" +
                          (url != null ? url : "") + "' class='input' size='50'>");
                 closeTd(pw);
@@ -1339,7 +1357,7 @@ public class SlingServletResolver
         private void closeTd(final PrintWriter pw) {
             pw.print("</td>");
         }
-        
+
         @SuppressWarnings("unused")
         private URL getResource(final String path) {
             if (path.startsWith("/servletresolver/res/ui")) {
@@ -1367,7 +1385,7 @@ public class SlingServletResolver
                 Servlet candidate = candidateResource.adaptTo(Servlet.class);
                 if (candidate != null) {
                     boolean isOptingServlet = false;
-                    
+
                     if (candidate instanceof SlingScript) {
                         pw.println("<li>" + candidateResource.getPath() + "</li>");
                     } else {