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

[sling-org-apache-sling-resourceresolver] branch master updated: SLING-7252: ResourceResolverImpl.map() does not invoke ResourceDecorator. Patch provided by Francisco Chicharro. Thanks

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

pauls pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ddea42  SLING-7252: ResourceResolverImpl.map() does not invoke ResourceDecorator. Patch provided by Francisco Chicharro. Thanks
0ddea42 is described below

commit 0ddea42449200239f972ac64c07abe8110e688a6
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Thu Nov 23 22:31:44 2017 +0100

    SLING-7252: ResourceResolverImpl.map() does not invoke ResourceDecorator. Patch provided by Francisco Chicharro. Thanks
---
 .../resourceresolver/impl/ResourceResolverImpl.java      |  7 +++++--
 .../impl/MockedResourceResolverImplTest.java             |  2 ++
 .../resourceresolver/impl/ResourceDecorationTest.java    | 16 ++++++++++++++++
 .../resourceresolver/impl/ResourceDecoratorTestBase.java |  2 +-
 4 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
index 1144737..f2d2f0a 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
@@ -449,9 +449,12 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
         }
 
         ParsedParameters parsed = new ParsedParameters(mappedPath);
-        final Resource res = resolveInternal(parsed.getRawPath(), parsed.getParameters());
+        final Resource nonDecoratedResource = resolveInternal(parsed.getRawPath(), parsed.getParameters());
 
-        if (res != null) {
+        if (nonDecoratedResource != null) {
+
+            //Invoke the decorator for the resolved resource
+            Resource res=this.factory.getResourceDecoratorTracker().decorate(nonDecoratedResource);
 
             // keep, what we might have cut off in internal resolution
             final String resolutionPathInfo = res.getResourceMetadata().getResolutionPathInfo();
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
index f25cca8..be2dfd5 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
@@ -540,9 +540,11 @@ public class MockedResourceResolverImplTest {
         Mockito.when(request.getServerName()).thenReturn("localhost");
         String path = resourceResolver.map(request,"/single/test?q=123123");
         Assert.assertEquals("/single/test?q=123123", path);
+        buildResource("/single/test", EMPTY_RESOURCE_LIST, resourceResolver, resourceProvider);
         path = resourceResolver.map(request,"/single/test");
         Assert.assertEquals("/single/test", path);
 
+        buildResource("/single/test", EMPTY_RESOURCE_LIST, resourceResolver, resourceProvider);
         // test path mapping without a request.
         path = resourceResolver.map("/single/test");
         Assert.assertEquals("/single/test", path);
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecorationTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecorationTest.java
index 7d45741..f8124e6 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecorationTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecorationTest.java
@@ -33,6 +33,7 @@ import org.junit.Test;
 public class ResourceDecorationTest extends ResourceDecoratorTestBase {
 
     private static final String DECORATED_NAME = "decorated";
+    private static final String DECORATED_PATH = "/decoratedPath";
     
     /** Wrap any resource so that its name is DECORATED_NAME */
     protected Resource wrapResourceForTest(Resource resource) {
@@ -41,6 +42,11 @@ public class ResourceDecorationTest extends ResourceDecoratorTestBase {
             public String getName() {
                 return DECORATED_NAME;
             }
+
+            @Override
+            public String getPath() {
+                return DECORATED_PATH;
+            }
         };
     }
     
@@ -110,4 +116,14 @@ public class ResourceDecorationTest extends ResourceDecoratorTestBase {
     public void findDecorates() {
         assertDecorated(resolver.findResources("foo", QUERY_LANGUAGE), 4);
     }
+
+    @Test
+    public void testMapDecorated(){
+        String mappedPathWithExtension=resolver.map("/var/map_test.html");
+        assertEquals("Expecting " + mappedPathWithExtension + " to be decorated", DECORATED_PATH+".html", mappedPathWithExtension);
+
+        String mappedPathWithoutExtension=resolver.map("/var/map_test");
+        assertEquals("Expecting " + mappedPathWithoutExtension + " to be decorated", DECORATED_PATH, mappedPathWithoutExtension);
+    }
+
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
index e2b1d80..8213179 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
@@ -103,7 +103,7 @@ public abstract class ResourceDecoratorTestBase {
 
             @Override
             public Resource getResource(ResolveContext<Object> ctx, String path, final ResourceContext rCtx, Resource parent) {
-                if(path.equals("/") || path.startsWith("/tmp") || path.startsWith("/var")) {
+                if(!path.endsWith(".html") && (path.equals("/") || path.startsWith("/tmp") || path.startsWith("/var"))) {
                     return mockResource(path);
                 }
                 return null;

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