Interface ResourceProviderFactory
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
FieldsModifier and TypeFieldDescriptionstatic final String
Deprecated.A required resource provider factory is accessed directly when a new resource resolver is created.static final String
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 TypeMethodDescription@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 newResourceProvider
instance with further configuration taken from the givenauthenticationInfo
map.
-
Field Details
-
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 isfalse
.- See Also:
-
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, theResourceResolverFactory.SUBSERVICE
property may also be present.ResourceResolverFactory
implementations must provide this property if their implementation of theResourceResolverFactory.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:
-
-
Method Details
-
getResourceProvider
@NotNull @NotNull ResourceProvider getResourceProvider(Map<String, Object> authenticationInfo) throws LoginExceptionDeprecated.Returns a newResourceProvider
instance with further configuration taken from the givenauthenticationInfo
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 respectiveResourceResolver
method. ForIf the
authenticationInfo
map isnull
theResourceProvider
returned will generally not be authenticated and only provide minimal privileges, if any at all.Implementations must ignore the
ResourceResolverFactory.USER
property theSERVICE_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, aLoginException
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 benull
.- Returns:
- A
ResourceProvider
according to theauthenticationInfo
. - Throws:
LoginException
- If an error occurs creating the newResourceProvider
with the provided credential data.- See Also:
-
getAdministrativeResourceProvider
@Deprecated @NotNull @NotNull ResourceProvider getAdministrativeResourceProvider(Map<String, Object> authenticationInfo) throws LoginExceptionDeprecated.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 thegetResourceProvider(Map)
method honoring theSERVICE_BUNDLE
andResourceResolverFactory.SUBSERVICE
properties.Returns a newResourceProvider
instance with administrative privileges with further configuration taken from the givenauthenticationInfo
map.Note, that if the
authenticationInfo
map contains theResourceResolverFactory.USER_IMPERSONATION
attribute theResourceProvider
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 benull
.- Returns:
- A
ResourceProvider
with administrative privileges unless theResourceResolverFactory.USER_IMPERSONATION
was set in theauthenticationInfo
. - Throws:
LoginException
- If an error occurs creating the newResourceResolverFactory
with the provided credential data.
-