Class JcrResourceProvider
-
Field Summary
Fields inherited from class org.apache.sling.spi.resource.provider.ResourceProvider
AUTH_ADMIN, AUTH_CLONE, AUTH_SERVICE_BUNDLE, AUTHENTICATE_LAZY, AUTHENTICATE_NO, AUTHENTICATE_REQUIRED, MODE_OVERLAY, MODE_PASSTHROUGH, PROPERTY_ADAPTABLE, PROPERTY_ATTRIBUTABLE, PROPERTY_AUTHENTICATE, PROPERTY_MODE, PROPERTY_MODIFIABLE, PROPERTY_NAME, PROPERTY_REFRESHABLE, PROPERTY_ROOT, PROPERTY_USE_RESOURCE_ACCESS_SECURITY, RESOURCE_TYPE_SYNTHETIC -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidactivate(org.osgi.service.component.ComponentContext context, org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.Configuration configuration) <AdapterType>
AdapterTypeadaptTo(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull Class<AdapterType> type) Adapts the provider to another type.@NotNull org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderStateauthenticate(@NotNull Map<String, Object> authenticationInfo) Create a new ResourceResolver wrapping a Session object.protected voidbindDynamicClassLoaderManager(DynamicClassLoaderManager dynamicClassLoaderManager) voidcommit(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Commit all transient changes: create, delete and updatesbooleancopy(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull String srcAbsPath, @NotNull String destAbsPath) This method copies the subgraph rooted at, and including, the resource atsrcAbsPathto the new location atdestAbsPathand adds it as a child node of the resource atdestAbsPath.@NotNull Resourcecreate(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @Nullable String path, @Nullable Map<String, Object> properties) Create a new resource at the given path.protected voidvoiddelete(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull Resource resource) Delete the resource at the given path.@Nullable ObjectgetAttribute(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull String name) Returns the value of the given resource provider attribute ornullif the attribute is not set or not visible (as e.g. security sensitive attributes).@NotNull Collection<String>getAttributeNames(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Returns a collection of attribute names whose value can be retrieved calling theResourceProvider.getAttribute(ResolveContext, String)method.protected static @Nullable StringgetNodeType(@Nullable Map<String, Object> properties, @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) @Nullable ResourcegetParent(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull Resource child) Returns the parent resource from this resource provider ornullif the resource provider cannot find it.@Nullable QueryLanguageProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>Get the optional query language provider.@Nullable ResourcegetResource(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull String path, @NotNull ResourceContext rCtx, @Nullable Resource parent) Returns a resource from this resource provider ornullif the resource provider cannot find it.booleanhasChanges(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Are there any transient changes?static booleanCheck if ID addressing is enabled.booleanisLive(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Returnstrueif this resource provider has not been closed yet and can still be used.listChildren(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull Resource parent) voidlogout(@Nullable org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState state) If the provider requires authentication, this method is called with the state of the user returned byResourceProvider.authenticate(Map)once the resource resolver is closed.booleanmove(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull String srcAbsPath, @NotNull String destAbsPath) This method moves the subgraph rooted at, and including, the resource atsrcAbsPathto the new location atdestAbsPathand adds it as a child node of the resource atdestAbsPath.booleanorderBefore(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull Resource parent, @NotNull String name, @Nullable String followingSiblingName) Orders the child resources returned byResourceProvider.listChildren(ResolveContext, Resource)so that a given resource is listed before the given sibling resource.voidrefresh(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) The provider is updated to reflect the latest state.voidrevert(@NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Revert all transient changes: create, delete and updates.voidstart(@NotNull ProviderContext ctx) With a call to this method, the provider implementation is notified that it is used in the resource tree.voidstop()With a call to this method, the provider implementation is notified that it is not used anymore in the resource tree.protected voidunbindDynamicClassLoaderManager(DynamicClassLoaderManager dynamicClassLoaderManager) voidupdate(long changeSet) With a call to this method, the provider implementation is notified that any information regarding the registration of the provider has changed.Methods inherited from class org.apache.sling.spi.resource.provider.ResourceProvider
getProviderContext
-
Constructor Details
-
JcrResourceProvider
public JcrResourceProvider()
-
-
Method Details
-
activate
protected void activate(org.osgi.service.component.ComponentContext context, org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.Configuration configuration) -
deactivate
protected void deactivate() -
bindDynamicClassLoaderManager
-
unbindDynamicClassLoaderManager
-
start
Description copied from class:ResourceProviderWith a call to this method, the provider implementation is notified that it is used in the resource tree.- Overrides:
startin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- The context for this provider.
-
stop
public void stop()Description copied from class:ResourceProviderWith a call to this method, the provider implementation is notified that it is not used anymore in the resource tree.- Overrides:
stopin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>
-
update
public void update(long changeSet) Description copied from class:ResourceProviderWith a call to this method, the provider implementation is notified that any information regarding the registration of the provider has changed. For example, observation listeners might have changed. This method is only called while the provider is used in the resource tree.- Overrides:
updatein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
changeSet- A bit set of provider info that has changed.- See Also:
-
isIdAddressingEnabled
public static boolean isIdAddressingEnabled()Check if ID addressing is enabled.- Returns:
trueif ID addressing is enabled,falseotherwise.
-
authenticate
@NotNull public @NotNull org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState authenticate(@NotNull @NotNull Map<String, Object> authenticationInfo) throws LoginExceptionCreate a new ResourceResolver wrapping a Session object. Carries map of authentication info in order to create a new resolver as needed.- Overrides:
authenticatein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
authenticationInfo- A map of further credential information which may be used by the implementation to parameterize how the resource resolver is created.- Returns:
- A context data object according to the
authenticationInfo. - Throws:
LoginException- If an error occurs authenticating with the provided credential data.- See Also:
-
logout
public void logout(@Nullable @Nullable org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState state) Description copied from class:ResourceProviderIf the provider requires authentication, this method is called with the state of the user returned byResourceProvider.authenticate(Map)once the resource resolver is closed.- Overrides:
logoutin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
state- The provider state returned byResourceProvider.authenticate(Map).
-
isLive
public boolean isLive(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Description copied from class:ResourceProviderReturnstrueif this resource provider has not been closed yet and can still be used.This method will never throw an exception even after the resource provider has been closed
This method is only called for resource providers which have a state and require authentication.
- Overrides:
isLivein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.- Returns:
trueif the resource provider has not been closed yet and is still active.. Once the resource provider has been closed or is not active anymore, this method returnsfalse.
-
getResource
@Nullable public @Nullable Resource getResource(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull String path, @NotNull @NotNull ResourceContext rCtx, @Nullable @Nullable Resource parent) Description copied from class:ResourceProviderReturns a resource from this resource provider ornullif the resource provider cannot find it. The path must have theResourceProvider.PROPERTY_ROOTstrings as its prefix. The resource provider must not return cached instances for a resource as the resource resolver will update the resource meta data of the resource at the end of the resolution process and this meta data might be different depending on the full path of resource resolution passed into the resource resolver.- Specified by:
getResourcein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.path- The full path of the resource.rCtx- Additional information for resolving the resourceparent- Optional parent resource- Returns:
nullIf this provider does not have a resource for the path.
-
listChildren
@Nullable public @Nullable Iterator<Resource> listChildren(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull Resource parent) Description copied from class:ResourceProviderReturns anIteratorofResourceobjects loaded from the children of the givenResource. The returnedResourceinstances are attached to the sameResourceResolveras the givenparentresource.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
SyntheticResourceobjects whose resource type MUST be set toResourceProvider.RESOURCE_TYPE_SYNTHETIC. As withResourceProvider.getResource(ResolveContext, String, ResourceContext, Resource)the returned Resource objects must not be cached objects.- Specified by:
listChildrenin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.parent- TheResourcewhose children are requested.- Returns:
- An
IteratorofResourceobjects ornullif the resource provider has no children for the given resource.
-
getParent
@Nullable public @Nullable Resource getParent(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull Resource child) Description copied from class:ResourceProviderReturns the parent resource from this resource provider ornullif the resource provider cannot find it. The resource provider must not return cached instances for a resource as the resource resolver will update the resource meta data of the resource at the end of the resolution process and this meta data might be different depending on the full path of resource resolution passed into the resource resolver.- Overrides:
getParentin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.child- The child resource.- Returns:
nullif this provider does not have a resource for the parent.
-
getAttributeNames
@NotNull public @NotNull Collection<String> getAttributeNames(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Description copied from class:ResourceProviderReturns a collection of attribute names whose value can be retrieved calling theResourceProvider.getAttribute(ResolveContext, String)method.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_ATTRIBUTABLEto the valuetrue.- Overrides:
getAttributeNamesin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.- Returns:
- A collection of attribute names or
null
-
getAttribute
@Nullable public @Nullable Object getAttribute(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull String name) Description copied from class:ResourceProviderReturns the value of the given resource provider attribute ornullif the attribute is not set or not visible (as e.g. security sensitive attributes).This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_ATTRIBUTABLEto the valuetrue.- Overrides:
getAttributein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.name- The name of the attribute to access- Returns:
- The value of the attribute or
nullif the attribute is not set or not accessible.
-
create
@NotNull public @NotNull Resource create(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @Nullable @Nullable String path, @Nullable @Nullable Map<String, Object> properties) throws PersistenceExceptionDescription copied from class:ResourceProviderCreate a new resource at the given path. The new resource is put into the transient space of this provider untilResourceProvider.commit(ResolveContext)is called.A resource provider must value
ResourceResolver.PROPERTY_RESOURCE_TYPEto set the resource type of a resource.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
createin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.path- The resource path.properties- Optional properties- Returns:
- The new resource.
- Throws:
PersistenceException- If anything fails
-
getNodeType
@Nullable protected static @Nullable String getNodeType(@Nullable @Nullable Map<String, Object> properties, @NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) -
orderBefore
public boolean orderBefore(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull Resource parent, @NotNull @NotNull String name, @Nullable @Nullable String followingSiblingName) throws PersistenceException Description copied from class:ResourceProviderOrders the child resources returned byResourceProvider.listChildren(ResolveContext, Resource)so that a given resource is listed before the given sibling resource. The changes are transient untilResourceProvider.commit(ResolveContext)is called..- Overrides:
orderBeforein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.parent- the parent resource containing the child resources to order.name- the name of the child resource inparentto order. Must be an existing child name.followingSiblingName- the name of the resource child inparentwhich should come after the reordered resource. Ifnullis given the resource is ordered as last among all sibling resources.- Returns:
truein case the order of the child resources inparenthas been changed,falseif the given resource were already in the desired order.- Throws:
PersistenceException- If the operation fails in the underlying resource provider, e.g. in case the parent resource does not support orderable children.- See Also:
-
delete
public void delete(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull Resource resource) throws PersistenceException Description copied from class:ResourceProviderDelete the resource at the given path. This change is kept in the transient space of this provider untilResourceProvider.commit(ResolveContext)is called.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
deletein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.resource- The resource to delete.- Throws:
PersistenceException- If anything fails
-
revert
public void revert(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Description copied from class:ResourceProviderRevert all transient changes: create, delete and updates.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
revertin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.
-
commit
public void commit(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) throws PersistenceException Description copied from class:ResourceProviderCommit all transient changes: create, delete and updatesThis method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
commitin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.- Throws:
PersistenceException- If anything fails
-
hasChanges
public boolean hasChanges(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Description copied from class:ResourceProviderAre there any transient changes?This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
hasChangesin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.- Returns:
trueif there are pending changes.
-
refresh
public void refresh(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx) Description copied from class:ResourceProviderThe provider is updated to reflect the latest state. Resources which have changes pending are not discarded.ResourceProvider.revert(ResolveContext)can be called to discard changes.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_REFRESHABLEto the valuetrue.- Overrides:
refreshin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.
-
adaptTo
@Nullable public <AdapterType> AdapterType adaptTo(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull Class<AdapterType> type) Description copied from class:ResourceProviderAdapts the provider to another type.Please not that it is explicitly left as an implementation detail whether each call to this method with the same
typeyields the same object or a new object on each call.Implementations of this method should document their adapted types as well as their behavior with respect to returning newly created or not instance on each call.
This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_ADAPTABLEto the valuetrue.- Overrides:
adaptToin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Type Parameters:
AdapterType- The generic type to which this resource is adapted to.- Parameters:
ctx- TheResolveContext.type- The generic type to which this resource is adapted to.- Returns:
- The adapter target or
nullif the provider cannot be adapt to the requested type.
-
copy
public boolean copy(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull String srcAbsPath, @NotNull @NotNull String destAbsPath) Description copied from class:ResourceProviderThis method copies the subgraph rooted at, and including, the resource atsrcAbsPathto the new location atdestAbsPathand adds it as a child node of the resource atdestAbsPath.Both resources are resources from this provider and the full tree is provided by this provider as well.
The resource at
destAbsPathneeds to exist, if not aPersistenceExceptionis thrown. If a child resource with the same name already exists atdestAbsPathaPersistenceExceptionis thrown.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
copyin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.srcAbsPath- the path of the resource to be copied.destAbsPath- the location to which the resource atsrcAbsPathis to be copied.- Returns:
trueif the provider can perform the copy
-
move
public boolean move(@NotNull @NotNull ResolveContext<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> ctx, @NotNull @NotNull String srcAbsPath, @NotNull @NotNull String destAbsPath) throws PersistenceException Description copied from class:ResourceProviderThis method moves the subgraph rooted at, and including, the resource atsrcAbsPathto the new location atdestAbsPathand adds it as a child node of the resource atdestAbsPath.Both resources are resources from this provider and the full tree is provided by this provider as well.
The resource at
destAbsPathneeds to exist, if not aPersistenceExceptionis thrown. If a child resource with the same name already exists atdestAbsPathaPersistenceExceptionis thrown.This method is only called if the provider supports this and indicates it by setting the
ResourceProvider.PROPERTY_MODIFIABLEto the valuetrue.- Overrides:
movein classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Parameters:
ctx- TheResolveContext.srcAbsPath- the path of the resource to be copied.destAbsPath- the location to which the resource atsrcAbsPathis to be moved.- Returns:
trueif the provider can perform the move- Throws:
PersistenceException- If an error occurs.
-
getQueryLanguageProvider
@Nullable public @Nullable QueryLanguageProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState> getQueryLanguageProvider()Description copied from class:ResourceProviderGet the optional query language provider. If the provider supports this kind of query, it must return a query provider implementation if the provider is active. It should not return a query provider if it is not active. This method is called for each query, therefore the provider implementation might cache the provider object.- Overrides:
getQueryLanguageProviderin classResourceProvider<org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderState>- Returns:
- A query language provider if this resource provider supports this type of querying.
-