Author: cziegeler Date: Fri Mar 7 16:18:09 2014 New Revision: 1575311 URL: http://svn.apache.org/r1575311 Log: SLING-3441 : Avoid shared resource resolver usage
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/AbstractResourceCollector.java sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationIterator.java sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.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/ResourceCollectorTest.java sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java Modified: sling/trunk/bundles/servlets/resolver/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/pom.xml?rev=1575311&r1=1575310&r2=1575311&view=diff ============================================================================== --- sling/trunk/bundles/servlets/resolver/pom.xml (original) +++ sling/trunk/bundles/servlets/resolver/pom.xml Fri Mar 7 16:18:09 2014 @@ -81,7 +81,7 @@ <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.api</artifactId> - <version>2.3.0</version> + <version>2.4.0</version> <scope>provided</scope> </dependency> <dependency> 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=1575311&r1=1575310&r2=1575311&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 Fri Mar 7 16:18:09 2014 @@ -65,6 +65,8 @@ import org.apache.sling.api.SlingHttpSer import org.apache.sling.api.request.RequestPathInfo; import org.apache.sling.api.request.RequestProgressTracker; import org.apache.sling.api.request.RequestUtil; +import org.apache.sling.api.request.SlingRequestEvent; +import org.apache.sling.api.request.SlingRequestListener; import org.apache.sling.api.resource.LoginException; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceProvider; @@ -106,7 +108,7 @@ import org.slf4j.LoggerFactory; */ @Component(name="org.apache.sling.servlets.resolver.SlingServletResolver", metatype=true, label="%servletresolver.name", description="%servletresolver.description") -@Service(value={ServletResolver.class, SlingScriptResolver.class, ErrorHandler.class}) +@Service(value={ServletResolver.class, SlingScriptResolver.class, ErrorHandler.class, SlingRequestListener.class}) @Properties({ @Property(name="service.description", value="Sling Servlet Resolver and Error Handler"), @Property(name="event.topics", propertyPrivate=true, @@ -121,6 +123,7 @@ import org.slf4j.LoggerFactory; public class SlingServletResolver implements ServletResolver, SlingScriptResolver, + SlingRequestListener, ErrorHandler, EventHandler { @@ -162,7 +165,7 @@ public class SlingServletResolver @Reference private ResourceResolverFactory resourceResolverFactory; - private ResourceResolver scriptResolver; + private ResourceResolver sharedScriptResolver; private final Map<ServiceReference, ServletReg> servletsByReference = new HashMap<ServiceReference, ServletReg>(); @@ -199,6 +202,11 @@ public class SlingServletResolver private String[] executionPaths; /** + * The search paths + */ + private String[] searchPaths; + + /** * The default extensions */ private String[] defaultExtensions; @@ -223,10 +231,11 @@ public class SlingServletResolver LOGGER.debug("resolveServlet called for resource {}", resource); } + final ResourceResolver scriptResolver = this.getScriptResourceResolver(); Servlet servlet = null; if ( type != null && type.length() > 0 ) { - servlet = resolveServletInternal(request, type); + servlet = resolveServletInternal(request, type, scriptResolver); } // last resort, use the core bundle default servlet @@ -267,7 +276,8 @@ public class SlingServletResolver LOGGER.debug("resolveServlet called for resource {} with script name {}", resource, scriptName); } - final Servlet servlet = resolveServletInternal(resource, scriptName); + final ResourceResolver scriptResolver = this.getScriptResourceResolver(); + final Servlet servlet = resolveServletInternal(resource, scriptName, scriptResolver); // log the servlet found if (LOGGER.isDebugEnabled()) { @@ -292,7 +302,8 @@ public class SlingServletResolver LOGGER.debug("resolveServlet called for for script name {}", scriptName); } - final Servlet servlet = resolveServletInternal((Resource)null, scriptName); + final ResourceResolver scriptResolver = this.getScriptResourceResolver(); + final Servlet servlet = resolveServletInternal((Resource)null, scriptName, scriptResolver); // log the servlet found if (LOGGER.isDebugEnabled()) { @@ -309,7 +320,8 @@ public class SlingServletResolver /** Internal method to resolve a servlet. */ private Servlet resolveServletInternal( final Resource resource, - final String scriptName) { + final String scriptName, + final ResourceResolver resolver) { Servlet servlet = null; // first check whether the type of a resource is the absolute @@ -317,7 +329,7 @@ public class SlingServletResolver if (scriptName.charAt(0) == '/') { final String scriptPath = ResourceUtil.normalize(scriptName); if ( this.isPathAllowed(scriptPath) ) { - final Resource res = this.scriptResolver.getResource(scriptPath); + final Resource res = resolver.getResource(scriptPath); if (res != null) { servlet = res.adaptTo(Servlet.class); } @@ -330,7 +342,7 @@ public class SlingServletResolver if ( servlet == null ) { // the resource type is not absolute, so lets go for the deep search final NamedScriptResourceCollector locationUtil = NamedScriptResourceCollector.create(scriptName, resource, this.executionPaths); - servlet = getServletInternal(locationUtil, null); + servlet = getServletInternal(locationUtil, null, resolver); if (LOGGER.isDebugEnabled() && servlet != null) { LOGGER.debug("resolveServlet returns servlet {}", RequestUtil.getServletName(servlet)); @@ -407,6 +419,7 @@ public class SlingServletResolver String timerName = "handleError:status=" + status; tracker.startTimer(timerName); + final ResourceResolver scriptResolver = this.getScriptResourceResolver(); try { // find the error handler component Resource resource = getErrorResource(request); @@ -415,11 +428,11 @@ public class SlingServletResolver ResourceCollector locationUtil = new ResourceCollector(String.valueOf(status), ServletResolverConstants.ERROR_HANDLER_PATH, resource, this.executionPaths); - Servlet servlet = getServletInternal(locationUtil, request); + Servlet servlet = getServletInternal(locationUtil, request, scriptResolver); // fall back to default servlet if none if (servlet == null) { - servlet = getDefaultErrorServlet(request, resource); + servlet = getDefaultErrorServlet(request, resource, scriptResolver); } // set the message properties @@ -439,9 +452,7 @@ public class SlingServletResolver handleError(servlet, request, response); } finally { - tracker.logTimer(timerName, "Error handler finished"); - } } @@ -461,6 +472,7 @@ public class SlingServletResolver String timerName = "handleError:throwable=" + throwable.getClass().getName(); tracker.startTimer(timerName); + final ResourceResolver scriptResolver = this.getScriptResourceResolver(); try { // find the error handler component Servlet servlet = null; @@ -472,14 +484,14 @@ public class SlingServletResolver ResourceCollector locationUtil = new ResourceCollector(tClass.getSimpleName(), ServletResolverConstants.ERROR_HANDLER_PATH, resource, this.executionPaths); - servlet = getServletInternal(locationUtil, request); + servlet = getServletInternal(locationUtil, request, scriptResolver); // go to the base class tClass = tClass.getSuperclass(); } if (servlet == null) { - servlet = getDefaultErrorServlet(request, resource); + servlet = getDefaultErrorServlet(request, resource, scriptResolver); } // set the message properties @@ -492,14 +504,45 @@ public class SlingServletResolver handleError(servlet, request, response); } finally { - tracker.logTimer(timerName, "Error handler finished"); - } } // ---------- internal helper --------------------------------------------- + private ResourceResolver getScriptResourceResolver() { + ResourceResolver scriptResolver = this.perThreadScriptResolver.get(); + if ( scriptResolver == null ) { + // no per thread, let's use the shared one + synchronized ( this.sharedScriptResolver ) { + this.sharedScriptResolver.refresh(); + } + scriptResolver = this.sharedScriptResolver; + } + return scriptResolver; + } + + private final ThreadLocal<ResourceResolver> perThreadScriptResolver = new ThreadLocal<ResourceResolver>(); + + /** + * @see org.apache.sling.api.request.SlingRequestListener#onEvent(org.apache.sling.api.request.SlingRequestEvent) + */ + public void onEvent(final SlingRequestEvent event) { + if ( event.getType() == SlingRequestEvent.EventType.EVENT_INIT ) { + try { + this.perThreadScriptResolver.set(this.sharedScriptResolver.clone(null)); + } catch (final LoginException e) { + LOGGER.error("Unable to create new script resolver clone", e); + } + } else if ( event.getType() == SlingRequestEvent.EventType.EVENT_DESTROY ) { + final ResourceResolver resolver = this.perThreadScriptResolver.get(); + if ( resolver != null ) { + this.perThreadScriptResolver.remove(); + resolver.close(); + } + } + } + /** * Returns the resource of the given request to be used as the basis for * error handling. If the resource has not yet been set in the request @@ -523,7 +566,8 @@ public class SlingServletResolver * using the provided ResourceResolver */ private Servlet resolveServletInternal(final SlingHttpServletRequest request, - final String type) { + final String type, + final ResourceResolver resolver) { Servlet servlet = null; // first check whether the type of a resource is the absolute @@ -531,7 +575,7 @@ public class SlingServletResolver if (type.charAt(0) == '/') { String scriptPath = ResourceUtil.normalize(type); if ( this.isPathAllowed(scriptPath) ) { - final Resource res = this.scriptResolver.getResource(scriptPath); + final Resource res = resolver.getResource(scriptPath); if (res != null) { servlet = res.adaptTo(Servlet.class); } @@ -549,7 +593,7 @@ public class SlingServletResolver if ( servlet == null ) { // the resource type is not absolute, so lets go for the deep search final ResourceCollector locationUtil = ResourceCollector.create(request, this.executionPaths, this.defaultExtensions); - servlet = getServletInternal(locationUtil, request); + servlet = getServletInternal(locationUtil, request, resolver); if (servlet != null && LOGGER.isDebugEnabled()) { LOGGER.debug("getServlet returns servlet {}", RequestUtil.getServletName(servlet)); @@ -580,7 +624,8 @@ public class SlingServletResolver * such servlet willing to handle the request could be found. */ private Servlet getServletInternal(final AbstractResourceCollector locationUtil, - final SlingHttpServletRequest request) { + final SlingHttpServletRequest request, + final ResourceResolver resolver) { final Servlet scriptServlet = (this.cache != null ? this.cache.get(locationUtil) : null); if (scriptServlet != null) { if ( LOGGER.isDebugEnabled() ) { @@ -589,7 +634,7 @@ public class SlingServletResolver return scriptServlet; } - final Collection<Resource> candidates = locationUtil.getServlets(this.scriptResolver); + final Collection<Resource> candidates = locationUtil.getServlets(resolver); if (LOGGER.isDebugEnabled()) { if (candidates.isEmpty()) { @@ -676,7 +721,8 @@ public class SlingServletResolver */ private Servlet getDefaultErrorServlet( final SlingHttpServletRequest request, - final Resource resource) { + final Resource resource, + final ResourceResolver resolver) { // find a default error handler according to the resource type // tree of the given resource @@ -684,7 +730,7 @@ public class SlingServletResolver ServletResolverConstants.DEFAULT_ERROR_HANDLER_NAME, ServletResolverConstants.ERROR_HANDLER_PATH, resource, this.executionPaths); - final Servlet servlet = getServletInternal(locationUtil, request); + final Servlet servlet = getServletInternal(locationUtil, request, resolver); if (servlet != null) { return servlet; } @@ -763,11 +809,10 @@ public class SlingServletResolver refs = new ArrayList<ServiceReference>(pendingServlets); pendingServlets.clear(); - this.scriptResolver = + this.sharedScriptResolver = resourceResolverFactory.getAdministrativeResourceResolver(this.createAuthenticationInfo(context.getProperties())); - - servletResourceProviderFactory = new ServletResourceProviderFactory(servletRoot, - this.scriptResolver.getSearchPath()); + this.searchPaths = this.sharedScriptResolver.getSearchPath(); + servletResourceProviderFactory = new ServletResourceProviderFactory(servletRoot, this.searchPaths); // register servlets immediately from now on this.context = context; @@ -855,9 +900,9 @@ public class SlingServletResolver } } - if (this.scriptResolver != null) { - this.scriptResolver.close(); - this.scriptResolver = null; + if (this.sharedScriptResolver != null) { + this.sharedScriptResolver.close(); + this.sharedScriptResolver = null; } this.cache = null; @@ -998,21 +1043,19 @@ public class SlingServletResolver // bindings values provide factory added or removed: we always flush flushCache = true; } else { - // this is a resource event + // this is a resource or resource provider event // if the path of the event is a sub path of a search path // we flush the whole cache - String path = (String) event.getProperty(SlingConstants.PROPERTY_PATH); - if (path.contains(":")) { - path = path.substring(path.indexOf(":") + 1); - } - final String[] searchPaths = this.scriptResolver.getSearchPath(); - int index = 0; - while (!flushCache && index < searchPaths.length) { - if (path.startsWith(searchPaths[index])) { - flushCache = true; + final String path = (String) event.getProperty(SlingConstants.PROPERTY_PATH); + if ( path != null ) { + int index = 0; + while (!flushCache && index < searchPaths.length) { + if (path.startsWith(this.searchPaths[index])) { + flushCache = true; + } + index++; } - index++; } } if (flushCache) { Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java?rev=1575311&r1=1575310&r2=1575311&view=diff ============================================================================== --- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java (original) +++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java Fri Mar 7 16:18:09 2014 @@ -64,7 +64,7 @@ public abstract class AbstractResourceCo this.executionPaths = executionPaths; } - public final Collection<Resource> getServlets(ResourceResolver resolver) { + public final Collection<Resource> getServlets(final ResourceResolver resolver) { final SortedSet<Resource> resources = new TreeSet<Resource>(); final Iterator<String> locations = new LocationIterator(resourceType, resourceSuperType, 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=1575311&r1=1575310&r2=1575311&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 Fri Mar 7 16:18:09 2014 @@ -240,7 +240,7 @@ public class LocationIterator implements } else { // if the path is relative we use the search paths - for(final String searchPath : resourceResolver.getSearchPath()) { + for(final String searchPath : this.searchPath) { final String candidatePath = searchPath + rtPath; final Resource rtResource = resourceResolver.getResource(candidatePath); if ( rtResource != null && rtResource.getResourceSuperType() != null ) { Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java?rev=1575311&r1=1575310&r2=1575311&view=diff ============================================================================== --- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java (original) +++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java Fri Mar 7 16:18:09 2014 @@ -83,6 +83,16 @@ public class SlingServletResolverTest { public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) { return null; } + + @Override + public ResourceResolver clone(Map<String, Object> authenticationInfo) + throws LoginException { + throw new LoginException("MockResourceResolver can't be cloned - excepted for this test!"); + } + + public void refresh() { + // nothing to do + } }; mockResourceResolver.setSearchPath("/"); 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=1575311&r1=1575310&r2=1575311&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 Fri Mar 7 16:18:09 2014 @@ -26,15 +26,28 @@ import org.apache.sling.commons.testing. public class LocationIteratorTest extends HelperTestBase { + private LocationIterator getLocationIterator(final String resourceType, + final String resourceSuperType) { + return this.getLocationIterator(resourceType, resourceSuperType, DEFAULT_SERVLET_NAME); + } + + private LocationIterator getLocationIterator(final String resourceType, + final String resourceSuperType, + final String baseResourceType) { + final LocationIterator li = new LocationIterator(resourceType, + resourceSuperType, + baseResourceType, + this.resourceResolver); + return li; + } + public void testSearchPathEmpty() { // expect path gets { "/" } resourceResolver.setSearchPath((String[]) null); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -53,10 +66,8 @@ public class LocationIteratorTest extend resourceResolver.setSearchPath(root0); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /apps/foo/bar assertTrue(li.hasNext()); @@ -76,10 +87,8 @@ public class LocationIteratorTest extend resourceResolver.setSearchPath(root0, root1); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /apps/foo/bar assertTrue(li.hasNext()); @@ -111,10 +120,8 @@ public class LocationIteratorTest extend resource.setResourceType(resourceType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -138,10 +145,8 @@ public class LocationIteratorTest extend resource.setResourceType(resourceType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -166,10 +171,8 @@ public class LocationIteratorTest extend resource.setResourceType(resourceType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -197,10 +200,8 @@ public class LocationIteratorTest extend resource.setResourceSuperType(resourceSuperType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -228,10 +229,8 @@ public class LocationIteratorTest extend resource.setResourceSuperType(resourceSuperType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /apps/foo/bar assertTrue(li.hasNext()); @@ -260,10 +259,8 @@ public class LocationIteratorTest extend resource.setResourceSuperType(resourceSuperType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /apps/foo/bar assertTrue(li.hasNext()); @@ -308,10 +305,8 @@ public class LocationIteratorTest extend resource.setResourceSuperType(resourceSuperType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -344,10 +339,8 @@ public class LocationIteratorTest extend resource.setResourceSuperType(resourceSuperType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -381,10 +374,8 @@ public class LocationIteratorTest extend resource.setResourceSuperType(resourceSuperType); final Resource r = request.getResource(); - LocationIterator li = new LocationIterator(r.getResourceType(), - r.getResourceSuperType(), - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(r.getResourceType(), + r.getResourceSuperType()); // 1. /foo/bar assertTrue(li.hasNext()); @@ -414,10 +405,9 @@ public class LocationIteratorTest extend String root0 = "/apps"; String root1 = "/libs"; resourceResolver.setSearchPath(root0, root1); - LocationIterator li = new LocationIterator("", + LocationIterator li = getLocationIterator("", null, - "", - resourceResolver); + ""); assertTrue(li.hasNext()); assertEquals("/apps/", li.next()); assertTrue(li.hasNext()); @@ -429,10 +419,8 @@ public class LocationIteratorTest extend String root0 = "/apps"; String root1 = "/libs"; resourceResolver.setSearchPath(root0, root1); - LocationIterator li = new LocationIterator("a/b", - null, - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator("a/b", + null); assertTrue(li.hasNext()); assertEquals(root0 + "/a/b", li.next()); assertTrue(li.hasNext()); @@ -448,10 +436,8 @@ public class LocationIteratorTest extend String root0 = "/apps"; String root1 = "/libs"; resourceResolver.setSearchPath(root0, root1); - LocationIterator li = new LocationIterator("a/b", - "c/d", - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator("a/b", + "c/d"); assertTrue(li.hasNext()); assertEquals(root0 + "/a/b", li.next()); assertTrue(li.hasNext()); @@ -485,10 +471,8 @@ public class LocationIteratorTest extend resourceType, resourceType); resourceResolver.addResource(resource3); - LocationIterator li = new LocationIterator(resourceType, - resourceSuperType, - DEFAULT_SERVLET_NAME, - resourceResolver); + LocationIterator li = getLocationIterator(resourceType, + resourceSuperType); // 1. /libs/foo/bar assertTrue(li.hasNext()); Modified: sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java?rev=1575311&r1=1575310&r2=1575311&view=diff ============================================================================== --- sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java (original) +++ sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java Fri Mar 7 16:18:09 2014 @@ -271,7 +271,7 @@ public class ResourceCollectorTest exten } ResourceCollector lu = ResourceCollector.create(request, null, new String[] {"html"}); - Collection<Resource> res = lu.getServlets(request.getResource().getResourceResolver()); + Collection<Resource> res = lu.getServlets(request.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=1575311&r1=1575310&r2=1575311&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 Fri Mar 7 16:18:09 2014 @@ -69,7 +69,7 @@ public class ScriptSelectionTest extends // Create mock request and get scripts from ResourceCollector final MockSlingHttpServletRequest req = makeRequest(method, selectors, extension); final ResourceCollector u = ResourceCollector.create(req, null, new String[] {"html"}); - final Collection<Resource> s = u.getServlets(req.getResource().getResourceResolver()); + final Collection<Resource> s = u.getServlets(req.getResourceResolver()); if(expectedScript == null) { assertFalse("No script must be found", s.iterator().hasNext());