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
The
AbstractPostOperation
class is a base implementation of the
PostOperation
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
Modifier and TypeFieldDescriptionprotected final JCRSupport
The JCR support provides additional functionality if the resources are backed by JCR.protected final org.slf4j.Logger
Default loggerFields inherited from interface org.apache.sling.servlets.post.PostOperation
PROP_OPERATION_NAME, SERVICE_NAME
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
doRun
(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 final String
externalizePath
(SlingHttpServletRequest request, String path) Returns an external form of the given path prepending the context path and appending a display extension.Returns an iterator onResource
instances addressed in theSlingPostConstants.RP_APPLY_TO
request parameter.protected String
getResourcePath
(SlingHttpServletRequest request) Returns the path of the resource of the request as the resource path.protected VersioningConfiguration
Get the versioning configuration.protected boolean
isSkipCheckin
(SlingHttpServletRequest request) Check if checkin should be skippedprotected void
orderResource
(SlingHttpServletRequest request, Resource resource, List<Modification> changes) Orders the given resource according to the specified command.void
run
(SlingHttpServletRequest request, PostResponse response, SlingPostProcessor[] processors) Prepares and finalizes the actual operation.
-
Field Details
-
log
protected final org.slf4j.Logger logDefault logger -
jcrSupport
The JCR support provides additional functionality if the resources are backed by JCR.
-
-
Constructor Details
-
AbstractPostOperation
public AbstractPostOperation()
-
-
Method Details
-
run
public void run(SlingHttpServletRequest request, PostResponse response, SlingPostProcessor[] processors) throws PreconditionViolatedPersistenceException, TemporaryPersistenceException, 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.PersistenceException
- when the commit fails
-
doRun
protected abstract void doRun(SlingHttpServletRequest request, PostResponse response, List<Modification> changes) throws 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:
PersistenceException
- Maybe thrown if any error occurs while accessing the repository.
-
getVersioningConfiguration
Get the versioning configuration.- Parameters:
request
- The http request- Returns:
- The versioning configuration
-
isSkipCheckin
Check if checkin should be skipped- Parameters:
request
- The http request- Returns:
true
if checkin should be skipped
-
getApplyToResources
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
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
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(SlingHttpServletRequest request, Resource resource, List<Modification> changes) throws 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:
PersistenceException
- in case the operation is not successful
-