Class StreamedUploadOperation

java.lang.Object
org.apache.sling.servlets.post.impl.operations.AbstractPostOperation
org.apache.sling.servlets.post.impl.operations.StreamedUploadOperation
All Implemented Interfaces:
PostOperation

public class StreamedUploadOperation extends AbstractPostOperation
Performs a streamed modification of the content. Each File body encountered will result in a session save operation, to cause the underlying Resource implementation to stream content from the request to the target. This implements PostOperation but does not touch the normal Sling Request processing which is not streamed. The map of available fields is built up as the request is streamed. It is advisable to submit the request with all the form fields at the start of the request (normally based on DOM order) to ensure they are available before the streamed bodies are processed. The implementation does not implement the full Sling protocol aiming to keep it simple, and just deal with a streaming upload operation. The implementation binds to the Sling Resource API rather than JCR to keep it independent of the type of persistence.
  • Field Details

  • Constructor Details

    • StreamedUploadOperation

      public StreamedUploadOperation()
  • Method Details

    • setServletContext

      public void setServletContext(javax.servlet.ServletContext servletContext)
    • isRequestStreamed

      public boolean isRequestStreamed(SlingHttpServletRequest request)
      Check the request and return true if there is a parts iterator attribute present. This attribute will have been put there by the Sling Engine ParameterSupport class. If its not present, the request is not streamed and cant be processed by this class. Check this first before using this class.
      Parameters:
      request - the request.
      Returns:
      true if the request can be streamed.
    • doRun

      protected void doRun(SlingHttpServletRequest request, PostResponse response, List<Modification> changes) throws PersistenceException
      Description copied from class: AbstractPostOperation
      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.

      Specified by:
      doRun in class AbstractPostOperation
      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.