You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:21:56 UTC

[sling-org-apache-sling-testing-resourceresolver-mock] 04/06: SLING-6765 resourceresolver-mock: Implement ResourceResolver.getParentResourceType

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.testing.resourceresolver-mock-1.1.18
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-resourceresolver-mock.git

commit 8d4b7aac3bb488c2edb7f6f4b24e17d8eabcdfd4
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Sat Apr 1 07:27:59 2017 +0000

    SLING-6765 resourceresolver-mock: Implement ResourceResolver.getParentResourceType
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/resourceresolver-mock@1789774 13f79535-47bb-0310-9956-ffa450edef68
---
 .../resourceresolver/MockResourceResolver.java     | 37 ++++++++++++++++------
 .../SlingCrudResourceResolverTest.java             | 18 +++++++++++
 2 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
index fe5bbb4..f826d1d 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
@@ -371,6 +371,33 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
         this.temporaryResources.put(path, props);
     }
 
+    @Override
+    public String getParentResourceType(Resource resource) {
+        String resourceSuperType = null;
+        if ( resource != null ) {
+            resourceSuperType = resource.getResourceSuperType();
+            if (resourceSuperType == null) {
+                resourceSuperType = this.getParentResourceType(resource.getResourceType());
+            }
+        }
+        return resourceSuperType;
+    }
+
+    @Override
+    public String getParentResourceType(String resourceType) {
+        // normalize resource type to a path string
+        final String rtPath = (resourceType == null ? null : ResourceUtil.resourceTypeToPath(resourceType));
+        // get the resource type resource and check its super type
+        String resourceSuperType = null;
+        if ( rtPath != null ) {
+            final Resource rtResource = getResource(rtPath);
+            if (rtResource != null) {
+                resourceSuperType = rtResource.getResourceSuperType();
+            }
+        }
+        return resourceSuperType;
+    }
+    
     // part of Resource API 2.6.0
     public boolean hasChildren(Resource resource) {
         return this.listChildren(resource).hasNext();
@@ -395,16 +422,6 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public String getParentResourceType(Resource resource) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getParentResourceType(String resourceType) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public Iterator<Resource> findResources(final String query, final String language) {
         throw new UnsupportedOperationException();
     }
diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java
index 3cd8007..a51a59b 100644
--- a/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java
+++ b/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java
@@ -38,6 +38,7 @@ import org.apache.jackrabbit.util.ISO8601;
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.ModifiableValueMap;
 import org.apache.sling.api.resource.NonExistingResource;
+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.resource.ResourceUtil;
@@ -289,4 +290,21 @@ public class SlingCrudResourceResolverTest {
         assertEquals("/non/existing/path", resource.getPath());
     }
     
+    @Test
+    public void testGetParentResourceType() throws PersistenceException {
+        Resource r1 = resourceResolver.create(testRoot, "resource1", ImmutableMap.<String, Object>of());
+        Resource r2 = resourceResolver.create(testRoot, "resource2", ImmutableMap.<String, Object>of(
+                "sling:resourceSuperType", testRoot.getPath() + "/resource1"));
+        Resource r3 = resourceResolver.create(testRoot, "resource3", ImmutableMap.<String, Object>of(
+                "sling:resourceType", testRoot.getPath() + "/resource2"));
+        Resource r4 = resourceResolver.create(testRoot, "resource4", ImmutableMap.<String, Object>of(
+                "sling:resourceSuperType", testRoot.getPath() + "/resource2"));
+        
+        assertNull(resourceResolver.getParentResourceType(r1));
+        assertEquals(r1.getPath(), resourceResolver.getParentResourceType(r2));
+        assertEquals(r1.getPath(), resourceResolver.getParentResourceType(r3));
+        assertEquals(r2.getPath(), resourceResolver.getParentResourceType(r4));
+        assertEquals(r2.getPath(), resourceResolver.getParentResourceType(r4.getPath()));
+    }
+    
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.