Class 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.
    • Constructor Detail

      • StreamedUploadOperation

        public StreamedUploadOperation()
    • Method Detail

      • setServletContext

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

        public boolean isRequestStreamed​(org.apache.sling.api.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​(org.apache.sling.api.SlingHttpServletRequest request,
                             PostResponse response,
                             List<Modification> changes)
                      throws org.apache.sling.api.resource.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:
        org.apache.sling.api.resource.PersistenceException - Maybe thrown if any error occurs while accessing the repository.