public Resource getResource()

in src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java [174:222]


    public Resource getResource(final @NotNull ResolveContext<Object> ctx,
            final @NotNull String path,
            final @NotNull ResourceContext resourceContext,
            final @Nullable Resource parent) {

        ResourceResolver resolver = ctx.getResourceResolver();

        boolean askParentResourceProvider;
        Resource rsrc = null;

        if (fsMode == FsMode.FILEVAULT_XML) {
            // filevault: check if path matches, if not fallback to parent resource provider
            if (fileVaultMapper.pathMatches(path)) {
                askParentResourceProvider = false;
                rsrc = fileVaultMapper.getResource(resolver, path);
            }
            else {
                askParentResourceProvider = true;
            }
        }
        else {
            // Sling-Initial-Content: mount folder/files an content files
            askParentResourceProvider = this.overlayParentResourceProvider;
            rsrc = fileMapper.getResource(resolver, path);
            if (rsrc == null) {
                rsrc = contentFileMapper.getResource(resolver, path);
            }
        }

        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(RESOURCE_METADATA_FILE_DIRECTORY) ) {
            	// get resource from shadowed provider
            	final ResourceProvider rp = ctx.getParentResourceProvider();
            	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;
    }