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
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 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
-
Method Summary
Modifier and TypeMethodDescriptionprotected 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
.boolean
isRequestStreamed
(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 Details
-
NT_FILE
- See Also:
-
-
Constructor Details
-
StreamedUploadOperation
public StreamedUploadOperation()
-
-
Method Details
-
setServletContext
public void setServletContext(javax.servlet.ServletContext servletContext) -
isRequestStreamed
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 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:
PersistenceException
- Maybe thrown if any error occurs while accessing the repository.
-