Class AbstractPostOperation
- java.lang.Object
-
- org.apache.sling.servlets.post.impl.operations.AbstractPostOperation
-
- All Implemented Interfaces:
PostOperation
- Direct Known Subclasses:
CheckinOperation
,CheckoutOperation
,CopyOperation
,DeleteOperation
,ImportOperation
,ModifyOperation
,MoveOperation
,RestoreOperation
,StreamedUploadOperation
public abstract class AbstractPostOperation extends Object implements PostOperation
TheAbstractPostOperation
class is a base implementation of thePostOperation
service interface providing actual implementations with useful tooling and common functionality like preparing the change logs or saving or refreshing. As this package is not exported, if you want to use this as a base class for custom operations you'll need to embed it in your bundles using the appropriate bnd directive.
-
-
Field Summary
Fields Modifier and Type Field Description protected JCRSupport
jcrSupport
The JCR support provides additional functionality if the resources are backed by JCR.protected org.slf4j.Logger
log
Default logger-
Fields inherited from interface org.apache.sling.servlets.post.PostOperation
PROP_OPERATION_NAME, SERVICE_NAME
-
-
Constructor Summary
Constructors Constructor Description AbstractPostOperation()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
doRun(org.apache.sling.api.SlingHttpServletRequest request, PostResponse response, List<Modification> changes)
Actually performs the desired operation filling progress into thechanges
list and preparing and further information in theresponse
.protected String
externalizePath(org.apache.sling.api.SlingHttpServletRequest request, String path)
Returns an external form of the given path prepending the context path and appending a display extension.protected Iterator<org.apache.sling.api.resource.Resource>
getApplyToResources(org.apache.sling.api.SlingHttpServletRequest request)
Returns an iterator onResource
instances addressed in theSlingPostConstants.RP_APPLY_TO
request parameter.protected String
getResourcePath(org.apache.sling.api.SlingHttpServletRequest request)
Returns the path of the resource of the request as the resource path.protected VersioningConfiguration
getVersioningConfiguration(org.apache.sling.api.SlingHttpServletRequest request)
Get the versioning configuration.protected boolean
isSkipCheckin(org.apache.sling.api.SlingHttpServletRequest request)
Check if checkin should be skippedprotected void
orderResource(org.apache.sling.api.SlingHttpServletRequest request, org.apache.sling.api.resource.Resource resource, List<Modification> changes)
Orders the given resource according to the specified command.void
run(org.apache.sling.api.SlingHttpServletRequest request, PostResponse response, SlingPostProcessor[] processors)
Prepares and finalizes the actual operation.
-
-
-
Field Detail
-
log
protected final org.slf4j.Logger log
Default logger
-
jcrSupport
protected final JCRSupport jcrSupport
The JCR support provides additional functionality if the resources are backed by JCR.
-
-
Method Detail
-
run
public void run(org.apache.sling.api.SlingHttpServletRequest request, PostResponse response, SlingPostProcessor[] processors) throws PreconditionViolatedPersistenceException, TemporaryPersistenceException, org.apache.sling.api.resource.PersistenceException
Prepares and finalizes the actual operation. Preparation encompasses getting the absolute path of the item to operate on by calling thegetResourcePath(SlingHttpServletRequest)
method and setting the location and parent location on the response. After the operation has been done in thedoRun(SlingHttpServletRequest, PostResponse, List)
method the session is saved if there are unsaved modifications. In case of errors, the unsaved changes in the session are rolled back.- Specified by:
run
in interfacePostOperation
- Parameters:
request
- the request to operate onresponse
- ThePostResponse
to record execution progress.processors
- The array of processors- Throws:
PreconditionViolatedPersistenceException
- when a necessary precondition failed, and a retry without further changes doesn't make sense.TemporaryPersistenceException
- when a commit failed, but a retry could make the operation work successfully.org.apache.sling.api.resource.PersistenceException
- when the commit fails
-
doRun
protected abstract void doRun(org.apache.sling.api.SlingHttpServletRequest request, PostResponse response, List<Modification> changes) throws org.apache.sling.api.resource.PersistenceException
Actually performs the desired operation filling progress into thechanges
list and preparing and further information in theresponse
.The
response
comes prepared with the path, location and parent location set. Other properties are expected to be set by this implementation.- Parameters:
request
- TheSlingHttpServletRequest
providing the input, mostly in terms of request parameters, to the operation.response
- ThePostResponse
to fill with response informationchanges
- A container to addModification
instances representing the operations done.- Throws:
org.apache.sling.api.resource.PersistenceException
- Maybe thrown if any error occurs while accessing the repository.
-
getVersioningConfiguration
protected VersioningConfiguration getVersioningConfiguration(org.apache.sling.api.SlingHttpServletRequest request)
Get the versioning configuration.- Parameters:
request
- The http request- Returns:
- The versioning configuration
-
isSkipCheckin
protected boolean isSkipCheckin(org.apache.sling.api.SlingHttpServletRequest request)
Check if checkin should be skipped- Parameters:
request
- The http request- Returns:
true
if checkin should be skipped
-
getApplyToResources
protected Iterator<org.apache.sling.api.resource.Resource> getApplyToResources(org.apache.sling.api.SlingHttpServletRequest request)
Returns an iterator onResource
instances addressed in theSlingPostConstants.RP_APPLY_TO
request parameter. If the request parameter is not set,null
is returned. If the parameter is set with valid resources an empty iterator is returned. Any resources addressed in theSlingPostConstants.RP_APPLY_TO
parameter is ignored.- Parameters:
request
- TheSlingHttpServletRequest
object used to get theSlingPostConstants.RP_APPLY_TO
parameter.- Returns:
- The iterator of resources listed in the parameter or
null
if the parameter is not set in the request.
-
externalizePath
protected final String externalizePath(org.apache.sling.api.SlingHttpServletRequest request, String path)
Returns an external form of the given path prepending the context path and appending a display extension.- Parameters:
request
- The http requestpath
- the path to externalize- Returns:
- the url
-
getResourcePath
protected String getResourcePath(org.apache.sling.api.SlingHttpServletRequest request)
Returns the path of the resource of the request as the resource path.This method may be overwritten by extension if the operation has different requirements on path processing.
- Parameters:
request
- The http request- Returns:
- The resource path
-
orderResource
protected void orderResource(org.apache.sling.api.SlingHttpServletRequest request, org.apache.sling.api.resource.Resource resource, List<Modification> changes) throws org.apache.sling.api.resource.PersistenceException
Orders the given resource according to the specified command. The following syntax is supported: <xmp> | first | before all child nodes | before A | before child node A | after A | after child node A | last | after all nodes | N | at a specific position, N being an integer </xmp>- Parameters:
request
- The http requestresource
- the resource to orderchanges
- the list of modifications- Throws:
org.apache.sling.api.resource.PersistenceException
- in case the operation is not successful
-
-