Class 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 org.apache.commons.fileupload.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 org.apache.commons.fileupload.FileItem objects associated with given html form.

    Version:
    $Id$
    Author:
    Rafal Krzewski, Daniel Rall, Jason van Zyl
    • Method Detail

      • 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.
      • parseRequest

        public List<org.apache.commons.fileupload.FileItem> parseRequest​(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.
        Returns:
        list of file items
        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​(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.
        Returns:
        List of FileItem parts
        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​(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.
        Returns:
        list of file items
        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​(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
        Returns:
        list of file items
        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​(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.
      • parseRequest

        public List<org.apache.commons.fileupload.FileItem> parseRequest​(javax.portlet.ActionRequest 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 portlet request to be parsed.
        Returns:
        List of FileItem parts
        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.portlet.ActionRequest 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 portlet request to be parsed.
        path - The location where the files should be stored.
        Returns:
        List of FileItem parts
        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.portlet.ActionRequest 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 portlet 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.
        Returns:
        The list of FileItem parts uploaded
        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.portlet.ActionRequest 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 portlet request to be parsed.
        sizeMax - the maximum allowed upload size in bytes
        factory - the file item factory to use
        Returns:
        The list of FileItem parts uploaded
        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.portlet.ActionRequest 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 portlet 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​(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.
      • isMultipart

        public boolean isMultipart​(javax.portlet.ActionRequest req)
        Utility method that determines whether the request contains multipart content.
        Specified by:
        isMultipart in interface UploadService
        Parameters:
        req - The portlet 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