org.apache.fulcrum.upload
Class DefaultUploadService

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.fulcrum.upload.DefaultUploadService
All Implemented Interfaces:
org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.context.Contextualizable, org.apache.avalon.framework.logger.LogEnabled, UploadService

public class DefaultUploadService
extends org.apache.avalon.framework.logger.AbstractLogEnabled
implements UploadService, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.context.Contextualizable

This class is an implementation of UploadService.

Files will be stored in temporary disk storage on in memory, depending on request size, and will be available from the org.apache.fulcrum.util.parser.ParameterParser as FileItem objects.

This implementation of UploadService handles multiple files per single html form, sent using multipart/form-data encoding type, as specified by RFC 1867. Use org.apache.fulcrum.parser.ParameterParser#getFileItems(String) to acquire an array of FileItem objects associated with given html form.

Version:
$Id: DefaultUploadService.java 1351114 2012-06-17 15:59:20Z tv $
Author:
Rafal Krzewski, Daniel Rall, Jason van Zyl

Field Summary
 
Fields inherited from interface org.apache.fulcrum.upload.UploadService
CONTENT_DISPOSITION, CONTENT_TYPE, FORM_DATA, HEADER_ENCODING_DEFAULT, HEADER_ENCODING_KEY, MIXED, MULTIPART, MULTIPART_FORM_DATA, MULTIPART_MIXED, REPOSITORY_DEFAULT, REPOSITORY_KEY, REPOSITORY_PARAMETER, ROLE, SIZE_MAX_DEFAULT, SIZE_MAX_KEY, SIZE_THRESHOLD_DEFAULT, SIZE_THRESHOLD_KEY
 
Constructor Summary
DefaultUploadService()
           
 
Method Summary
 void configure(org.apache.avalon.framework.configuration.Configuration conf)
          Avalon component lifecycle method
 void contextualize(org.apache.avalon.framework.context.Context context)
          Avalon component lifecycle method
 String getHeaderEncoding()
           Retrieves the value of the headerEncoding property of UploadService.
 org.apache.commons.fileupload.FileItemIterator getItemIterator(javax.servlet.http.HttpServletRequest req)
          Processes an RFC 1867 compliant multipart/form-data stream.
 String getRepository()
          The location used to temporarily store files that are larger than the size threshold.
 long getSizeMax()
          The maximum allowed upload size
 long getSizeThreshold()
          The threshold beyond which files are written directly to disk.
 void initialize()
          Avalon component lifecycle method Initializes the service.
 boolean isMultipart(javax.servlet.http.HttpServletRequest req)
          Utility method that determines whether the request contains multipart content.
 List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req)
          Parses a RFC 1867 compliant multipart/form-data stream.
protected  List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req, int sizeMax, org.apache.commons.fileupload.disk.DiskFileItemFactory factory)
          Parses a RFC 1867 compliant multipart/form-data stream.
 List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req, int sizeThreshold, int sizeMax, String path)
          Parses a RFC 1867 compliant multipart/form-data stream.
 List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req, String path)
          Parses a RFC 1867 compliant multipart/form-data stream.
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultUploadService

public DefaultUploadService()
Method Detail

getSizeMax

public long getSizeMax()
The maximum allowed upload size

Specified by:
getSizeMax in interface UploadService
Returns:
The maximum upload size.

getSizeThreshold

public long getSizeThreshold()
The threshold beyond which files are written directly to disk.

Specified by:
getSizeThreshold in interface UploadService
Returns:
The threshold beyond which files are written directly to disk.

getRepository

public String getRepository()
The location used to temporarily store files that are larger than the size threshold.

Specified by:
getRepository in interface UploadService
Returns:
The repository.

getHeaderEncoding

public String getHeaderEncoding()
Description copied from interface: UploadService

Retrieves the value of the headerEncoding property of UploadService.

Specified by:
getHeaderEncoding in interface UploadService
Returns:
Returns the headerEncoding.

parseRequest

public List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req)
                                                          throws org.apache.avalon.framework.service.ServiceException

Parses a RFC 1867 compliant multipart/form-data stream.

Specified by:
parseRequest in interface UploadService
Parameters:
req - The servlet request to be parsed.
Throws:
org.apache.avalon.framework.service.ServiceException - Problems reading/parsing the request or storing the uploaded file(s).

parseRequest

public List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req,
                                                                 String path)
                                                          throws org.apache.avalon.framework.service.ServiceException

Parses a RFC 1867 compliant multipart/form-data stream.

Specified by:
parseRequest in interface UploadService
Parameters:
req - The servlet request to be parsed.
path - The location where the files should be stored.
Throws:
org.apache.avalon.framework.service.ServiceException - Problems reading/parsing the request or storing the uploaded file(s).

parseRequest

public List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req,
                                                                 int sizeThreshold,
                                                                 int sizeMax,
                                                                 String path)
                                                          throws org.apache.avalon.framework.service.ServiceException

Parses a RFC 1867 compliant multipart/form-data stream.

Specified by:
parseRequest in interface UploadService
Parameters:
req - The servlet request to be parsed.
sizeThreshold - the max size in bytes to be stored in memory
sizeMax - the maximum allowed upload size in bytes
path - The location where the files should be stored.
Throws:
org.apache.avalon.framework.service.ServiceException - Problems reading/parsing the request or storing the uploaded file(s).

parseRequest

protected List<org.apache.commons.fileupload.FileItem> parseRequest(javax.servlet.http.HttpServletRequest req,
                                                                    int sizeMax,
                                                                    org.apache.commons.fileupload.disk.DiskFileItemFactory factory)
                                                             throws org.apache.avalon.framework.service.ServiceException

Parses a RFC 1867 compliant multipart/form-data stream.

Parameters:
req - The servlet request to be parsed.
sizeMax - the maximum allowed upload size in bytes
factory - the file item factory to use
Throws:
org.apache.avalon.framework.service.ServiceException - Problems reading/parsing the request or storing the uploaded file(s).

getItemIterator

public org.apache.commons.fileupload.FileItemIterator getItemIterator(javax.servlet.http.HttpServletRequest req)
                                                               throws org.apache.avalon.framework.service.ServiceException
Processes an RFC 1867 compliant multipart/form-data stream.

Specified by:
getItemIterator in interface UploadService
Parameters:
req - The servlet request to be parsed.
Returns:
An iterator to instances of FileItemStream parsed from the request, in the order that they were transmitted.
Throws:
org.apache.avalon.framework.service.ServiceException - if there are problems reading/parsing the request or storing files. This may also be a network error while communicating with the client or a problem while storing the uploaded content.

isMultipart

public boolean isMultipart(javax.servlet.http.HttpServletRequest req)
Utility method that determines whether the request contains multipart content.

Specified by:
isMultipart in interface UploadService
Parameters:
req - The servlet request to be evaluated. Must be non-null.
Returns:
true if the request is multipart; false otherwise.

configure

public void configure(org.apache.avalon.framework.configuration.Configuration conf)
Avalon component lifecycle method

Specified by:
configure in interface org.apache.avalon.framework.configuration.Configurable

initialize

public void initialize()
                throws Exception
Avalon component lifecycle method Initializes the service. This method processes the repository path, to make it relative to the web application root, if necessary

Specified by:
initialize in interface org.apache.avalon.framework.activity.Initializable
Throws:
Exception

contextualize

public void contextualize(org.apache.avalon.framework.context.Context context)
                   throws org.apache.avalon.framework.context.ContextException
Avalon component lifecycle method

Specified by:
contextualize in interface org.apache.avalon.framework.context.Contextualizable
Throws:
org.apache.avalon.framework.context.ContextException


Copyright © 2005-2012 The Apache Software Foundation. All Rights Reserved.