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 2009/06/24 15:04:30 UTC

svn commit: r788011 - in /sling/trunk/bundles/servlets/resolver: ./ src/main/java/org/apache/sling/servlets/resolver/internal/ src/main/java/org/apache/sling/servlets/resolver/internal/helper/ src/main/java/org/apache/sling/servlets/resolver/internal/r...

Author: cziegeler
Date: Wed Jun 24 13:04:29 2009
New Revision: 788011

URL: http://svn.apache.org/viewvc?rev=788011&view=rev
Log:
SLING-1022 : Add missing information to ResourceCollector and use new methods from ResourceUtil.

Modified:
    sling/trunk/bundles/servlets/resolver/pom.xml
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationIterator.java
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
    sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java
    sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationIteratorTest.java
    sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorGetServletsTest.java
    sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
    sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderCreateTest.java

Modified: sling/trunk/bundles/servlets/resolver/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/pom.xml?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/pom.xml (original)
+++ sling/trunk/bundles/servlets/resolver/pom.xml Wed Jun 24 13:04:29 2009
@@ -70,7 +70,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.0.2-incubator</version>
+            <version>2.0.5-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>

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=788011&r1=788010&r2=788011&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 Jun 24 13:04:29 2009
@@ -123,7 +123,6 @@
     // ---------- ServletResolver interface -----------------------------------
 
     public Servlet resolveServlet(SlingHttpServletRequest request) {
-
         Resource resource = request.getResource();
 
         // start tracking servlet resolution
@@ -153,7 +152,7 @@
         // the resource type is not absolute, so lets go for the deep search
         if (servlet == null) {
             ResourceCollector locationUtil = ResourceCollector.create(request);
-            servlet = getServlet(locationUtil, request, resource);
+            servlet = getServlet(locationUtil, request, resource.getResourceResolver());
 
             if(log.isDebugEnabled()) {
             	log.debug("getServlet returns Servlet {}", RequestUtil.getServletName(servlet));
@@ -261,8 +260,9 @@
             // find a servlet for the status as the method name
             ResourceCollector locationUtil = new ResourceCollector(
                 String.valueOf(status),
-                ServletResolverConstants.ERROR_HANDLER_PATH);
-            Servlet servlet = getServlet(locationUtil, request, resource);
+                ServletResolverConstants.ERROR_HANDLER_PATH,
+                resource);
+            Servlet servlet = getServlet(locationUtil, request, resource.getResourceResolver());
 
             // fall back to default servlet if none
             if (servlet == null) {
@@ -322,8 +322,9 @@
                 // find a servlet for the simple class name as the method name
                 ResourceCollector locationUtil = new ResourceCollector(
                     tClass.getSimpleName(),
-                    ServletResolverConstants.ERROR_HANDLER_PATH);
-                servlet = getServlet(locationUtil, request, resource);
+                    ServletResolverConstants.ERROR_HANDLER_PATH,
+                    resource);
+                servlet = getServlet(locationUtil, request, resource.getResourceResolver());
 
                 // go to the base class
                 tClass = tClass.getSuperclass();
@@ -396,8 +397,8 @@
      *         such servlet willing to handle the request could be found.
      */
     private Servlet getServlet(ResourceCollector locationUtil,
-            SlingHttpServletRequest request, Resource resource) {
-        Collection<Resource> candidates = locationUtil.getServlets(resource);
+            SlingHttpServletRequest request, ResourceResolver resolver) {
+        final Collection<Resource> candidates = locationUtil.getServlets(resolver);
 
     	if(log.isDebugEnabled()) {
     		if(candidates.isEmpty()) {
@@ -410,6 +411,7 @@
     		}
     	}
 
+    	boolean hasOptingServlet = false;
         for (Resource candidateResource : candidates) {
         	if(log.isDebugEnabled()) {
         		log.debug("Checking if candidate Resource {} adapts to Servlet and accepts request",
@@ -417,11 +419,15 @@
         	}
             Servlet candidate = candidateResource.adaptTo(Servlet.class);
             if (candidate != null) {
-                boolean servletAcceptsRequest = !(candidate instanceof OptingServlet)
+                final boolean isOptingServlet = candidate instanceof OptingServlet;
+                boolean servletAcceptsRequest = !isOptingServlet
                     || ((OptingServlet) candidate).accepts(request);
                 if (servletAcceptsRequest) {
                     return candidate;
                 }
+                if ( isOptingServlet ) {
+                    hasOptingServlet = true;
+                }
             	if(log.isDebugEnabled()) {
             		log.debug("Candidate {} does not accept request, ignored", candidateResource.getPath());
             	}

Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationIterator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationIterator.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationIterator.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationIterator.java Wed Jun 24 13:04:29 2009
@@ -21,10 +21,8 @@
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
-import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.jcr.resource.JcrResourceUtil;
-import org.apache.sling.servlets.resolver.internal.ServletResolverConstants;
+import org.apache.sling.api.resource.ResourceUtil;
 
 /**
  * The <code>LocationIterator</code> provides access to an ordered collection
@@ -49,7 +47,7 @@
 
     // The resource for which this iterator is created. This resource
     // gives the initial resource type and the first resource super type
-    private final Resource resource;
+    //private final Resource resource;
 
     // The resource resolver used to find resource super types of
     // resource types
@@ -69,6 +67,12 @@
     // The resource type to use for the next iteration loop
     private String resourceType;
 
+    // The first resource type to use
+    private final String firstResourceType;
+
+    // The first resource super type to use
+    private final String firstResourceSuperType;
+
     // The current relative path generated from the resource type
     private String relPath;
 
@@ -80,19 +84,15 @@
      * Creates an instance of this iterator starting with a location built from
      * the resource type of the <code>resource</code> and ending with the
      * given <code>baseResourceType</code>.
-     * 
-     * @param resource The <code>Resource</code> used to define the initial
-     *            resource type and resource super type.
-     * @param baseResourceType The base resource type. If this is
-     *            <code>null</code> the
-     *            {@link ServletResolverConstants#DEFAULT_SERVLET_NAME} is used.
+     *
+     * @param resourceType the initial resource type.
+     * @param resourceSuperType the initial resource super type.
+     * @param baseResourceType The base resource type.
+     * @param resolver The resource resolver
      */
-    public LocationIterator(Resource resource, String baseResourceType) {
-        this.resource = resource;
-        this.resolver = resource.getResourceResolver();
-        this.baseResourceType = (baseResourceType != null)
-                ? baseResourceType
-                : ServletResolverConstants.DEFAULT_SERVLET_NAME;
+    public LocationIterator(String resourceType, String resourceSuperType, String baseResourceType, ResourceResolver resolver) {
+        this.resolver = resolver;
+        this.baseResourceType = baseResourceType;
 
         String[] tmpPath = resolver.getSearchPath();
         if (tmpPath == null || tmpPath.length == 0) {
@@ -100,7 +100,10 @@
         }
         searchPath = tmpPath;
 
-        resourceType = resource.getResourceType();
+        this.firstResourceType = resourceType;
+        this.firstResourceSuperType = resourceSuperType;
+        // we start with the first resource type
+        this.resourceType = firstResourceType;
 
         nextLocation = seek();
     }
@@ -114,7 +117,7 @@
 
     /**
      * Returns the next entry of this iterator.
-     * 
+     *
      * @throws NoSuchElementException if {@link #hasNext()} returns
      *             <code>false</code>.
      */
@@ -143,7 +146,7 @@
                 return null;
             }
 
-            String typePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+            String typePath = ResourceUtil.resourceTypeToPath(resourceType);
             if (typePath.startsWith("/")) {
                 resourceType = getResourceSuperType(resourceType);
                 return typePath;
@@ -185,10 +188,10 @@
 
         // get the super type of the current resource type
         String superType;
-        if (resourceType.equals(resource.getResourceType())) {
-            superType = resource.getResourceSuperType();
+        if (resourceType.equals(this.firstResourceType)) {
+            superType = this.firstResourceSuperType;
         } else {
-            superType = JcrResourceUtil.getResourceSuperType(resolver,
+            superType = ResourceUtil.getResourceSuperType(resolver,
                 resourceType);
         }
 

Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java Wed Jun 24 13:04:29 2009
@@ -30,11 +30,12 @@
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.SyntheticResource;
+import org.apache.sling.servlets.resolver.internal.ServletResolverConstants;
 import org.apache.sling.servlets.resolver.internal.resource.ServletResourceProviderFactory;
 
 /**
  * The <code>ResourceCollector</code> class provides a single public method -
- * {@link #getServlets(Resource)} - which is used to find an ordered collection
+ * {@link #getServlets(ResourceResolver)} - which is used to find an ordered collection
  * of <code>Resource</code> instances which may be used to find a servlet or
  * script to handle a request to the given resource.
  */
@@ -72,6 +73,12 @@
     // request is GET or HEAD and extension is html
     private final boolean isHtml;
 
+    private final int hashCode;
+
+    private final String resourceType;
+
+    private final String resourceSuperType;
+
     /**
      * Creates a <code>ResourceCollector</code> for the given
      * <code>request</code>. If the request is a GET or HEAD request, a
@@ -100,15 +107,22 @@
      *            default value
      *            {@link org.apache.sling.servlets.resolver.internal.ServletResolverConstants#DEFAULT_SERVLET_NAME}
      *            is assumed.
+     * @param resource the resource to invoke, the resource type and resource super type are taken from this resource.
      */
-    public ResourceCollector(String methodName, String baseResourceType) {
+    public ResourceCollector(String methodName, String baseResourceType, Resource resource) {
         this.methodName = methodName;
-        this.baseResourceType = baseResourceType;
+        this.baseResourceType = (baseResourceType != null ? baseResourceType : ServletResolverConstants.DEFAULT_SERVLET_NAME);
         this.requestSelectors = new String[0];
         this.numRequestSelectors = 0;
         this.extension = null;
         this.isGet = false;
         this.isHtml = false;
+        this.resourceType = resource.getResourceType();
+        this.resourceSuperType = resource.getResourceSuperType();
+        // create the hash code once
+        final String key = methodName + ':' + baseResourceType + ':' + extension + "::" +
+            (this.resourceType == null ? "" : this.resourceType)+ ':' + (this.resourceSuperType == null ? "" : this.resourceSuperType);
+        this.hashCode = key.hashCode();
     }
 
     /**
@@ -125,7 +139,9 @@
      */
     private ResourceCollector(SlingHttpServletRequest request) {
         this.methodName = request.getMethod();
-        this.baseResourceType = null;
+        this.baseResourceType = ServletResolverConstants.DEFAULT_SERVLET_NAME;
+        this.resourceType = request.getResource().getResourceType();
+        this.resourceSuperType = request.getResource().getResourceSuperType();
 
         RequestPathInfo requestpaInfo = request.getRequestPathInfo();
 
@@ -135,15 +151,18 @@
 
         isGet = "GET".equals(methodName) || "HEAD".equals(methodName);
         isHtml = isGet && "html".equals(extension);
+        // create the hash code once
+        final String key = methodName + ':' + baseResourceType + ':' + extension + ':' + requestpaInfo.getSelectorString() + ':' +
+            (this.resourceType == null ? "" : this.resourceType)+ ':' + (this.resourceSuperType == null ? "" : this.resourceSuperType);
+        this.hashCode = key.hashCode();
     }
 
-    public final Collection<Resource> getServlets(Resource resource) {
+    public final Collection<Resource> getServlets(ResourceResolver resolver) {
 
         SortedSet<Resource> resources = new TreeSet<Resource>();
 
-        ResourceResolver resolver = resource.getResourceResolver();
-        Iterator<String> locations = new LocationIterator(resource,
-            baseResourceType);
+        Iterator<String> locations = new LocationIterator(resourceType, resourceSuperType,
+            baseResourceType, resolver);
         while (locations.hasNext()) {
             String location = locations.next();
 
@@ -312,4 +331,50 @@
 
         return res;
     }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( !(obj instanceof ResourceCollector) ) {
+            return false;
+        }
+        if ( obj == this ) {
+            return true;
+        }
+        final ResourceCollector o = (ResourceCollector)obj;
+        if ( isGet == o.isGet
+             && isHtml == o.isHtml
+             && numRequestSelectors == o.numRequestSelectors
+             && stringEquals(methodName, o.methodName)
+             && stringEquals(baseResourceType, o.baseResourceType)
+             && stringEquals(resourceType, o.resourceType)
+             && stringEquals(resourceSuperType, o.resourceSuperType)
+             && stringEquals(extension, o.extension) ) {
+            // now compare selectors
+            for(int i=0;i<numRequestSelectors;i++) {
+                if ( !stringEquals(requestSelectors[i], o.requestSelectors[i]) ) {
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return this.hashCode;
+    }
+
+    /**
+     * Helper method to compare two strings which can possibly be <code>null</code>
+     */
+    private boolean stringEquals(final String s1, final String s2) {
+        if ( s1 == null && s2 == null ) {
+            return true;
+        }
+        if ( s1 == null || s2 == null ) {
+            return false;
+        }
+        return s1.equals(s2);
+    }
 }

Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java Wed Jun 24 13:04:29 2009
@@ -28,9 +28,9 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.servlets.HttpConstants;
 import org.apache.sling.commons.osgi.OsgiUtil;
-import org.apache.sling.jcr.resource.JcrResourceUtil;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentConstants;
@@ -258,7 +258,7 @@
         for (String type : types) {
 
             // ensure namespace prefixes are converted to slashes
-            type = JcrResourceUtil.resourceTypeToPath(type);
+            type = ResourceUtil.resourceTypeToPath(type);
 
             // make absolute if relative
             if (!type.startsWith("/")) {

Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java Wed Jun 24 13:04:29 2009
@@ -20,10 +20,10 @@
 
 import junit.framework.TestCase;
 
+import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.commons.testing.sling.MockResource;
 import org.apache.sling.commons.testing.sling.MockResourceResolver;
 import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
-import org.apache.sling.jcr.resource.JcrResourceUtil;
 
 public abstract class HelperTestBase extends TestCase {
 
@@ -51,18 +51,18 @@
         resourceResolver.setSearchPath("/apps", "/libs");
 
         resourceType = "foo:bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
 
         resourcePath = "/content/page";
         resource = new MockResource(resourceResolver, resourcePath,
             resourceType);
         resourceResolver.addResource(resource);
 
-        request = makeRequest("GET", "print.a4", "html"); 
+        request = makeRequest("GET", "print.a4", "html");
     }
-    
+
     protected MockSlingHttpServletRequest makeRequest(String method, String selectors, String extension) {
-        final MockSlingHttpServletRequest result = 
+        final MockSlingHttpServletRequest result =
             new MockSlingHttpServletRequest(resourcePath, selectors, extension, null, null);
         result.setMethod(method);
         result.setResourceResolver(resourceResolver);
@@ -78,5 +78,5 @@
         request = null;
         resource = null;
     }
-    
+
 }

Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationIteratorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationIteratorTest.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationIteratorTest.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationIteratorTest.java Wed Jun 24 13:04:29 2009
@@ -20,7 +20,8 @@
 
 import static org.apache.sling.servlets.resolver.internal.ServletResolverConstants.DEFAULT_SERVLET_NAME;
 
-import org.apache.sling.jcr.resource.JcrResourceUtil;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceUtil;
 
 public class LocationIteratorTest extends HelperTestBase {
 
@@ -28,8 +29,11 @@
         // expect path gets { "/" }
         resourceResolver.setSearchPath((String[]) null);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -47,8 +51,11 @@
         String root0 = "/apps";
         resourceResolver.setSearchPath(root0);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /apps/foo/bar
         assertTrue(li.hasNext());
@@ -67,8 +74,11 @@
         String root1 = "/libs";
         resourceResolver.setSearchPath(root0, root1);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /apps/foo/bar
         assertTrue(li.hasNext());
@@ -96,11 +106,14 @@
 
         // absolute resource type
         resourceType = "/foo/bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
         resource.setResourceType(resourceType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -120,11 +133,14 @@
 
         // absolute resource type
         resourceType = "/foo/bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
         resource.setResourceType(resourceType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -145,11 +161,14 @@
 
         // absolute resource type
         resourceType = "/foo/bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
         resource.setResourceType(resourceType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -173,11 +192,14 @@
 
         // set resource super type
         resourceSuperType = "foo:superBar";
-        resourceSuperTypePath = JcrResourceUtil.resourceTypeToPath(resourceSuperType);
+        resourceSuperTypePath = ResourceUtil.resourceTypeToPath(resourceSuperType);
         resource.setResourceSuperType(resourceSuperType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -201,11 +223,14 @@
 
         // set resource super type
         resourceSuperType = "foo:superBar";
-        resourceSuperTypePath = JcrResourceUtil.resourceTypeToPath(resourceSuperType);
+        resourceSuperTypePath = ResourceUtil.resourceTypeToPath(resourceSuperType);
         resource.setResourceSuperType(resourceSuperType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /apps/foo/bar
         assertTrue(li.hasNext());
@@ -230,11 +255,14 @@
 
         // set resource super type
         resourceSuperType = "foo:superBar";
-        resourceSuperTypePath = JcrResourceUtil.resourceTypeToPath(resourceSuperType);
+        resourceSuperTypePath = ResourceUtil.resourceTypeToPath(resourceSuperType);
         resource.setResourceSuperType(resourceSuperType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /apps/foo/bar
         assertTrue(li.hasNext());
@@ -270,16 +298,19 @@
 
         // absolute resource type
         resourceType = "/foo/bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
         resource.setResourceType(resourceType);
 
         // set resource super type
         resourceSuperType = "foo:superBar";
-        resourceSuperTypePath = JcrResourceUtil.resourceTypeToPath(resourceSuperType);
+        resourceSuperTypePath = ResourceUtil.resourceTypeToPath(resourceSuperType);
         resource.setResourceSuperType(resourceSuperType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -303,16 +334,19 @@
 
         // absolute resource type
         resourceType = "/foo/bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
         resource.setResourceType(resourceType);
 
         // set resource super type
         resourceSuperType = "foo:superBar";
-        resourceSuperTypePath = JcrResourceUtil.resourceTypeToPath(resourceSuperType);
+        resourceSuperTypePath = ResourceUtil.resourceTypeToPath(resourceSuperType);
         resource.setResourceSuperType(resourceSuperType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());
@@ -337,16 +371,19 @@
 
         // absolute resource type
         resourceType = "/foo/bar";
-        resourceTypePath = JcrResourceUtil.resourceTypeToPath(resourceType);
+        resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
         resource.setResourceType(resourceType);
 
         // set resource super type
         resourceSuperType = "foo:superBar";
-        resourceSuperTypePath = JcrResourceUtil.resourceTypeToPath(resourceSuperType);
+        resourceSuperTypePath = ResourceUtil.resourceTypeToPath(resourceSuperType);
         resource.setResourceSuperType(resourceSuperType);
 
-        LocationIterator li = new LocationIterator(request.getResource(),
-            DEFAULT_SERVLET_NAME);
+        final Resource r = request.getResource();
+        LocationIterator li = new LocationIterator(r.getResourceType(),
+                r.getResourceSuperType(),
+                DEFAULT_SERVLET_NAME,
+                resourceResolver);
 
         // 1. /foo/bar
         assertTrue(li.hasNext());

Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorGetServletsTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorGetServletsTest.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorGetServletsTest.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorGetServletsTest.java Wed Jun 24 13:04:29 2009
@@ -155,7 +155,7 @@
         }
 
         ResourceCollector lu = ResourceCollector.create(request);
-        Collection<Resource> res = lu.getServlets(request.getResource());
+        Collection<Resource> res = lu.getServlets(request.getResource().getResourceResolver());
         Iterator<Resource> rIter = res.iterator();
 
         for (int index : indices) {

Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java Wed Jun 24 13:04:29 2009
@@ -24,12 +24,12 @@
 import org.apache.sling.commons.testing.sling.MockResource;
 import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 
-/** Various tests that explain and demonstrate how scripts are 
+/** Various tests that explain and demonstrate how scripts are
  *  selected. See the assertScript methods for how to interpret
  *  the various tests.
  */
 public class ScriptSelectionTest extends HelperTestBase {
-    
+
     /** Test set of available scripts */
     protected final String [] SET_A = {
             "/apps/foo/bar/html.esp",
@@ -45,31 +45,31 @@
             "/apps/foo/bar/UNKNOWN.esp"
 
     };
-    
-    /** Given a list of available scripts and the request method, selectors 
+
+    /** Given a list of available scripts and the request method, selectors
      *  and extension, check that the expected script is selected.
      *  The resource type is foo:bar, set by HelperTestBase
-     *  
+     *
      *  @param method the HTTP method of the simulated request
      *  @param selectors the selectors of the simulated request
      *  @param extension the extension of the simulated request
      *  @param scripts the list of scripts that would be available in the repository
      *  @param expectedScript the script that we expect to be selected
-     */ 
+     */
     protected void assertScript(String method, String selectors, String extension,
-            String [] scripts, String expectedScript) 
+            String [] scripts, String expectedScript)
     {
         // Add given scripts to our mock resource resolver
         for(String script : scripts) {
             final MockResource r = new MockResource(resourceResolver, script, "nt:file");
-            resourceResolver.addResource(r);            
+            resourceResolver.addResource(r);
         }
-        
+
         // Create mock request and get scripts from ResourceCollector
         final MockSlingHttpServletRequest req = makeRequest(method, selectors, extension);
         final ResourceCollector u = ResourceCollector.create(req);
-        final Collection<Resource> s = u.getServlets(req.getResource());
-        
+        final Collection<Resource> s = u.getServlets(req.getResource().getResourceResolver());
+
         if(expectedScript == null) {
             assertFalse("No script must be found", s.iterator().hasNext());
         } else {
@@ -79,15 +79,15 @@
             assertEquals("First script is the expected one", expectedScript, scriptPath);
         }
     }
-    
+
     public void testHtmlGet() {
         assertScript("GET", null, "html", SET_A, "/apps/foo/bar/html.esp");
     }
-    
+
     public void testHtmlGetSelectors() {
         assertScript("GET", "print.a4", "html", SET_A, "/apps/foo/bar/print.esp");
     }
-    
+
     public void testHtmlGetSelectorsAndResourceLabel() {
         final String [] scripts = {
                 "/apps/foo/bar/bar.esp",
@@ -97,11 +97,11 @@
         // to be selector-specific
         assertScript("GET", "print.a4", "html", scripts, "/apps/foo/bar/bar.esp");
     }
-    
+
     public void testHtmlGetSingleSelector() {
         assertScript("GET", "print", "html", SET_A, "/apps/foo/bar/print.esp");
     }
-    
+
     public void testHtmlGetHtmlHasPriorityA() {
         final String [] scripts = {
             "/apps/foo/bar/html.esp",
@@ -109,7 +109,7 @@
         };
         assertScript("GET", null, "html", scripts, "/apps/foo/bar/html.esp");
     }
-    
+
     public void testHtmlGetHtmlHasPriorityB() {
         final String [] scripts = {
             "/apps/foo/bar/bar.esp",
@@ -117,7 +117,7 @@
         };
         assertScript("GET", null, "html", scripts, "/apps/foo/bar/html.esp");
     }
-    
+
     public void testHtmlGetBarUsedIfFound() {
         final String [] scripts = {
                 "/apps/foo/bar/bar.esp",
@@ -125,15 +125,15 @@
             };
         assertScript("GET", null, "html", scripts, "/apps/foo/bar/bar.esp");
     }
-    
+
     public void testXmlGetSetC() {
         assertScript("GET", null, "xml", SET_A, "/apps/foo/bar/xml.esp");
     }
-    
+
     public void testXmlGetSelectors() {
         assertScript("GET", "print.a4", "xml", SET_A, "/apps/foo/bar/print.xml.esp");
     }
-    
+
     public void testMultipleSelectorsA() {
         final String [] scripts = {
                 "/apps/foo/bar/print",
@@ -146,7 +146,7 @@
             };
             assertScript("GET", "print.a4", "html", scripts, "/apps/foo/bar/print/a4.esp");
     }
-    
+
     public void testMultipleSelectorsB() {
         final String [] scripts = {
                 "/apps/foo/bar/print.a4.esp",
@@ -158,7 +158,7 @@
             assertScript("GET", "a4.print", "html", scripts, "/apps/foo/bar/a4.esp");
             assertScript("GET", null, "html", scripts, "/apps/foo/bar/html.esp");
     }
-    
+
     public void testMultipleSelectorsC() {
         final String [] scripts = {
                 "/apps/foo/bar/print.esp",
@@ -166,7 +166,7 @@
             };
             assertScript("GET", "print.a4", "html", scripts, "/apps/foo/bar/print.esp");
     }
-    
+
     public void testMultipleSelectorsD() {
         final String [] scripts = {
                 "/apps/foo/bar/a4.esp",
@@ -175,7 +175,7 @@
             assertScript("GET", "print.a4", "html", scripts, "/apps/foo/bar/html.esp");
             assertScript("GET", "a4.print", "html", scripts, "/apps/foo/bar/a4.esp");
     }
-    
+
     public void testMultipleSelectorsE() {
         final String [] scripts = {
                 "/apps/foo/bar/bar.print.a4.esp",
@@ -191,11 +191,11 @@
             assertScript("GET", "a4.print", "html", scripts, "/apps/foo/bar/a4.esp");
             assertScript("GET", null, "html", scripts, "/apps/foo/bar/html.esp");
     }
-    
+
     public void testXmlGetSingleSelector() {
         assertScript("GET", "print", "xml", SET_A, "/apps/foo/bar/print.xml.esp");
     }
-    
+
     public void testHtmlGetAppsOverridesLibsA() {
         final String [] scripts = {
                 "/apps/foo/bar/bar.esp",
@@ -203,7 +203,7 @@
             };
         assertScript("GET", null, "html", scripts, "/apps/foo/bar/bar.esp");
     }
-    
+
     public void testHtmlGetAppsOverridesLibsB() {
         final String [] scripts = {
                 "/libs/foo/bar/bar.esp",
@@ -211,18 +211,18 @@
             };
         assertScript("GET", null, "html", scripts, "/apps/foo/bar/bar.esp");
     }
-    
+
     public void testHtmlGetLibUsedIfFound() {
         final String [] scripts = {
                 "/libs/foo/bar/bar.esp"
             };
         assertScript("GET", null, "html", scripts, "/libs/foo/bar/bar.esp");
     }
-    
+
     public void testHtmlPost() {
         assertScript("POST", null, "html", SET_A, "/apps/foo/bar/POST.esp");
     }
-    
+
     public void testHtmlPostBadCaseFindsNoScript() {
         final String [] scripts = {
                 "/apps/foo/bar/html.esp",
@@ -230,35 +230,35 @@
         };
         assertScript("POST", null, "html", scripts, null);
     }
-    
+
     public void testHtmlPostSelectors() {
         assertScript("POST", "print.a4", "html", SET_A, "/apps/foo/bar/print/POST.esp");
         assertScript("POST", "print", "html", SET_A, "/apps/foo/bar/print/POST.esp");
         assertScript("POST", "a4.print", "html", SET_A, "/apps/foo/bar/POST.esp");
         assertScript("POST", null, "html", SET_A, "/apps/foo/bar/POST.esp");
     }
-    
+
     public void testHtmlMethodSelectors() {
         assertScript("DELETE", "print.a4", "html", SET_A, "/apps/foo/bar/print/DELETE.esp");
         assertScript("SPURIOUS", "print", "html", SET_A, "/apps/foo/bar/SPURIOUS.esp");
         assertScript("UNKNOWN", "a4.print", "html", SET_A, "/apps/foo/bar/UNKNOWN.esp");
         assertScript("UNKNOWN", null, "html", SET_A, "/apps/foo/bar/UNKNOWN.esp");
     }
-    
+
     public void testHtmlPostSelectorsAreIgnored() {
         final String [] scripts = {
                 "/apps/foo/bar/print/POST.esp"
         };
         assertScript("POST", "print.a4", "html", scripts, null);
     }
-    
+
     public void testHtmlPostExtensionIsIgnored() {
         final String [] scripts = {
                 "/apps/foo/bar/POST.html.esp"
         };
         assertScript("POST", "print.a4", "html", scripts, null);
     }
-    
+
     public void testHtmlPostCannotIncludeResourceType() {
         final String [] scripts = {
                 "/apps/foo/bar/bar.POST.esp"

Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderCreateTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderCreateTest.java?rev=788011&r1=788010&r2=788011&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderCreateTest.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderCreateTest.java Wed Jun 24 13:04:29 2009
@@ -28,9 +28,9 @@
 
 import junit.framework.TestCase;
 
+import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.servlets.HttpConstants;
 import org.apache.sling.commons.testing.osgi.MockServiceReference;
-import org.apache.sling.jcr.resource.JcrResourceUtil;
 import org.apache.sling.servlets.resolver.internal.ServletResolverConstants;
 
 public class ServletResourceProviderCreateTest extends TestCase {
@@ -45,7 +45,7 @@
 
     private static final String RES_TYPE = "sling:sample";
 
-    private static final String RES_TYPE_PATH = JcrResourceUtil.resourceTypeToPath(RES_TYPE);
+    private static final String RES_TYPE_PATH = ResourceUtil.resourceTypeToPath(RES_TYPE);
 
     private ServletResourceProviderFactory factory = new ServletResourceProviderFactory(
         ROOT, new String[] {"/apps/"});