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 2016/01/31 15:11:25 UTC

svn commit: r1727818 - in /sling/trunk/bundles/resourceresolver/src: main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ test/java/org/apache/sling/resourceresolver/impl/stateful/

Author: cziegeler
Date: Sun Jan 31 14:11:25 2016
New Revision: 1727818

URL: http://svn.apache.org/viewvc?rev=1727818&view=rev
Log:
Code cleanup, rename SecureResourceProvider, remove StatefulResourceProviderWrapper

Added:
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProviderDecorator.java
      - copied, changed from r1727817, sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProvider.java
    sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderDecoratorTest.java
      - copied, changed from r1727817, sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderTest.java
Removed:
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProvider.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/StatefulResourceProviderWrapper.java
    sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderTest.java
Modified:
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/CombinedResourceProvider.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/EmptyResourceProvider.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResourceProviderAuthenticator.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/StatefulResourceProvider.java

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java?rev=1727818&r1=1727817&r2=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/AuthenticatedResourceProvider.java Sun Jan 31 14:11:25 2016
@@ -215,7 +215,7 @@ public class AuthenticatedResourceProvid
     }
 
     @Override
-    public Resource create(String path, Map<String, Object> properties) throws PersistenceException {
+    public Resource create(final ResourceResolver resolver, String path, Map<String, Object> properties) throws PersistenceException {
         try {
             return rp.create(getContext(), path, properties);
         } catch (LoginException e) {
@@ -337,11 +337,6 @@ public class AuthenticatedResourceProvid
     }
 
     @Override
-    public ResourceResolver getResourceResolver() {
-        return resolver;
-    }
-
-    @Override
     public ResourceProvider<Object> getResourceProvider() {
         return rp;
     }

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/CombinedResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/CombinedResourceProvider.java?rev=1727818&r1=1727817&r2=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/CombinedResourceProvider.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/CombinedResourceProvider.java Sun Jan 31 14:11:25 2016
@@ -303,7 +303,7 @@ public class CombinedResourceProvider {
         try {
             final StatefulResourceProvider provider = getBestMatchingModifiableProvider(path);
             if ( provider != null ) {
-                final Resource creationResultResource = provider.create(path, properties);
+                final Resource creationResultResource = provider.create(resolver, path, properties);
                 if (creationResultResource != null) {
                     return creationResultResource;
                 }

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/EmptyResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/EmptyResourceProvider.java?rev=1727818&r1=1727817&r2=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/EmptyResourceProvider.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/EmptyResourceProvider.java Sun Jan 31 14:11:25 2016
@@ -33,11 +33,6 @@ public class EmptyResourceProvider imple
     public static final StatefulResourceProvider SINGLETON = new EmptyResourceProvider();
 
     @Override
-    public ResourceResolver getResourceResolver() {
-        return null;
-    }
-
-    @Override
     public void logout() {
     }
 
@@ -76,7 +71,7 @@ public class EmptyResourceProvider imple
     }
 
     @Override
-    public Resource create(String path, Map<String, Object> properties)
+    public Resource create(ResourceResolver resolver, String path, Map<String, Object> properties)
             throws PersistenceException {
         return null;
     }

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResourceProviderAuthenticator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResourceProviderAuthenticator.java?rev=1727818&r1=1727817&r2=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResourceProviderAuthenticator.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/ResourceProviderAuthenticator.java Sun Jan 31 14:11:25 2016
@@ -157,7 +157,7 @@ public class ResourceProviderAuthenticat
         StatefulResourceProvider authenticated;
         authenticated = new AuthenticatedResourceProvider(rp, handler.getInfo(), resolver, authInfo, combinedProvider);
         if (handler.getInfo().getUseResourceAccessSecurity()) {
-            authenticated = new SecureResourceProvider(authenticated, securityTracker);
+            authenticated = new SecureResourceProviderDecorator(authenticated, securityTracker);
         }
         return authenticated;
     }

Copied: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProviderDecorator.java (from r1727817, sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProvider.java)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProviderDecorator.java?p2=sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProviderDecorator.java&p1=sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProvider.java&r1=1727817&r2=1727818&rev=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProvider.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/SecureResourceProviderDecorator.java Sun Jan 31 14:11:25 2016
@@ -18,29 +18,36 @@
  */
 package org.apache.sling.resourceresolver.impl.providers.stateful;
 
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.security.ResourceAccessSecurity;
 import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
 import org.apache.sling.resourceresolver.impl.ResourceResolverImpl;
+import org.apache.sling.spi.resource.provider.ResolverContext;
+import org.apache.sling.spi.resource.provider.ResourceProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * This wrappers add the Sling security layer (see
+ * This wrapper adds the Sling security layer (see
  * {@link ResourceAccessSecurity}) to the underlying {@link ResourceProvider}.
  */
-public class SecureResourceProvider extends StatefulResourceProviderWrapper {
+public class SecureResourceProviderDecorator implements StatefulResourceProvider {
 
     private static final Logger logger = LoggerFactory.getLogger(ResourceResolverImpl.class);
 
+    private final StatefulResourceProvider rp;
+
     private final ResourceAccessSecurityTracker tracker;
 
-    public SecureResourceProvider(StatefulResourceProvider rp, ResourceAccessSecurityTracker tracker) {
-        super(rp);
+    public SecureResourceProviderDecorator(final StatefulResourceProvider rp, final ResourceAccessSecurityTracker tracker) {
+        this.rp = rp;
         if (tracker == null) {
             logger.warn("ResourceAccessSecurityTracker is null. Resource-level security will be disabled.");
         }
@@ -48,14 +55,104 @@ public class SecureResourceProvider exte
     }
 
     @Override
-    public Resource create(final String path, Map<String, Object> properties) throws PersistenceException {
+    public void logout() {
+        rp.logout();
+    }
+
+    @Override
+    public void refresh() {
+        rp.refresh();
+    }
+
+    @Override
+    public boolean isLive() {
+        return rp.isLive();
+    }
+
+    @Override
+    public Resource getParent(Resource child) {
+        return rp.getParent(child);
+    }
+
+    @Override
+    public Resource getResource(String path, Resource parent, Map<String, String> parameters, boolean isResolve) {
+        return rp.getResource(path, parent, parameters, isResolve);
+    }
+
+    @Override
+    public Iterator<Resource> listChildren(Resource parent) {
+        return rp.listChildren(parent);
+    }
+
+    @Override
+    public Collection<String> getAttributeNames() {
+        return rp.getAttributeNames();
+    }
+
+    @Override
+    public Object getAttribute(String name) {
+        return rp.getAttribute(name);
+    }
+
+    @Override
+    public void revert() {
+        rp.revert();
+    }
+
+    @Override
+    public void commit() throws PersistenceException {
+        rp.commit();
+    }
+
+    @Override
+    public boolean hasChanges() {
+        return rp.hasChanges();
+    }
+
+    @Override
+    public String[] getSupportedLanguages() {
+        return rp.getSupportedLanguages();
+    }
+
+    @Override
+    public Iterator<Map<String, Object>> queryResources(String query, String language) {
+        return rp.queryResources(query, language);
+    }
+
+    @Override
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        return rp.adaptTo(type);
+    }
+
+    @Override
+    public boolean copy(String srcAbsPath, String destAbsPath) throws PersistenceException {
+        return rp.copy(srcAbsPath, destAbsPath);
+    }
+
+    @Override
+    public boolean move(String srcAbsPath, String destAbsPath) throws PersistenceException {
+        return rp.move(srcAbsPath, destAbsPath);
+    }
+
+   @Override
+    public ResourceProvider<Object> getResourceProvider() {
+        return rp.getResourceProvider();
+    }
+
+    @Override
+    public ResolverContext<Object> getContext() throws LoginException {
+        return rp.getContext();
+    }
+
+    @Override
+    public Resource create(final ResourceResolver resolver, final String path, Map<String, Object> properties) throws PersistenceException {
         if (isAllowed(new SecurityTest() {
             @Override
             public boolean isAllowed(ResourceAccessSecurity security) {
-                return security.canCreate(path, getResourceResolver());
+                return security.canCreate(path, resolver);
             }
         })) {
-            return rp.create(path, properties);
+            return rp.create(resolver, path, properties);
         } else {
             return null;
         }

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/StatefulResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/StatefulResourceProvider.java?rev=1727818&r1=1727817&r2=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/StatefulResourceProvider.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/stateful/StatefulResourceProvider.java Sun Jan 31 14:11:25 2016
@@ -42,11 +42,6 @@ import org.apache.sling.spi.resource.pro
 public interface StatefulResourceProvider {
 
     /**
-     * Returns the resource resolver associated to this {@link StatefulResourceProvider}.
-     */
-    ResourceResolver getResourceResolver();
-
-    /**
      * @see ResourceProvider#logout(Object)
      */
     void logout();
@@ -93,7 +88,7 @@ public interface StatefulResourceProvide
     /**
      * @see ResourceProvider#create(org.apache.sling.spi.resource.provider.ResolveContext, String, Map)
      */
-    Resource create(final String path, final Map<String, Object> properties) throws PersistenceException;
+    Resource create(ResourceResolver resolver, String path, Map<String, Object> properties) throws PersistenceException;
 
     /**
      * @see ResourceProvider#delete(org.apache.sling.spi.resource.provider.ResolveContext, Resource)

Copied: sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderDecoratorTest.java (from r1727817, sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderTest.java)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderDecoratorTest.java?p2=sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderDecoratorTest.java&p1=sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderTest.java&r1=1727817&r2=1727818&rev=1727818&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderTest.java (original)
+++ sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/stateful/SecureResourceProviderDecoratorTest.java Sun Jan 31 14:11:25 2016
@@ -35,17 +35,17 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.security.ResourceAccessSecurity;
 import org.apache.sling.resourceresolver.impl.ResourceAccessSecurityTracker;
-import org.apache.sling.resourceresolver.impl.providers.stateful.SecureResourceProvider;
+import org.apache.sling.resourceresolver.impl.providers.stateful.SecureResourceProviderDecorator;
 import org.apache.sling.resourceresolver.impl.providers.stateful.StatefulResourceProvider;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-public class SecureResourceProviderTest {
-    
+public class SecureResourceProviderDecoratorTest {
+
     private ResourceAccessSecurity security;
     private ResourceResolver rr;
-    private SecureResourceProvider src;
+    private SecureResourceProviderDecorator src;
     private StatefulResourceProvider rp;
     private Resource first;
     private Resource second;
@@ -54,82 +54,80 @@ public class SecureResourceProviderTest
     public void prepare() throws PersistenceException {
 
         rr = mock(ResourceResolver.class);
-        
+
         security = mock(ResourceAccessSecurity.class);
         first = mock(Resource.class);
         second = mock(Resource.class);
-        
+
         when(security.getReadableResource(first)).thenReturn(first);
         when(security.getReadableResource(second)).thenReturn(null);
-        
+
         rp = mock(StatefulResourceProvider.class);
-        when(rp.create("/some/path", Collections.<String, Object> emptyMap())).thenReturn(mock(Resource.class));
+        when(rp.create(rr, "/some/path", Collections.<String, Object> emptyMap())).thenReturn(mock(Resource.class));
         when(rp.findResources("FIND ALL", "MockQueryLanguage")).thenReturn(Arrays.asList(first, second).iterator());
-        
-        when(rp.getResourceResolver()).thenReturn(rr);
-        
+
         ResourceAccessSecurityTracker securityTracker = new ResourceAccessSecurityTracker() {
             @Override
             public ResourceAccessSecurity getApplicationResourceAccessSecurity() {
                 return security;
             }
         };
-        
-        src = new SecureResourceProvider(rp, securityTracker);
-                
+
+        src = new SecureResourceProviderDecorator(rp, securityTracker);
+
     }
 
     @Test
     public void create_success() throws PersistenceException {
-        
+
         when(security.canCreate("/some/path", rr)).thenReturn(true);
-        
-        assertNotNull("expected resource to be created", src.create("/some/path", Collections.<String, Object> emptyMap()));
+
+        assertNotNull("expected resource to be created", src.create(rr, "/some/path", Collections.<String, Object> emptyMap()));
     }
-    
+
     @Test
     public void create_failure() throws PersistenceException {
-        
+
         when(security.canCreate("/some/path", rr)).thenReturn(false);
-        
-        assertNull("expected resource to not be created", src.create("/some/path", Collections.<String, Object> emptyMap()));
+
+        assertNull("expected resource to not be created", src.create(rr, "/some/path", Collections.<String, Object> emptyMap()));
     }
-    
+
     @Test
     public void delete_success() throws PersistenceException {
-        
+
         Resource toDelete = mock(Resource.class);
-        
+
         when(security.canDelete(toDelete)).thenReturn(true);
-        
+
         src.delete(toDelete);
-        
+
         verify(rp).delete(toDelete);
     }
-    
+
     @Test
     public void delete_failure() throws PersistenceException {
-        
+
         Resource toDelete = mock(Resource.class);
-        
+
         when(security.canDelete(toDelete)).thenReturn(false);
-        
+
         src.delete(toDelete);
-        
+
         Mockito.verifyZeroInteractions(rp);
     }
-    
+
     @Test
     public void find() {
-        
+
         Iterator<Resource> resources = src.findResources("FIND ALL", "MockQueryLanguage");
-        
+
         assertThat("resources should contain at least one item", resources.hasNext(), equalTo(true));
-        
+
         Resource resource = resources.next();
-        
+
         assertThat("unexpected resource found", resource, equalTo(first));
-        
+
         assertThat("resources should exactly at least one item", resources.hasNext(), equalTo(false));
     }
 }