in src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResourceMapper.java [136:170]
public Resource getResource(
final @NotNull ResolveContext<Object> ctx,
final @NotNull String path,
final @NotNull ResourceContext resourceContext,
final @Nullable Resource parent) {
final ResourceResolver resolver = ctx.getResourceResolver();
final Map.Entry<Resource, Boolean> resolved = resolveResource(resolver, path);
final boolean askParentResourceProvider = resolved.getValue();
Resource rsrc = resolved.getKey();
if (askParentResourceProvider) {
// 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(FsResourceProvider.RESOURCE_METADATA_FILE_DIRECTORY)) {
// get resource from shadowed provider
@SuppressWarnings("rawtypes")
final ResourceProvider rp = ctx.getParentResourceProvider();
@SuppressWarnings("rawtypes")
final ResolveContext resolveContext = ctx.getParentResolveContext();
if (rp != null && resolveContext != null) {
Resource resourceFromParentResourceProvider =
rp.getResource(resolveContext, path, resourceContext, parent);
if (resourceFromParentResourceProvider != null) {
rsrc = resourceFromParentResourceProvider;
}
}
}
}
return rsrc;
}