Author: jochen
Date: Sat Jan 17 17:40:13 2009
New Revision: 735370

URL: http://svn.apache.org/viewvc?rev=735370&view=rev
Log:
PR: FILEUPLOAD-160
Submitted-By: Stepan Koltsov <y...@mx1.ru>
Temporary files have not been deleted, if an error
occurred in FileUploadBase.parseRequest.

Modified:
    commons/proper/fileupload/trunk/pom.xml
    commons/proper/fileupload/trunk/src/changes/changes.xml
    
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java

Modified: commons/proper/fileupload/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/pom.xml?rev=735370&r1=735369&r2=735370&view=diff
==============================================================================
--- commons/proper/fileupload/trunk/pom.xml (original)
+++ commons/proper/fileupload/trunk/pom.xml Sat Jan 17 17:40:13 2009
@@ -101,6 +101,10 @@
       <email>ggreg...@seagullsw.com</email>
     </contributor>
     <contributor>
+      <name>Stepan Koltsov</name>
+      <email>y...@mx1.ru</email>
+    </contributor>
+    <contributor>
       <name>Michael Macaluso</name>
       <email>michael.pub...@wavecorp.com</email>
     </contributor>

Modified: commons/proper/fileupload/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/changes/changes.xml?rev=735370&r1=735369&r2=735370&view=diff
==============================================================================
--- commons/proper/fileupload/trunk/src/changes/changes.xml (original)
+++ commons/proper/fileupload/trunk/src/changes/changes.xml Sat Jan 17 17:40:13 
2009
@@ -42,7 +42,13 @@
 
   <body>
     <release version="1.3-SNAPSHOT" date="Not yet released">
+      <action dev="jochen" type="fix" issue="FILEUPLOAD-160"
+          due-to="Stepan Koltsov" due-to-email="y...@mx1.ru">
+        Temporary files have not been deleted, if an error
+        occurred in FileUploadBase.parseRequest();
+      </action>
     </release>
+
     <release version="1.2.1" date="2008-01-18">
       <action dev="jochen" type="fix">
         Upgrade to commons-io-1.4-SNAPSHOT, in order to use the new

Modified: 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java?rev=735370&r1=735369&r2=735370&view=diff
==============================================================================
--- 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
 (original)
+++ 
commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java
 Sat Jan 17 17:40:13 2009
@@ -345,9 +345,10 @@
      */
     public List /* FileItem */ parseRequest(RequestContext ctx)
             throws FileUploadException {
+        List items = new ArrayList();
+        boolean successful = false;
         try {
             FileItemIterator iter = getItemIterator(ctx);
-            List items = new ArrayList();
             FileItemFactory fac = getFileItemFactory();
             if (fac == null) {
                 throw new NullPointerException(
@@ -358,6 +359,7 @@
                 FileItem fileItem = fac.createItem(item.getFieldName(),
                         item.getContentType(), item.isFormField(),
                         item.getName());
+                items.add(fileItem);
                 try {
                     Streams.copy(item.openStream(), fileItem.getOutputStream(),
                             true);
@@ -372,13 +374,24 @@
                     final FileItemHeaders fih = item.getHeaders();
                     ((FileItemHeadersSupport) fileItem).setHeaders(fih);
                 }
-                items.add(fileItem);
             }
+            successful = true;
             return items;
         } catch (FileUploadIOException e) {
             throw (FileUploadException) e.getCause();
         } catch (IOException e) {
             throw new FileUploadException(e.getMessage(), e);
+        } finally {
+            if (!successful) {
+                for (Iterator iterator = items.iterator(); 
iterator.hasNext();) {
+                    FileItem fileItem = (FileItem) iterator.next();
+                    try {
+                        fileItem.delete();
+                    } catch (Throwable e) {
+                        // ignore it
+                    }
+                }
+            }
         }
     }
 


Reply via email to