org.apache.sling.api.resource
Interface ResourceProvider


public interface ResourceProvider

API for providers of resources. Used by the ResourceResolver to transparently access resources from different locations such as a JCR repository (the default) or OSGi bundles.

This interface is intended to be implemented by providers of Resource instances on behalf of the ResourceResolver. It is not intended to be used by client applications directly.


Field Summary
static String RESOURCE_TYPE_SYNTHETIC
          The resource type be set on resources returned by the listChildren(Resource) method to enable traversing the resource tree down to a deeply nested provided resource which has no concrete parent hierarchy (value is"sling:syntheticResourceProviderResource").
static String ROOTS
          The name of the service registration property containing the root paths of the resources provided by this provider (value is "provider.roots").
static String SERVICE_NAME
          The service name to use when registering implementations of this interface as services (value is "org.apache.sling.api.resource.ResourceProvider").
 
Method Summary
 Resource getResource(ResourceResolver resourceResolver, javax.servlet.http.HttpServletRequest request, String path)
          Returns a resource from this resource provider or null if the resource provider cannot find it.
 Resource getResource(ResourceResolver resourceResolver, String path)
          Returns a resource from this resource provider or null if the resource provider cannot find it.
 Iterator<Resource> listChildren(Resource parent)
          Returns an Iterator of Resource objects loaded from the children of the given Resource.
 

Field Detail

SERVICE_NAME

static final String SERVICE_NAME
The service name to use when registering implementations of this interface as services (value is "org.apache.sling.api.resource.ResourceProvider").


ROOTS

static final String ROOTS
The name of the service registration property containing the root paths of the resources provided by this provider (value is "provider.roots").

See Also:
Constant Field Values

RESOURCE_TYPE_SYNTHETIC

static final String RESOURCE_TYPE_SYNTHETIC
The resource type be set on resources returned by the listChildren(Resource) method to enable traversing the resource tree down to a deeply nested provided resource which has no concrete parent hierarchy (value is"sling:syntheticResourceProviderResource").

See Also:
listChildren(Resource), Constant Field Values
Method Detail

getResource

Resource getResource(ResourceResolver resourceResolver,
                     javax.servlet.http.HttpServletRequest request,
                     String path)
Returns a resource from this resource provider or null if the resource provider cannot find it. The path should have one of the ROOTS strings as its prefix.

This method is called to resolve a resource for the given request. The properties of the request, such as request parameters, may be use to parametrize the resource resolution. An example of such parametrization is support for a JSR-311 style resource provider to support the parametrized URL patterns.

Parameters:
resourceResolver - The ResourceResolver to which the returned Resource is attached.
Returns:
null If this provider does not have a resource for the path.
Throws:
SlingException - may be thrown in case of any problem creating the Resource instance.

getResource

Resource getResource(ResourceResolver resourceResolver,
                     String path)
Returns a resource from this resource provider or null if the resource provider cannot find it. The path should have one of the ROOTS strings as its prefix.

Parameters:
resourceResolver - The ResourceResolver to which the returned Resource is attached.
Returns:
null If this provider does not have a resource for the path.
Throws:
SlingException - may be thrown in case of any problem creating the Resource instance.

listChildren

Iterator<Resource> listChildren(Resource parent)
Returns an Iterator of Resource objects loaded from the children of the given Resource. The returned Resource instances are attached to the same ResourceResolver as the given parent resource.

This method may be called for resource providers whose root path list contains a path such that the resource path is a prefix of the list entry. This allows for the enumeration of deeply nested provided resources for which no actual parent hierarchy exists.

The returned iterator may in turn contain resources which do not actually exist but are required to traverse the resource tree. Such resources SHOULD be SyntheticResource objects whose resource type MUST be set to RESOURCE_TYPE_SYNTHETIC.

Parameters:
parent - The Resource whose children are requested.
Returns:
An Iterator of Resource objects or null if the resource provider has no children for the given resource.
Throws:
NullPointerException - If parent is null.
SlingException - If any error occurs acquiring the child resource iterator.


Copyright © 2007-2011 The Apache Software Foundation. All Rights Reserved.