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;