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 Summary
Fields Modifier and Type Field Description static String
NT_FILE
-
Fields inherited from class org.apache.sling.servlets.post.impl.operations.AbstractPostOperation
jcrSupport, log
-
Fields inherited from interface org.apache.sling.servlets.post.PostOperation
PROP_OPERATION_NAME, SERVICE_NAME
-
-
Constructor Summary
Constructors Constructor Description StreamedUploadOperation()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected 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
.boolean
isRequestStreamed(org.apache.sling.api.SlingHttpServletRequest request)
Check the request and return true if there is a parts iterator attribute present.void
setServletContext(javax.servlet.ServletContext servletContext)
-
Methods inherited from class org.apache.sling.servlets.post.impl.operations.AbstractPostOperation
externalizePath, getApplyToResources, getResourcePath, getVersioningConfiguration, isSkipCheckin, orderResource, run
-
-
-
-
Field Detail
-
NT_FILE
public static final String NT_FILE
- See Also:
- Constant Field Values
-
-
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 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.- Specified by:
doRun
in classAbstractPostOperation
- 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.
-
-