Package org.apache.sling.api.resource

# Interface ResourceProvider

All Known Subinterfaces:
  `AttributableResourceProvider`, `DynamicResourceProvider`, `ModifyingResourceProvider`, `QueriableResourceProvider`, `RefreshableResourceProvider`

@ConsumerType @Deprecated public interface ResourceProvider
Deprecated.
Use the `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. A resource provider can either directly implement this service interface, e.g. when no user authentication is provided (like for bundle resources) or a `ResourceProviderFactory` service can be implemented which upon successful authentication returns a resource provider with the given user credentials.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`OWNS_ROOTS`
Deprecated.
The name of the service registration property containing the a boolean flag whether this provider owns the tree registered by the roots.
`static final String`
`RESOURCE_TYPE_SYNTHETIC`
Deprecated.
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 final String`
`ROOTS`
Deprecated.
The name of the service registration property containing the root paths of the resources provided by this provider (value is "provider.roots").
`static final String`
`SERVICE_NAME`
Deprecated.
The service name to use when registering implementations of this interface as services (value is "org.apache.sling.api.resource.ResourceProvider").
`static final String`
`USE_RESOURCE_ACCESS_SECURITY`
Deprecated.
The name of the service registration property containing the a boolean flag indicating if the ResourceAccessSecurity service should be used for this provider or not.

## Method Summary

Modifier and Type
Method
Description
`@Nullable Resource`
`getResource(@NotNull ResourceResolver resourceResolver, @NotNull String path)`
Deprecated.
Returns a resource from this resource provider or `null` if the resource provider cannot find it.
`@Nullable Resource`
`getResource(@NotNull ResourceResolver resourceResolver, @NotNull javax.servlet.http.HttpServletRequest request, @NotNull String path)`
Deprecated.
since 2.2.0 (and JCR Resource 2.1.0), this method will not be invoked.
`@Nullable Iterator<Resource>`
`listChildren(@NotNull Resource parent)`
Deprecated.
Returns an `Iterator` of `Resource` objects loaded from the children of the given `Resource`.

## Field Details

### SERVICE_NAME

static final String SERVICE_NAME
Deprecated.
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
Deprecated.
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

### OWNS_ROOTS

static final String OWNS_ROOTS
Deprecated.
The name of the service registration property containing the a boolean flag whether this provider owns the tree registered by the roots. The default for this value is `false`. If a provider owns a root no other providers are asked for resources under this root if this provider does not have a resource. (value is "provider.ownsRoots").

Since:
  2.2 (Sling API Bundle 2.2.0)
See Also:
  - Constant Field Values

### USE_RESOURCE_ACCESS_SECURITY

static final String USE_RESOURCE_ACCESS_SECURITY
Deprecated.
The name of the service registration property containing the a boolean flag indicating if the ResourceAccessSecurity service should be used for this provider or not. ResourceProvider implementations are encouraged to use the ResourceAccessSecurity service for access control unless the underlying storage already provides it. The default for this value is `false`. (value is "provider.useResourceAccessSecurity")

Since:
  2.4 (Sling API Bundle 2.5.0)
See Also:
  - Constant Field Values

### RESOURCE_TYPE_SYNTHETIC

static final String RESOURCE_TYPE_SYNTHETIC
Deprecated.
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 Details

### getResource

@Deprecated @Nullable @Nullable Resource getResource(@NotNull @NotNull ResourceResolver resourceResolver, @NotNull @NotNull javax.servlet.http.HttpServletRequest request, @NotNull @NotNull String path)
Deprecated.
since 2.2.0 (and JCR Resource 2.1.0), this method will not be invoked.
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 parameterize the resource resolution. An example of such parameterization is support for a JSR-311 style resource provider to support the parameterized URL patterns.

Parameters:
  `resourceResolver` - The `ResourceResolver` to which the returned `Resource` is attached.
  `request` - The request
  `path` - The resource path
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

@Nullable @Nullable Resource getResource(@NotNull @NotNull ResourceResolver resourceResolver, @NotNull @NotNull String path)
Deprecated.
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. The resource provider must not return cached instances for a resource as the resource resolver will update the resource metadata of the resource at the end of the resolution process and this metadata might be different depending on the full path of resource resolution passed into the resource resolver.

Parameters:
  `resourceResolver` - The `ResourceResolver` to which the returned `Resource` is attached.
  `path` - The full path of the resource.
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

@Nullable @Nullable Iterator<Resource> listChildren(@NotNull @NotNull Resource parent)
Deprecated.
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`. As with `getResource(ResourceResolver, String)` the returned Resource objects must not be cached objects.

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.