You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2017/01/09 16:55:35 UTC

svn commit: r1778016 - /sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java

Author: sseifert
Date: Mon Jan  9 16:55:35 2017
New Revision: 1778016

URL: http://svn.apache.org/viewvc?rev=1778016&view=rev
Log:
SLING-6439 make sure directory resources from parent resource provider have higher precedence than from this provider
this allows properties like sling:resourceSuperType to take effect

Modified:
    sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java

Modified: sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java?rev=1778016&r1=1778015&r2=1778016&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java (original)
+++ sling/trunk/bundles/extensions/fsresource/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java Mon Jan  9 16:55:35 2017
@@ -26,6 +26,7 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.spi.resource.provider.ObservationReporter;
 import org.apache.sling.spi.resource.provider.ProviderContext;
@@ -129,13 +130,18 @@ public class FsResourceProvider extends
             final ResourceContext resourceContext,
             final Resource parent) {
         Resource rsrc = getResource(ctx.getResourceResolver(), path, getFile(path));
-        if ( rsrc == null ) {
+        // make sure directory resources from parent resource provider have higher precedence than from this provider
+        // this allows properties like sling:resourceSuperType to take effect
+        if ( rsrc == null || rsrc.getResourceMetadata().containsKey(ResourceMetadata.INTERNAL_CONTINUE_RESOLVING) ) {
         	// get resource from shadowed provider
         	final ResourceProvider rp = ctx.getParentResourceProvider();
         	if ( rp != null ) {
-	            rsrc = rp.getResource((ResolveContext)ctx.getParentResolveContext(), 
+        	    Resource resourceFromParentResourceProvider = rp.getResource((ResolveContext)ctx.getParentResolveContext(), 
 	            		path, 
 	            		resourceContext, parent);
+        	    if (resourceFromParentResourceProvider != null) {
+        	        rsrc = resourceFromParentResourceProvider;
+        	    }
         	}        	
         }
         return rsrc;