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
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 Details

    • 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.
  • Constructor Details

    • AbstractPostOperation

      public AbstractPostOperation()
  • Method Details

    • run

      Prepares and finalizes the actual operation. Preparation encompasses getting the absolute path of the item to operate on by calling the getResourcePath(SlingHttpServletRequest) method and setting the location and parent location on the response. After the operation has been done in the doRun(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 interface PostOperation
      Parameters:
      request - the request to operate on
      response - The PostResponse 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 the changes list and preparing and further information in the response.

      The response comes prepared with the path, location and parent location set. Other properties are expected to be set by this implementation.

      Parameters:
      request - The SlingHttpServletRequest providing the input, mostly in terms of request parameters, to the operation.
      response - The PostResponse to fill with response information
      changes - A container to add Modification instances representing the operations done.
      Throws:
      PersistenceException - Maybe thrown if any error occurs while accessing the repository.
    • getVersioningConfiguration

      protected VersioningConfiguration getVersioningConfiguration(SlingHttpServletRequest request)
      Get the versioning configuration.
      Parameters:
      request - The http request
      Returns:
      The versioning configuration
    • isSkipCheckin

      protected boolean isSkipCheckin(SlingHttpServletRequest request)
      Check if checkin should be skipped
      Parameters:
      request - The http request
      Returns:
      true if checkin should be skipped
    • getApplyToResources

      protected Iterator<Resource> getApplyToResources(SlingHttpServletRequest request)
      Returns an iterator on Resource instances addressed in the SlingPostConstants.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 the SlingPostConstants.RP_APPLY_TO parameter is ignored.
      Parameters:
      request - The SlingHttpServletRequest object used to get the SlingPostConstants.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(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 request
      path - the path to externalize
      Returns:
      the url
    • getResourcePath

      protected String getResourcePath(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(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 request
      resource - the resource to order
      changes - the list of modifications
      Throws:
      PersistenceException - in case the operation is not successful