Author: cziegeler
Date: Tue Feb  2 20:58:20 2016
New Revision: 1728210

URL: http://svn.apache.org/viewvc?rev=1728210&view=rev
Log:
SLING-5470 : Resource providers might not be closed

Added:
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
   (with props)
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java
   (with props)
Modified:
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
    
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java

Modified: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java?rev=1728210&r1=1728209&r2=1728210&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
 Tue Feb  2 20:58:20 2016
@@ -53,6 +53,7 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.resourceresolver.impl.helper.RedirectResource;
 import org.apache.sling.resourceresolver.impl.helper.ResourceIteratorDecorator;
 import org.apache.sling.resourceresolver.impl.helper.ResourcePathIterator;
+import org.apache.sling.resourceresolver.impl.helper.ResourceResolverContext;
 import org.apache.sling.resourceresolver.impl.helper.ResourceResolverControl;
 import org.apache.sling.resourceresolver.impl.helper.StarResource;
 import org.apache.sling.resourceresolver.impl.helper.URI;
@@ -97,9 +98,12 @@ public class ResourceResolverImpl extend
     /** The factory which created this resource resolver. */
     private final CommonResourceResolverFactoryImpl factory;
 
-    /** Resource resolver context. */
+    /** Resource resolver control. */
     private final ResourceResolverControl control;
 
+    /** Resource resolver context. */
+    private final ResourceResolverContext context;
+
     private volatile Exception closedResolverException;
 
     public ResourceResolverImpl(final CommonResourceResolverFactoryImpl 
factory, final boolean isAdmin, final Map<String, Object> authenticationInfo) 
throws LoginException {
@@ -110,6 +114,7 @@ public class ResourceResolverImpl extend
         this.factory = factory;
         this.control = createControl(storage, authenticationInfo, isAdmin);
         this.factory.register(this, control);
+        this.context = new ResourceResolverContext(this);
     }
 
     /**
@@ -129,12 +134,13 @@ public class ResourceResolverImpl extend
         }
         this.control = 
createControl(factory.getResourceProviderTracker().getResourceProviderStorage(),
 authInfo, resolver.control.isAdmin());
         this.factory.register(this, control);
+        this.context = new ResourceResolverContext(this);
     }
 
     private ResourceResolverControl createControl(ResourceProviderStorage 
storage, Map<String, Object> authenticationInfo, final boolean isAdmin)
     throws LoginException {
         final ResourceProviderAuthenticator authenticator = new 
ResourceProviderAuthenticator(this, authenticationInfo, 
this.factory.getResourceAccessSecurityTracker());
-        final ResourceResolverControl provider = new 
ResourceResolverControl(isAdmin, authenticationInfo, storage, this, 
authenticator);
+        final ResourceResolverControl provider = new 
ResourceResolverControl(isAdmin, authenticationInfo, storage, authenticator);
         authenticator.authenticateAll(storage.getAuthRequiredHandlers(), 
provider);
         return provider;
     }
@@ -701,7 +707,7 @@ public class ResourceResolverImpl extend
         if (parent instanceof ResourceWrapper) {
             return listChildren(((ResourceWrapper) parent).getResource());
         }
-        return new 
ResourceIteratorDecorator(this.factory.getResourceDecoratorTracker(), 
this.control.listChildren(parent));
+        return new 
ResourceIteratorDecorator(this.factory.getResourceDecoratorTracker(), 
this.control.listChildren(this.context, parent));
     }
 
     /**
@@ -1030,7 +1036,7 @@ public class ResourceResolverImpl extend
             parentToUse = null;
         }
 
-        final Resource resource = this.control.getResource(path, parentToUse, 
parameters, isResolve);
+        final Resource resource = this.control.getResource(this.context, path, 
parentToUse, parameters, isResolve);
         if (resource != null) {
             resource.getResourceMetadata().setResolutionPath(path);
             resource.getResourceMetadata().setParameterMap(parameters);
@@ -1181,7 +1187,7 @@ public class ResourceResolverImpl extend
                 throw new IllegalArgumentException("Can't create child on a 
synthetic root");
             }
         }
-        final Resource rsrc = this.control.create(path, properties);
+        final Resource rsrc = this.control.create(this.context, path, 
properties);
         return this.factory.getResourceDecoratorTracker().decorate(rsrc);
     }
 
@@ -1282,16 +1288,16 @@ public class ResourceResolverImpl extend
 
     @Override
     public Resource getParent(final Resource child) {
-        return this.control.getParent(child);
+        return this.control.getParent(this.context, child);
     }
 
     @Override
     public Resource copy(final String srcAbsPath, final String destAbsPath) 
throws PersistenceException {
-        return this.control.copy(srcAbsPath, destAbsPath);
+        return this.control.copy(this.context, srcAbsPath, destAbsPath);
     }
 
     @Override
     public Resource move(final String srcAbsPath, final String destAbsPath) 
throws PersistenceException {
-        return this.control.move(srcAbsPath, destAbsPath);
+        return this.control.move(this.context, srcAbsPath, destAbsPath);
     }
 }

Added: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java?rev=1728210&view=auto
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
 (added)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
 Tue Feb  2 20:58:20 2016
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The SF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.sling.resourceresolver.impl.helper;
+
+import org.apache.sling.api.resource.ResourceResolver;
+import 
org.apache.sling.resourceresolver.impl.providers.stateful.ResolveContextManager;
+
+/**
+ * The resource resolver context.
+ */
+public class ResourceResolverContext {
+
+    private final ResourceResolver resolver;
+
+    private final ResolveContextManager resolveContextManager;
+
+    public ResourceResolverContext(final ResourceResolver resolver) {
+        this.resolver = resolver;
+        this.resolveContextManager = new ResolveContextManager(resolver);
+    }
+
+    public ResourceResolver getResourceResolver() {
+        return this.resolver;
+    }
+
+    public ResolveContextManager getResolveContextManager() {
+        return this.resolveContextManager;
+    }
+}

Propchange: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Modified: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java?rev=1728210&r1=1728209&r2=1728210&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
 Tue Feb  2 20:58:20 2016
@@ -77,8 +77,6 @@ public class ResourceResolverControl {
 
     private final ResourceProviderStorage storage;
 
-    private final ResourceResolver resolver;
-
     private final ResourceProviderAuthenticator authenticator;
 
     private final Map<String, Object> authenticationInfo;
@@ -89,12 +87,10 @@ public class ResourceResolverControl {
     public ResourceResolverControl(final boolean isAdmin,
             final Map<String, Object> authenticationInfo,
             ResourceProviderStorage storage,
-            ResourceResolver resolver,
             ResourceProviderAuthenticator authenticator) {
         this.authenticationInfo = authenticationInfo;
         this.isAdmin = isAdmin;
         this.storage = storage;
-        this.resolver = resolver;
         this.authenticator = authenticator;
     }
 
@@ -147,7 +143,7 @@ public class ResourceResolverControl {
      * resource provider returns parent for this child. See
      * {@link #getResource(String, Resource, Map, boolean)} for more details
      */
-    public Resource getParent(Resource child) {
+    public Resource getParent(final ResourceResolverContext context, final 
Resource child) {
         final String path = child.getPath();
         try {
             final StatefulResourceProvider provider = 
getBestMatchingProvider(path);
@@ -162,7 +158,7 @@ public class ResourceResolverControl {
         }
         final String parentPath = ResourceUtil.getParent(path);
         if (parentPath != null && isIntermediatePath(parentPath)) {
-            return new SyntheticResource(resolver, parentPath, 
ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
+            return new SyntheticResource(context.getResourceResolver(), 
parentPath, ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
         }
         return null;
     }
@@ -181,7 +177,9 @@ public class ResourceResolverControl {
      * The same behaviour occurs in {@link #getParent(Resource)} and
      * {@link #listChildren(Resource)}.
      */
-    public Resource getResource(String path, Resource parent, Map<String, 
String> parameters, boolean isResolve) {
+    public Resource getResource(final ResourceResolverContext context,
+            String path, Resource parent, Map<String, String> parameters,
+            boolean isResolve) {
         if (path == null || path.length() == 0 || path.charAt(0) != '/') {
             logger.debug("Not absolute {}", path);
             return null; // path must be absolute
@@ -207,7 +205,7 @@ public class ResourceResolverControl {
         //              to get the parent resource for resource traversal.
         if (!isResolve && isIntermediatePath(path)) {
             logger.debug("Resolved Synthetic {}", path);
-            return new SyntheticResource(resolver, path, 
ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
+            return new SyntheticResource(context.getResourceResolver(), path, 
ResourceProvider.RESOURCE_TYPE_SYNTHETIC);
         }
         logger.debug("Resource null {} ", path);
         return null;
@@ -226,7 +224,7 @@ public class ResourceResolverControl {
      * invocation on the result.
      */
     @SuppressWarnings("unchecked")
-    public Iterator<Resource> listChildren(final Resource parent) {
+    public Iterator<Resource> listChildren(final ResourceResolverContext 
context, final Resource parent) {
         final String parentPath = parent.getPath();
 
         // 3 sources are combined: children of the provider which owns 
'parent',
@@ -264,7 +262,7 @@ public class ResourceResolverControl {
                 pathBuilder.append(name);
                 final String childPath = pathBuilder.toString();
                 if (handler == null) {
-                    syntheticList.add(new SyntheticResource(resolver, 
childPath, ResourceProvider.RESOURCE_TYPE_SYNTHETIC));
+                    syntheticList.add(new 
SyntheticResource(context.getResourceResolver(), childPath, 
ResourceProvider.RESOURCE_TYPE_SYNTHETIC));
                 } else {
                     Resource rsrc = null;
                     try {
@@ -278,7 +276,7 @@ public class ResourceResolverControl {
                         // if there is a child provider underneath, we need to 
create a synthetic resource
                         // otherwise we need to make sure that no one else is 
providing this child
                         if ( entry.getValue().getChildren().isEmpty() ) {
-                            syntheticList.add(new SyntheticResource(resolver, 
childPath, ResourceProvider.RESOURCE_TYPE_SYNTHETIC));
+                            syntheticList.add(new 
SyntheticResource(context.getResourceResolver(), childPath, 
ResourceProvider.RESOURCE_TYPE_SYNTHETIC));
                         } else {
                             visitedNames.add(name);
                         }
@@ -336,11 +334,13 @@ public class ResourceResolverControl {
      *             If creation fails
      * @return The new resource
      */
-    public Resource create(String path, Map<String, Object> properties) throws 
PersistenceException {
+    public Resource create(final ResourceResolverContext context,
+            final String path, final Map<String, Object> properties)
+    throws PersistenceException {
         try {
             final StatefulResourceProvider provider = 
getBestMatchingModifiableProvider(path);
             if ( provider != null ) {
-                final Resource creationResultResource = 
provider.create(resolver, path, properties);
+                final Resource creationResultResource = 
provider.create(context.getResourceResolver(), path, properties);
                 if (creationResultResource != null) {
                     return creationResultResource;
                 }
@@ -531,12 +531,12 @@ public class ResourceResolverControl {
         return hasMoreProviders;
     }
 
-    private void copy(final Resource src, final String dstPath, final 
List<Resource> newNodes) throws PersistenceException {
+    private void copy(final ResourceResolverContext context, final Resource 
src, final String dstPath, final List<Resource> newNodes) throws 
PersistenceException {
         final ValueMap vm = src.getValueMap();
         final String createPath = new 
PathBuilder(dstPath).append(src.getName()).toString();
-        newNodes.add(this.create(createPath, vm));
+        newNodes.add(this.create(context, createPath, vm));
         for(final Resource c : src.getChildren()) {
-            copy(c, createPath, newNodes);
+            copy(context, c, createPath, newNodes);
         }
     }
 
@@ -545,17 +545,18 @@ public class ResourceResolverControl {
      * {@link StatefulResourceProvider#copy(String, String)} method on it.
      * Returns false if there's no such provider.
      */
-    public Resource copy(final String srcAbsPath, final String destAbsPath) 
throws PersistenceException {
+    public Resource copy(final ResourceResolverContext context,
+            final String srcAbsPath, final String destAbsPath) throws 
PersistenceException {
         final StatefulResourceProvider optimizedSourceProvider = 
checkSourceAndDest(srcAbsPath, destAbsPath);
         if ( optimizedSourceProvider != null && 
optimizedSourceProvider.copy(srcAbsPath, destAbsPath) ) {
-            return this.getResource(destAbsPath + '/' + 
ResourceUtil.getName(srcAbsPath), null, null, false);
+            return this.getResource(context, destAbsPath + '/' + 
ResourceUtil.getName(srcAbsPath), null, null, false);
         }
 
-        final Resource srcResource = this.getResource(srcAbsPath, null, null, 
false);
+        final Resource srcResource = this.getResource(context, srcAbsPath, 
null, null, false);
         final List<Resource> newResources = new ArrayList<Resource>();
         boolean rollback = true;
         try {
-            this.copy(srcResource, destAbsPath, newResources);
+            this.copy(context, srcResource, destAbsPath, newResources);
             rollback = false;
             return newResources.get(0);
         } finally {
@@ -572,16 +573,17 @@ public class ResourceResolverControl {
      * {@link StatefulResourceProvider#move(String, String)} method on it.
      * Returns false if there's no such provider.
      */
-    public Resource move(String srcAbsPath, String destAbsPath) throws 
PersistenceException {
+    public Resource move(final ResourceResolverContext context,
+            String srcAbsPath, String destAbsPath) throws PersistenceException 
{
         final StatefulResourceProvider optimizedSourceProvider = 
checkSourceAndDest(srcAbsPath, destAbsPath);
         if ( optimizedSourceProvider != null && 
optimizedSourceProvider.move(srcAbsPath, destAbsPath) ) {
-            return this.getResource(destAbsPath + '/' + 
ResourceUtil.getName(srcAbsPath), null, null, false);
+            return this.getResource(context, destAbsPath + '/' + 
ResourceUtil.getName(srcAbsPath), null, null, false);
         }
-        final Resource srcResource = this.getResource(srcAbsPath, null, null, 
false);
+        final Resource srcResource = this.getResource(context, srcAbsPath, 
null, null, false);
         final List<Resource> newResources = new ArrayList<Resource>();
         boolean rollback = true;
         try {
-            this.copy(srcResource, destAbsPath, newResources);
+            this.copy(context, srcResource, destAbsPath, newResources);
             this.delete(srcResource);
             rollback = false;
             return newResources.get(0);

Added: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java?rev=1728210&view=auto
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java
 (added)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java
 Tue Feb  2 20:58:20 2016
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The SF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.sling.resourceresolver.impl.providers.stateful;
+
+import java.util.IdentityHashMap;
+import java.util.Map;
+
+import org.apache.sling.api.resource.ResourceResolver;
+import 
org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
+import org.apache.sling.spi.resource.provider.ResolverContext;
+
+public class ResolveContextManager {
+
+    private final Map<ResourceProviderHandler, ResolverContext<Object>> 
contextMap;
+
+    public ResolveContextManager(final ResourceResolver resolver) {
+        this.contextMap = new IdentityHashMap<ResourceProviderHandler, 
ResolverContext<Object>>();
+    }
+
+    public ResolverContext<Object> getResolveContext(final 
ResourceProviderHandler handler) {
+        return this.contextMap.get(handler);
+    }
+}

Propchange: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResolveContextManager.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Modified: 
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java?rev=1728210&r1=1728209&r2=1728210&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
 Tue Feb  2 20:58:20 2016
@@ -82,6 +82,7 @@ public class ResourceResolverControlTest
     private ResourceProvider<Object> rootProvider;
     private Resource subProviderResource;
     private Resource somethingResource;
+    private ResourceResolverContext context;
 
     @Before
     public void prepare() throws Exception {
@@ -141,7 +142,8 @@ public class ResourceResolverControlTest
         ResourceProviderStorage storage = new 
ResourceProviderStorage(handlers);
         authenticator = new ResourceProviderAuthenticator(rr, authInfo, 
securityTracker);
 
-        crp = new ResourceResolverControl(false, authInfo, storage, rr, 
authenticator);
+        crp = new ResourceResolverControl(false, authInfo, storage, 
authenticator);
+        context = new ResourceResolverContext(rr);
     }
 
     /**
@@ -196,7 +198,7 @@ public class ResourceResolverControlTest
     @Test
     public void getResource_synthetic() {
 
-        Resource resource = crp.getResource("/some", null, null, false);
+        Resource resource = crp.getResource(context, "/some", null, null, 
false);
 
         assertTrue("Not a syntethic resource : " + resource, 
ResourceUtil.isSyntheticResource(resource));
     }
@@ -206,7 +208,7 @@ public class ResourceResolverControlTest
      */
     @Test
     public void getResource_missing() {
-        assertThat(crp.getResource("/nothing", null, null, false), 
nullValue());
+        assertThat(crp.getResource(context, "/nothing", null, null, false), 
nullValue());
     }
 
     /**
@@ -214,8 +216,8 @@ public class ResourceResolverControlTest
      */
     @Test
     public void getResource_found() {
-        assertThat(crp.getResource("/something", null, null, false), 
not(nullValue()));
-        assertThat(crp.getResource("/some/path/object", null, null, false), 
not(nullValue()));
+        assertThat(crp.getResource(context, "/something", null, null, false), 
not(nullValue()));
+        assertThat(crp.getResource(context, "/some/path/object", null, null, 
false), not(nullValue()));
     }
 
 
@@ -224,7 +226,7 @@ public class ResourceResolverControlTest
      */
     @Test
     public void getParent_found() {
-        Resource parent = crp.getParent(somethingResource);
+        Resource parent = crp.getParent(context, somethingResource);
         assertThat(parent, notNullValue());
         assertThat("parent.path", parent.getPath(), equalTo("/"));
     }
@@ -236,7 +238,7 @@ public class ResourceResolverControlTest
      */
     @Test
     public void getParent_synthetic() {
-        Resource parent = crp.getParent(subProviderResource);
+        Resource parent = crp.getParent(context, subProviderResource);
         assertThat(parent, notNullValue());
         assertTrue("parent is a synthetic resource", 
ResourceUtil.isSyntheticResource(parent));
     }
@@ -246,8 +248,8 @@ public class ResourceResolverControlTest
      */
     @Test
     public void listChildren_root() {
-        Resource root = crp.getResource("/", null, null, false);
-        Iterator<Resource> children = crp.listChildren(root);
+        Resource root = crp.getResource(context, "/", null, null, false);
+        Iterator<Resource> children = crp.listChildren(context, root);
 
         Map<String, Resource> all = new HashMap<String, Resource>();
         while ( children.hasNext() ) {
@@ -266,8 +268,8 @@ public class ResourceResolverControlTest
     @Test
     public void listChildren_lowerLevel() {
 
-        Resource root = crp.getResource("/some", null, null, false);
-        Iterator<Resource> children = crp.listChildren(root);
+        Resource root = crp.getResource(context, "/some", null, null, false);
+        Iterator<Resource> children = crp.listChildren(context, root);
         Map<String, Resource> all = new HashMap<String, Resource>();
 
         while ( children.hasNext() ) {
@@ -293,7 +295,7 @@ public class ResourceResolverControlTest
         configureResourceAt(subProvider, "/some/path/new/object");
         configureResourceAt(subProvider, "/some/path/new");
 
-        Resource resource = crp.copy("/some/path/object", "/some/path/new");
+        Resource resource = crp.copy(context, "/some/path/object", 
"/some/path/new");
 
 
         assertThat(resource, not(nullValue()));
@@ -311,7 +313,7 @@ public class ResourceResolverControlTest
         when(rootProvider.create(mockContext(), Mockito.eq("/object"), 
Mockito.anyMap()))
             .thenReturn(newRes);
 
-        Resource resource = crp.copy("/some/path/object", "/");
+        Resource resource = crp.copy(context, "/some/path/object", "/");
 
         assertThat(resource, not(nullValue()));
     }
@@ -329,7 +331,7 @@ public class ResourceResolverControlTest
         configureResourceAt(subProvider, "/some/path/new/object");
         configureResourceAt(subProvider, "/some/path/new");
 
-        Resource resource = crp.move("/some/path/object", "/some/path/new");
+        Resource resource = crp.move(context, "/some/path/object", 
"/some/path/new");
 
         assertThat(resource, not(nullValue()));
     }
@@ -345,7 +347,7 @@ public class ResourceResolverControlTest
         Resource newRes = newMockResource("/object");
         when(rootProvider.create(mockContext(), Mockito.eq("/object"), 
Mockito.anyMap())).thenReturn(newRes);
 
-        Resource resource = crp.move("/some/path/object", "/");
+        Resource resource = crp.move(context, "/some/path/object", "/");
 
         assertThat(resource, not(nullValue()));
 


Reply via email to