Package org.apache.sling.api.resource

# Interface ResourceProviderFactory

@ConsumerType @Deprecated public interface ResourceProviderFactory
Deprecated.
The `ResourceProviderFactory` defines the service API to get and create `ResourceProviders`s dynamically on a per usage base. Instead of sharing a resource provider between resource resolvers, the factory allows to create an own instance of a resource provider per resource resolver. The factory also supports authentication.

If the resource provider is not used anymore and implements the `DynamicResourceProvider` interface, the close method should be called.

Since:
  2.2.0 (Sling API Bundle 2.2.0)

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`PROPERTY_REQUIRED`
Deprecated.
A required resource provider factory is accessed directly when a new resource resolver is created.
`static final String`
`SERVICE_BUNDLE`
Deprecated.
The authentication information property referring to the bundle providing a service for which a resource provider is to be retrieved.

## Method Summary

Modifier and Type
Method
Description
`@NotNull ResourceProvider`
`getAdministrativeResourceProvider(Map<String,Object> authenticationInfo)`
Deprecated.
as of 2.4 (bundle version 2.5.0) because of inherent security issues.
`@NotNull ResourceProvider`
`getResourceProvider(Map<String,Object> authenticationInfo)`
Deprecated.
Returns a new `ResourceProvider` instance with further configuration taken from the given `authenticationInfo` map.

## Field Details

### PROPERTY_REQUIRED

static final String PROPERTY_REQUIRED
Deprecated.
A required resource provider factory is accessed directly when a new resource resolver is created. Only if authentication against all required resource provider factories is successful, a resource resolver is created by the resource resolver factory. Boolean service property, default value is `false`.

See Also:
  - Constant Field Values

### SERVICE_BUNDLE

static final String SERVICE_BUNDLE
Deprecated.
The authentication information property referring to the bundle providing a service for which a resource provider is to be retrieved. If this property is provided, the `ResourceResolverFactory.SUBSERVICE` property may also be present.

`ResourceResolverFactory` implementations must provide this property if their implementation of the `ResourceResolverFactory.getServiceResourceResolver(Map)` method use a resource provider factory.

The type of this property, if present, is `org.osgi.framework.Bundle`.

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

## Method Details

### getResourceProvider

@NotNull @NotNull ResourceProvider getResourceProvider(Map<String,Object> authenticationInfo) throws LoginException
Deprecated.
Returns a new `ResourceProvider` instance with further configuration taken from the given `authenticationInfo` map. Generally this map will contain a user name and password to authenticate.

The `authenticationInfo` map will in general contain the same information as provided to the respective `ResourceResolver` method. For

If the `authenticationInfo` map is `null` the `ResourceProvider` returned will generally not be authenticated and only provide minimal privileges, if any at all.

Implementations must ignore the `ResourceResolverFactory.USER` property the `SERVICE_BUNDLE` property is provided to implement service authentication.

The `ResourceResolverFactory.USER_IMPERSONATION` property is obeyed but requires that the actual user has permission to impersonate as the requested user. If such permission is missing, a `LoginException` is thrown.

Parameters:
  `authenticationInfo` - A map of further credential information which may be used by the implementation to parameterize how the resource provider is created. This may be `null`.
Returns:
  A `ResourceProvider` according to the `authenticationInfo`.
Throws:
  `LoginException` - If an error occurs creating the new `ResourceProvider` with the provided credential data.
See Also:
  - Service Authentication

### getAdministrativeResourceProvider

@Deprecated @NotNull @NotNull ResourceProvider getAdministrativeResourceProvider(Map<String,Object> authenticationInfo) throws LoginException
Deprecated.
as of 2.4 (bundle version 2.5.0) because of inherent security issues. Implementations may implement this method at their discretion but must support the new service based resource provider generation in the `getResourceProvider(Map)` method honoring the `SERVICE_BUNDLE` and `ResourceResolverFactory.SUBSERVICE` properties.
Returns a new `ResourceProvider` instance with administrative privileges with further configuration taken from the given `authenticationInfo` map.

Note, that if the `authenticationInfo` map contains the `ResourceResolverFactory.USER_IMPERSONATION` attribute the `ResourceProvider` returned will only have administrative privileges if the user identified by the property has administrative privileges.

Implementations of this method should throw `LoginException` if they don't support it.

Parameters:
  `authenticationInfo` - A map of further credential information which may be used by the implementation to parameterize how the resource provider is created. This may be `null`.
Returns:
  A `ResourceProvider` with administrative privileges unless the `ResourceResolverFactory.USER_IMPERSONATION` was set in the `authenticationInfo`.
Throws:
  `LoginException` - If an error occurs creating the new `ResourceResolverFactory` with the provided credential data.