Author: painter
Date: Mon Nov  5 18:21:24 2018
New Revision: 1845828

URL: http://svn.apache.org/viewvc?rev=1845828&view=rev
Log:
Javadoc cleanup

Modified:
    
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/DefaultUploadService.java
    
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/UploadService.java

Modified: 
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/DefaultUploadService.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/DefaultUploadService.java?rev=1845828&r1=1845827&r2=1845828&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/DefaultUploadService.java
 (original)
+++ 
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/DefaultUploadService.java
 Mon Nov  5 18:21:24 2018
@@ -1,6 +1,5 @@
 package org.apache.fulcrum.upload;
 
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -20,7 +19,6 @@ package org.apache.fulcrum.upload;
  * under the License.
  */
 
-
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
@@ -44,409 +42,366 @@ import org.apache.commons.fileupload.por
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
 /**
- * <p> This class is an implementation of {@link UploadService}.
+ * <p>
+ * This class is an implementation of {@link UploadService}.
  *
- * <p> Files will be stored in temporary disk storage on in memory,
- * depending on request size, and will be available from the {@link
- * org.apache.fulcrum.util.parser.ParameterParser} as {@link
- * org.apache.commons.fileupload.FileItem} objects.
+ * <p>
+ * Files will be stored in temporary disk storage on in memory, depending on
+ * request size, and will be available from the
+ * <code>org.apache.fulcrum.util.parser.ParameterParser</code> as
+ * <code>org.apache.commons.fileupload.FileItem</code> objects.
  *
- * <p>This implementation of {@link UploadService} handles multiple
- * files per single html form, sent using multipart/form-data encoding
- * type, as specified by RFC 1867.  Use {@link
- * org.apache.fulcrum.parser.ParameterParser#getFileItems(String)} to
- * acquire an array of {@link
- * org.apache.commons.fileupload.FileItem} objects associated with given
- * html form.
+ * <p>
+ * This implementation of {@link UploadService} handles multiple files per
+ * single html form, sent using multipart/form-data encoding type, as specified
+ * by RFC 1867. Use
+ * <code>org.apache.fulcrum.parser.ParameterParser#getFileItems(String)</code> 
to
+ * acquire an array of <code>org.apache.commons.fileupload.FileItem</code> 
objects
+ * associated with given html form.
  *
  * @author <a href="mailto:rafal.krzew...@e-point.pl";>Rafal Krzewski</a>
  * @author <a href="mailto:d...@collab.net";>Daniel Rall</a>
  * @author <a href="mailto:jvan...@apache.org";>Jason van Zyl</a>
  * @version $Id$
  */
-public class DefaultUploadService
-    extends AbstractLogEnabled
-    implements UploadService, Initializable, Configurable, Contextualizable
-{
-    /** A File Item Factory object for the actual uploading */
-    private DiskFileItemFactory itemFactory;
-
-    private int sizeThreshold;
-    private int sizeMax;
-
-    private String repositoryPath;
-    private String headerEncoding;
-
-    /**
-     * The application root
-     */
-    private String applicationRoot;
-
-    /**
-     * The maximum allowed upload size
-     */
-    @Override
-       public long getSizeMax()
-    {
-        return sizeMax;
-    }
-
-    /**
-     * The threshold beyond which files are written directly to disk.
-     */
-    @Override
-       public long getSizeThreshold()
-    {
-        return itemFactory.getSizeThreshold();
-    }
-
-    /**
-     * The location used to temporarily store files that are larger
-     * than the size threshold.
-     */
-    @Override
-       public String getRepository()
-    {
-        return itemFactory.getRepository().getAbsolutePath();
-    }
-
-    /**
-     * @return Returns the headerEncoding.
-     */
-    @Override
-       public String getHeaderEncoding()
-    {
-        return headerEncoding;
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    @Override
-       public List<FileItem> parseRequest(HttpServletRequest req)
-        throws ServiceException
-    {
-        return parseRequest(req, this.sizeMax, this.itemFactory);
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    @Override
-       public List<FileItem> parseRequest(HttpServletRequest req, String path)
-        throws ServiceException
-    {
-        return parseRequest(req, this.sizeThreshold, this.sizeMax, path);
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @param sizeThreshold the max size in bytes to be stored in memory
-     * @param sizeMax the maximum allowed upload size in bytes
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    @Override
-       public List<FileItem> parseRequest(HttpServletRequest req, int 
sizeThreshold,
-                                  int sizeMax, String path)
-            throws ServiceException
-    {
-        return parseRequest(req, sizeMax, new 
DiskFileItemFactory(sizeThreshold, new File(path)));
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @param sizeMax the maximum allowed upload size in bytes
-     * @param factory the file item factory to use
-     *
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    protected List<FileItem> parseRequest(HttpServletRequest req, int sizeMax, 
DiskFileItemFactory factory)
-            throws ServiceException
-    {
-        try
-        {
-            ServletFileUpload fileUpload = new ServletFileUpload(factory);
-            fileUpload.setSizeMax(sizeMax);
-            fileUpload.setHeaderEncoding(headerEncoding);
-            return fileUpload.parseRequest(req);
-        }
-        catch (FileUploadException e)
-        {
-            throw new ServiceException(UploadService.ROLE, e.getMessage(), e);
-        }
-    }
-
-    /**
-     * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.
-     *
-     * @param req The servlet request to be parsed.
-     *
-     * @return An iterator to instances of <code>FileItemStream</code>
-     *         parsed from the request, in the order that they were
-     *         transmitted.
-     *
-     * @throws 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.
-     */
-    @Override
-       public FileItemIterator getItemIterator(HttpServletRequest req) throws 
ServiceException
-    {
-        ServletFileUpload upload = new ServletFileUpload();
-        try
-        {
-            return upload.getItemIterator(req);
-        }
-        catch (FileUploadException e)
-        {
-            throw new ServiceException(UploadService.ROLE, e.getMessage(), e);
-        }
-        catch (IOException e)
-        {
-            throw new ServiceException(UploadService.ROLE, e.getMessage(), e);
-        }
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    @Override
-       public List<FileItem> parseRequest(ActionRequest req)
-        throws ServiceException
-    {
-        return parseRequest(req, this.sizeMax, this.itemFactory);
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    @Override
-       public List<FileItem> parseRequest(ActionRequest req, String path)
-        throws ServiceException
-    {
-        return parseRequest(req, this.sizeThreshold, this.sizeMax, path);
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @param sizeThreshold the max size in bytes to be stored in memory
-     * @param sizeMax the maximum allowed upload size in bytes
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    @Override
-       public List<FileItem> parseRequest(ActionRequest req, int sizeThreshold,
-                                  int sizeMax, String path)
-            throws ServiceException
-    {
-        return parseRequest(req, sizeMax, new 
DiskFileItemFactory(sizeThreshold, new File(path)));
-    }
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @param sizeMax the maximum allowed upload size in bytes
-     * @param factory the file item factory to use
-     *
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    protected List<FileItem> parseRequest(ActionRequest req, int sizeMax, 
DiskFileItemFactory factory)
-            throws ServiceException
-    {
-        try
-        {
-            PortletFileUpload fileUpload = new PortletFileUpload(factory);
-            fileUpload.setSizeMax(sizeMax);
-            fileUpload.setHeaderEncoding(headerEncoding);
-            return fileUpload.parseRequest(req);
-        }
-        catch (FileUploadException e)
-        {
-            throw new ServiceException(UploadService.ROLE, e.getMessage(), e);
-        }
-    }
-
-    /**
-     * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.
-     *
-     * @param req The portlet request to be parsed.
-     *
-     * @return An iterator to instances of <code>FileItemStream</code>
-     *         parsed from the request, in the order that they were
-     *         transmitted.
-     *
-     * @throws 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.
-     */
-    @Override
-       public FileItemIterator getItemIterator(ActionRequest req) throws 
ServiceException
-    {
-        PortletFileUpload upload = new PortletFileUpload();
-        try
-        {
-            return upload.getItemIterator(req);
-        }
-        catch (FileUploadException e)
-        {
-            throw new ServiceException(UploadService.ROLE, e.getMessage(), e);
-        }
-        catch (IOException e)
-        {
-            throw new ServiceException(UploadService.ROLE, e.getMessage(), e);
-        }
-    }
-
-    /**
-     * Utility method that determines whether the request contains multipart
-     * content.
-     *
-     * @param req The servlet request to be evaluated. Must be non-null.
-     *
-     * @return <code>true</code> if the request is multipart;
-     *         <code>false</code> otherwise.
-     */
-    @Override
-       public boolean isMultipart(HttpServletRequest req)
-    {
-        return ServletFileUpload.isMultipartContent(req);
-    }
-
-    /**
-     * Utility method that determines whether the request contains multipart
-     * content.
-     *
-     * @param req The portlet request to be evaluated. Must be non-null.
-     *
-     * @return <code>true</code> if the request is multipart;
-     *         <code>false</code> otherwise.
-     */
-    @Override
-       public boolean isMultipart(ActionRequest req)
-    {
-        return PortletFileUpload.isMultipartContent(req);
-    }
-
-    /**
-     * @see org.apache.fulcrum.ServiceBroker#getRealPath(String)
-     */
-    private String getRealPath(String path)
-    {
-        String absolutePath = null;
-        if (applicationRoot == null)
-        {
-            absolutePath = new File(path).getAbsolutePath();
-        }
-        else
-        {
-            absolutePath = new File(applicationRoot, path).getAbsolutePath();
-        }
-
-        return absolutePath;
-    }
-
-    // ---------------- Avalon Lifecycle Methods ---------------------
-    /**
-     * Avalon component lifecycle method
-     */
-    @Override
-       public void configure(Configuration conf)
-    {
-        repositoryPath = conf.getAttribute(
-                UploadService.REPOSITORY_KEY,
-                UploadService.REPOSITORY_DEFAULT);
-
-        headerEncoding = conf.getAttribute(
-                UploadService.HEADER_ENCODING_KEY,
-                UploadService.HEADER_ENCODING_DEFAULT);
-
-        sizeMax = conf.getAttributeAsInteger(
-                UploadService.SIZE_MAX_KEY,
-                UploadService.SIZE_MAX_DEFAULT);
-
-        sizeThreshold = conf.getAttributeAsInteger(
-                UploadService.SIZE_THRESHOLD_KEY,
-                UploadService.SIZE_THRESHOLD_DEFAULT);
-    }
-
-    /**
-     * Avalon component lifecycle method
-     *
-     * Initializes the service.
-     *
-     * This method processes the repository path, to make it relative to the
-     * web application root, if necessary
-     */
-    @Override
-       public void initialize() throws Exception
-    {
-        // test for the existence of the path within the webapp directory.
-        // if it does not exist, assume the path was to be used as is.
-        String testPath = getRealPath(repositoryPath);
-        File testDir = new File(testPath);
-        if ( testDir.exists() )
-        {
-            repositoryPath = testPath;
-        }
-
-        getLogger().debug(
-                "Upload Service: REPOSITORY_KEY => " + repositoryPath);
-
-        itemFactory = new DiskFileItemFactory(sizeThreshold, new 
File(repositoryPath));
-    }
-
-    /**
-     * Avalon component lifecycle method
-     */
-    @Override
-       public void contextualize(Context context) throws ContextException
-    {
-        this.applicationRoot = context.get( "urn:avalon:home" ).toString();
-    }
+public class DefaultUploadService extends AbstractLogEnabled
+               implements UploadService, Initializable, Configurable, 
Contextualizable {
+       /** A File Item Factory object for the actual uploading */
+       private DiskFileItemFactory itemFactory;
+
+       private int sizeThreshold;
+       private int sizeMax;
+
+       private String repositoryPath;
+       private String headerEncoding;
+
+       /**
+        * The application root
+        */
+       private String applicationRoot;
+
+       /**
+        * The maximum allowed upload size
+        */
+       @Override
+       public long getSizeMax() {
+               return sizeMax;
+       }
+
+       /**
+        * The threshold beyond which files are written directly to disk.
+        */
+       @Override
+       public long getSizeThreshold() {
+               return itemFactory.getSizeThreshold();
+       }
+
+       /**
+        * The location used to temporarily store files that are larger than 
the size
+        * threshold.
+        */
+       @Override
+       public String getRepository() {
+               return itemFactory.getRepository().getAbsolutePath();
+       }
+
+       /**
+        * @return Returns the headerEncoding.
+        */
+       @Override
+       public String getHeaderEncoding() {
+               return headerEncoding;
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req The servlet request to be parsed.
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       @Override
+       public List<FileItem> parseRequest(HttpServletRequest req) throws 
ServiceException {
+               return parseRequest(req, this.sizeMax, this.itemFactory);
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req  The servlet request to be parsed.
+        * @param path The location where the files should be stored.
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       @Override
+       public List<FileItem> parseRequest(HttpServletRequest req, String path) 
throws ServiceException {
+               return parseRequest(req, this.sizeThreshold, this.sizeMax, 
path);
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req           The servlet request to be parsed.
+        * @param sizeThreshold the max size in bytes to be stored in memory
+        * @param sizeMax       the maximum allowed upload size in bytes
+        * @param path          The location where the files should be stored.
+        * @return list of file items
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       @Override
+       public List<FileItem> parseRequest(HttpServletRequest req, int 
sizeThreshold, int sizeMax, String path)
+                       throws ServiceException {
+               return parseRequest(req, sizeMax, new 
DiskFileItemFactory(sizeThreshold, new File(path)));
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req     The servlet request to be parsed.
+        * @param sizeMax the maximum allowed upload size in bytes
+        * @param factory the file item factory to use
+        * @return list of file items
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       protected List<FileItem> parseRequest(HttpServletRequest req, int 
sizeMax, DiskFileItemFactory factory)
+                       throws ServiceException {
+               try {
+                       ServletFileUpload fileUpload = new 
ServletFileUpload(factory);
+                       fileUpload.setSizeMax(sizeMax);
+                       fileUpload.setHeaderEncoding(headerEncoding);
+                       return fileUpload.parseRequest(req);
+               } catch (FileUploadException e) {
+                       throw new ServiceException(UploadService.ROLE, 
e.getMessage(), e);
+               }
+       }
+
+       /**
+        * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 
1867</a>
+        * compliant <code>multipart/form-data</code> stream.
+        *
+        * @param req The servlet request to be parsed.
+        *
+        * @return An iterator to instances of <code>FileItemStream</code> 
parsed from
+        *         the request, in the order that they were transmitted.
+        *
+        * @throws 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.
+        */
+       @Override
+       public FileItemIterator getItemIterator(HttpServletRequest req) throws 
ServiceException {
+               ServletFileUpload upload = new ServletFileUpload();
+               try {
+                       return upload.getItemIterator(req);
+               } catch (FileUploadException e) {
+                       throw new ServiceException(UploadService.ROLE, 
e.getMessage(), e);
+               } catch (IOException e) {
+                       throw new ServiceException(UploadService.ROLE, 
e.getMessage(), e);
+               }
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req The portlet request to be parsed.
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       @Override
+       public List<FileItem> parseRequest(ActionRequest req) throws 
ServiceException {
+               return parseRequest(req, this.sizeMax, this.itemFactory);
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req  The portlet request to be parsed.
+        * @param path The location where the files should be stored.
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       @Override
+       public List<FileItem> parseRequest(ActionRequest req, String path) 
throws ServiceException {
+               return parseRequest(req, this.sizeThreshold, this.sizeMax, 
path);
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req           The portlet request to be parsed.
+        * @param sizeThreshold the max size in bytes to be stored in memory
+        * @param sizeMax       the maximum allowed upload size in bytes
+        * @param path          The location where the files should be stored.
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       @Override
+       public List<FileItem> parseRequest(ActionRequest req, int 
sizeThreshold, int sizeMax, String path)
+                       throws ServiceException {
+               return parseRequest(req, sizeMax, new 
DiskFileItemFactory(sizeThreshold, new File(path)));
+       }
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req     The portlet request to be parsed.
+        * @param sizeMax the maximum allowed upload size in bytes
+        * @param factory the file item factory to use
+        * @return The list of FileItem parts uploaded
+        * @throws ServiceException Problems reading/parsing the request or 
storing the
+        *                          uploaded file(s).
+        */
+       protected List<FileItem> parseRequest(ActionRequest req, int sizeMax, 
DiskFileItemFactory factory)
+                       throws ServiceException {
+               try {
+                       PortletFileUpload fileUpload = new 
PortletFileUpload(factory);
+                       fileUpload.setSizeMax(sizeMax);
+                       fileUpload.setHeaderEncoding(headerEncoding);
+                       return fileUpload.parseRequest(req);
+               } catch (FileUploadException e) {
+                       throw new ServiceException(UploadService.ROLE, 
e.getMessage(), e);
+               }
+       }
+
+       /**
+        * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 
1867</a>
+        * compliant <code>multipart/form-data</code> stream.
+        *
+        * @param req The portlet request to be parsed.
+        *
+        * @return An iterator to instances of <code>FileItemStream</code> 
parsed from
+        *         the request, in the order that they were transmitted.
+        *
+        * @throws 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.
+        */
+       @Override
+       public FileItemIterator getItemIterator(ActionRequest req) throws 
ServiceException {
+               PortletFileUpload upload = new PortletFileUpload();
+               try {
+                       return upload.getItemIterator(req);
+               } catch (FileUploadException e) {
+                       throw new ServiceException(UploadService.ROLE, 
e.getMessage(), e);
+               } catch (IOException e) {
+                       throw new ServiceException(UploadService.ROLE, 
e.getMessage(), e);
+               }
+       }
+
+       /**
+        * Utility method that determines whether the request contains multipart
+        * content.
+        *
+        * @param req The servlet request to be evaluated. Must be non-null.
+        *
+        * @return <code>true</code> if the request is multipart; 
<code>false</code>
+        *         otherwise.
+        */
+       @Override
+       public boolean isMultipart(HttpServletRequest req) {
+               return ServletFileUpload.isMultipartContent(req);
+       }
+
+       /**
+        * Utility method that determines whether the request contains multipart
+        * content.
+        *
+        * @param req The portlet request to be evaluated. Must be non-null.
+        *
+        * @return <code>true</code> if the request is multipart; 
<code>false</code>
+        *         otherwise.
+        */
+       @Override
+       public boolean isMultipart(ActionRequest req) {
+               return PortletFileUpload.isMultipartContent(req);
+       }
+
+       /**
+        * @see org.apache.fulcrum.ServiceBroker#getRealPath(String)
+        */
+       private String getRealPath(String path) {
+               String absolutePath = null;
+               if (applicationRoot == null) {
+                       absolutePath = new File(path).getAbsolutePath();
+               } else {
+                       absolutePath = new File(applicationRoot, 
path).getAbsolutePath();
+               }
+
+               return absolutePath;
+       }
+
+       // ---------------- Avalon Lifecycle Methods ---------------------
+       /**
+        * Avalon component lifecycle method
+        */
+       @Override
+       public void configure(Configuration conf) {
+               repositoryPath = 
conf.getAttribute(UploadService.REPOSITORY_KEY, 
UploadService.REPOSITORY_DEFAULT);
+
+               headerEncoding = 
conf.getAttribute(UploadService.HEADER_ENCODING_KEY, 
UploadService.HEADER_ENCODING_DEFAULT);
+
+               sizeMax = 
conf.getAttributeAsInteger(UploadService.SIZE_MAX_KEY, 
UploadService.SIZE_MAX_DEFAULT);
+
+               sizeThreshold = 
conf.getAttributeAsInteger(UploadService.SIZE_THRESHOLD_KEY,
+                               UploadService.SIZE_THRESHOLD_DEFAULT);
+       }
+
+       /**
+        * Avalon component lifecycle method
+        *
+        * Initializes the service.
+        *
+        * This method processes the repository path, to make it relative to 
the web
+        * application root, if necessary
+        */
+       @Override
+       public void initialize() throws Exception {
+               // test for the existence of the path within the webapp 
directory.
+               // if it does not exist, assume the path was to be used as is.
+               String testPath = getRealPath(repositoryPath);
+               File testDir = new File(testPath);
+               if (testDir.exists()) {
+                       repositoryPath = testPath;
+               }
+
+               getLogger().debug("Upload Service: REPOSITORY_KEY => " + 
repositoryPath);
+
+               itemFactory = new DiskFileItemFactory(sizeThreshold, new 
File(repositoryPath));
+       }
+
+       /**
+        * Avalon component lifecycle method
+        */
+       @Override
+       public void contextualize(Context context) throws ContextException {
+               this.applicationRoot = 
context.get("urn:avalon:home").toString();
+       }
 }

Modified: 
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/UploadService.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/UploadService.java?rev=1845828&r1=1845827&r2=1845828&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/UploadService.java
 (original)
+++ 
turbine/fulcrum/trunk/upload/src/java/org/apache/fulcrum/upload/UploadService.java
 Mon Nov  5 18:21:24 2018
@@ -1,6 +1,5 @@
 package org.apache.fulcrum.upload;
 
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -20,7 +19,6 @@ package org.apache.fulcrum.upload;
  * under the License.
  */
 
-
 import java.util.List;
 
 import javax.portlet.ActionRequest;
@@ -31,11 +29,11 @@ import org.apache.commons.fileupload.Fil
 import org.apache.commons.fileupload.FileItemIterator;
 
 /**
- * <p> This service handles parsing <code>multipart/form-data</code>
- * POST requests and turning them into form fields and uploaded files.
- * This can be either performed automatically by the {@link
- * org.apache.fulcrum.parser.ParameterParser} or manually by an user
- * defined {@link org.apache.turbine.modules.Action}.
+ * <p>
+ * This service handles parsing <code>multipart/form-data</code> POST requests
+ * and turning them into form fields and uploaded files. This can be either
+ * performed automatically by the 
<code>org.apache.fulcrum.parser.ParameterParser</code> or manually by a user
+ * defined <code>org.apache.turbine.modules.Action</code>.
  *
  * @author <a href="mailto:rafal.krzew...@e-point.pl";>Rafal Krzewski</a>
  * @author <a href="mailto:d...@collab.net";>Daniel Rall</a>
@@ -44,276 +42,280 @@ import org.apache.commons.fileupload.Fil
 public interface UploadService
 
 {
-    /** Avalon Identifier **/
-    String ROLE = UploadService.class.getName();
+       /** Avalon Identifier **/
+       String ROLE = UploadService.class.getName();
 
-    /**
-     * HTTP header.
-     */
-    String CONTENT_TYPE = "Content-type";
-
-    /**
-     * HTTP header.
-     */
-    String CONTENT_DISPOSITION = "Content-disposition";
-
-    /**
-     * HTTP header base type.
-     */
-    String MULTIPART = "multipart";
-
-    /**
-     * HTTP header base type modifier.
-     */
-    String FORM_DATA = "form-data";
-
-    /**
-     * HTTP header base type modifier.
-     */
-    String MIXED = "mixed";
-
-    /**
-     * HTTP header.
-     */
-    String MULTIPART_FORM_DATA =
-        MULTIPART + '/' + FORM_DATA;
-
-    /**
-     * HTTP header.
-     */
-    String MULTIPART_MIXED = MULTIPART + '/' + MIXED;
-
-    /**
-     * The request parameter name for overriding 'repository' property
-     * (path).
-     */
-    String REPOSITORY_PARAMETER = "path";
-
-    /**
-     * The key in UploadService properties in
-     * TurbineResources.properties 'repository' property.
-     */
-    String REPOSITORY_KEY = "repository";
-
-    /**
-     * <p> The default value of 'repository' property (.).  This is
-     * the directory where uploaded files will get stored temporarily.
-     * Note that "."  is whatever the servlet container chooses to be
-     * it's 'current directory'.
-     */
-    String REPOSITORY_DEFAULT = ".";
-
-    /**
-     * w The key in UploadService properties in
-     * service configuration 'sizeMax' property.
-     */
-    String SIZE_MAX_KEY = "sizeMax";
-
-    /**
-     * <p> The default value of 'sizMax' property (1 megabyte =
-     * 1048576 bytes).  This is the maximum size of POST request that
-     * will be parsed by the uploader.  If you need to set specific
-     * limits for your users, set this property to the largest limit
-     * value, and use an action + no auto upload to enforce limits.
-     *
-     */
-    int SIZE_MAX_DEFAULT = 1048576;
-
-    /**
-     * The key in UploadService properties in
-     * TurbineResources.properties 'sizeThreshold' property.
-     */
-    String SIZE_THRESHOLD_KEY = "sizeThreshold";
-
-    /**
-     * <p> The default value of 'sizeThreshold' property (10
-     * kilobytes = 10240 bytes).  This is the maximum size of a POST
-     * request that will have it's components stored temporarily in
-     * memory, instead of disk.
-     */
-    int SIZE_THRESHOLD_DEFAULT = 10240;
-
-    /**
-     * The key in UploadService properties in
-     * TurbineResources.properties 'headerEncoding' property.
-     */
-    String HEADER_ENCODING_KEY = "headerEncoding";
-
-    /**
-     * <p> The default value of 'headerEncoding' property (.).
-     * The value has been decided by copying from DiskFileItem class
-     */
-    String HEADER_ENCODING_DEFAULT = "ISO-8859-1";
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    List<FileItem> parseRequest(HttpServletRequest req)
-        throws ServiceException;
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    List<FileItem> parseRequest(HttpServletRequest req, String path)
-        throws ServiceException;
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The servlet request to be parsed.
-     * @param sizeThreshold the max size in bytes to be stored in memory
-     * @param sizeMax the maximum allowed upload size in bytes
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    List<FileItem> parseRequest(HttpServletRequest req, int sizeThreshold,
-        int sizeMax, String path)
-        throws ServiceException;
-
-
-    /**
-     * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.
-     *
-     * @param req The servlet request to be parsed.
-     *
-     * @return An iterator to instances of <code>FileItemStream</code>
-     *         parsed from the request, in the order that they were
-     *         transmitted.
-     *
-     * @throws 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.
-     */
-    FileItemIterator getItemIterator(HttpServletRequest req) throws 
ServiceException;
-
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    List<FileItem> parseRequest(ActionRequest req)
-        throws ServiceException;
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    List<FileItem> parseRequest(ActionRequest req, String path)
-        throws ServiceException;
-
-    /**
-     * <p>Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.</p>
-     *
-     * @param req The portlet request to be parsed.
-     * @param sizeThreshold the max size in bytes to be stored in memory
-     * @param sizeMax the maximum allowed upload size in bytes
-     * @param path The location where the files should be stored.
-     * @exception ServiceException Problems reading/parsing the
-     * request or storing the uploaded file(s).
-     */
-    List<FileItem> parseRequest(ActionRequest req, int sizeThreshold,
-        int sizeMax, String path)
-        throws ServiceException;
-
-
-    /**
-     * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a>
-     * compliant <code>multipart/form-data</code> stream.
-     *
-     * @param req The portlet request to be parsed.
-     *
-     * @return An iterator to instances of <code>FileItemStream</code>
-     *         parsed from the request, in the order that they were
-     *         transmitted.
-     *
-     * @throws 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.
-     */
-    FileItemIterator getItemIterator(ActionRequest req) throws 
ServiceException;
-
-
-    /**
-     * <p> Retrieves the value of <code>size.max</code> property of the
-     * {@link org.apache.fulcrum.upload.UploadService}.
-     *
-     * @return The maximum upload size.
-     */
-    long getSizeMax();
-
-    /**
-     * <p> Retrieves the value of <code>size.threshold</code> property of
-     * {@link org.apache.fulcrum.upload.UploadService}.
-     *
-     * @return The threshold beyond which files are written directly to disk.
-     */
-    long getSizeThreshold();
-
-    /**
-     * <p> Retrieves the value of the <code>repository</code> property of
-     * {@link org.apache.fulcrum.upload.UploadService}.
-     *
-     * @return The repository.
-     */
-    String getRepository();
-
-    /**
-     * <p> Retrieves the value of the <code>headerEncoding</code> property of
-     * {@link org.apache.fulcrum.upload.UploadService}.
-     *
-     * @return Returns the headerEncoding.
-     */
-    String getHeaderEncoding();
-
-    /**
-     * Utility method that determines whether the request contains multipart
-     * content.
-     *
-     * @param req The servlet request to be evaluated. Must be non-null.
-     *
-     * @return <code>true</code> if the request is multipart;
-     *         <code>false</code> otherwise.
-     */
-    boolean isMultipart(HttpServletRequest req);
-
-    /**
-     * Utility method that determines whether the request contains multipart
-     * content.
-     *
-     * @param req The portlet request to be evaluated. Must be non-null.
-     *
-     * @return <code>true</code> if the request is multipart;
-     *         <code>false</code> otherwise.
-     */
-    boolean isMultipart(ActionRequest req);
+       /**
+        * HTTP header.
+        */
+       String CONTENT_TYPE = "Content-type";
+
+       /**
+        * HTTP header.
+        */
+       String CONTENT_DISPOSITION = "Content-disposition";
+
+       /**
+        * HTTP header base type.
+        */
+       String MULTIPART = "multipart";
+
+       /**
+        * HTTP header base type modifier.
+        */
+       String FORM_DATA = "form-data";
+
+       /**
+        * HTTP header base type modifier.
+        */
+       String MIXED = "mixed";
+
+       /**
+        * HTTP header.
+        */
+       String MULTIPART_FORM_DATA = MULTIPART + '/' + FORM_DATA;
+
+       /**
+        * HTTP header.
+        */
+       String MULTIPART_MIXED = MULTIPART + '/' + MIXED;
+
+       /**
+        * The request parameter name for overriding 'repository' property 
(path).
+        */
+       String REPOSITORY_PARAMETER = "path";
+
+       /**
+        * The key in UploadService properties in TurbineResources.properties
+        * 'repository' property.
+        */
+       String REPOSITORY_KEY = "repository";
+
+       /**
+        * <p>
+        * The default value of 'repository' property (.). This is the 
directory where
+        * uploaded files will get stored temporarily. Note that "." is 
whatever the
+        * servlet container chooses to be it's 'current directory'.
+        */
+       String REPOSITORY_DEFAULT = ".";
+
+       /**
+        * w The key in UploadService properties in service configuration 
'sizeMax'
+        * property.
+        */
+       String SIZE_MAX_KEY = "sizeMax";
+
+       /**
+        * <p>
+        * The default value of 'sizMax' property (1 megabyte = 1048576 bytes). 
This is
+        * the maximum size of POST request that will be parsed by the 
uploader. If you
+        * need to set specific limits for your users, set this property to the 
largest
+        * limit value, and use an action + no auto upload to enforce limits.
+        *
+        */
+       int SIZE_MAX_DEFAULT = 1048576;
+
+       /**
+        * The key in UploadService properties in TurbineResources.properties
+        * 'sizeThreshold' property.
+        */
+       String SIZE_THRESHOLD_KEY = "sizeThreshold";
+
+       /**
+        * <p>
+        * The default value of 'sizeThreshold' property (10 kilobytes = 10240 
bytes).
+        * This is the maximum size of a POST request that will have it's 
components
+        * stored temporarily in memory, instead of disk.
+        */
+       int SIZE_THRESHOLD_DEFAULT = 10240;
+
+       /**
+        * The key in UploadService properties in TurbineResources.properties
+        * 'headerEncoding' property.
+        */
+       String HEADER_ENCODING_KEY = "headerEncoding";
+
+       /**
+        * <p>
+        * The default value of 'headerEncoding' property (.). The value has 
been
+        * decided by copying from DiskFileItem class
+        */
+       String HEADER_ENCODING_DEFAULT = "ISO-8859-1";
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req The servlet request to be parsed.
+        * @return list of file items
+        * @throws ServiceException Problems reading/parsing the request or 
storing
+        *                             the uploaded file(s).
+        */
+       List<FileItem> parseRequest(HttpServletRequest req) throws 
ServiceException;
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req  The servlet request to be parsed.
+        * @param path The location where the files should be stored.
+        * @return List of FileItem parts
+        * @throws ServiceException Problems reading/parsing the request or 
storing
+        *                             the uploaded file(s).
+        */
+       List<FileItem> parseRequest(HttpServletRequest req, String path) throws 
ServiceException;
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req           The servlet request to be parsed.
+        * @param sizeThreshold the max size in bytes to be stored in memory
+        * @param sizeMax       the maximum allowed upload size in bytes
+        * @param path          The location where the files should be stored.
+        * @return List of FileItem parts
+        * @throws ServiceException Problems reading/parsing the request or 
storing
+        *                             the uploaded file(s).
+        */
+       List<FileItem> parseRequest(HttpServletRequest req, int sizeThreshold, 
int sizeMax, String path)
+                       throws ServiceException;
+
+       /**
+        * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 
1867</a>
+        * compliant <code>multipart/form-data</code> stream.
+        *
+        * @param req The servlet request to be parsed.
+        *
+        * @return An iterator to instances of <code>FileItemStream</code> 
parsed from
+        *         the request, in the order that they were transmitted.
+        *
+        * @throws 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.
+        */
+       FileItemIterator getItemIterator(HttpServletRequest req) throws 
ServiceException;
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req The portlet request to be parsed.
+        * @return List of FileItem parts
+        * @throws ServiceException Problems reading/parsing the request or 
storing
+        *                             the uploaded file(s).
+        */
+       List<FileItem> parseRequest(ActionRequest req) throws ServiceException;
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req  The portlet request to be parsed.
+        * @param path The location where the files should be stored.
+        * @return List of FileItem parts
+        * @throws ServiceException Problems reading/parsing the request or 
storing
+        *                             the uploaded file(s).
+        */
+       List<FileItem> parseRequest(ActionRequest req, String path) throws 
ServiceException;
+
+       /**
+        * <p>
+        * Parses a <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 1867</a> 
compliant
+        * <code>multipart/form-data</code> stream.
+        * </p>
+        *
+        * @param req           The portlet request to be parsed.
+        * @param sizeThreshold the max size in bytes to be stored in memory
+        * @param sizeMax       the maximum allowed upload size in bytes
+        * @param path          The location where the files should be stored.
+        * @return The list of FileItem parts uploaded 
+        * @throws ServiceException Problems reading/parsing the request or 
storing
+        *                             the uploaded file(s).
+        */
+       List<FileItem> parseRequest(ActionRequest req, int sizeThreshold, int 
sizeMax, String path) throws ServiceException;
+
+       /**
+        * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt";>RFC 
1867</a>
+        * compliant <code>multipart/form-data</code> stream.
+        *
+        * @param req The portlet request to be parsed.
+        *
+        * @return An iterator to instances of <code>FileItemStream</code> 
parsed from
+        *         the request, in the order that they were transmitted.
+        *
+        * @throws 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.
+        */
+       FileItemIterator getItemIterator(ActionRequest req) throws 
ServiceException;
+
+       /**
+        * <p>
+        * Retrieves the value of <code>size.max</code> property of the
+        * {@link org.apache.fulcrum.upload.UploadService}.
+        *
+        * @return The maximum upload size.
+        */
+       long getSizeMax();
+
+       /**
+        * <p>
+        * Retrieves the value of <code>size.threshold</code> property of
+        * {@link org.apache.fulcrum.upload.UploadService}.
+        *
+        * @return The threshold beyond which files are written directly to 
disk.
+        */
+       long getSizeThreshold();
+
+       /**
+        * <p>
+        * Retrieves the value of the <code>repository</code> property of
+        * {@link org.apache.fulcrum.upload.UploadService}.
+        *
+        * @return The repository.
+        */
+       String getRepository();
+
+       /**
+        * <p>
+        * Retrieves the value of the <code>headerEncoding</code> property of
+        * {@link org.apache.fulcrum.upload.UploadService}.
+        *
+        * @return Returns the headerEncoding.
+        */
+       String getHeaderEncoding();
+
+       /**
+        * Utility method that determines whether the request contains multipart
+        * content.
+        *
+        * @param req The servlet request to be evaluated. Must be non-null.
+        *
+        * @return <code>true</code> if the request is multipart; 
<code>false</code>
+        *         otherwise.
+        */
+       boolean isMultipart(HttpServletRequest req);
+
+       /**
+        * Utility method that determines whether the request contains multipart
+        * content.
+        *
+        * @param req The portlet request to be evaluated. Must be non-null.
+        *
+        * @return <code>true</code> if the request is multipart; 
<code>false</code>
+        *         otherwise.
+        */
+       boolean isMultipart(ActionRequest req);
 }


Reply via email to