struts-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lukaszlen...@apache.org
Subject svn commit: r1338715 - in /struts/struts2/trunk: core/src/main/java/org/apache/struts2/dispatcher/ core/src/main/java/org/apache/struts2/dispatcher/multipart/ core/src/main/java/org/apache/struts2/dispatcher/ng/ plugins/pell-multipart/src/main/java/org...
Date Tue, 15 May 2012 14:10:28 GMT
Author: lukaszlenart
Date: Tue May 15 14:10:27 2012
New Revision: 1338715

URL: http://svn.apache.org/viewvc?rev=1338715&view=rev
Log:
WW-3802 moves clean up code to implementation of MultiPartRequest interface

Modified:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
    struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=1338715&r1=1338714&r2=1338715&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
(original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
Tue May 15 14:10:27 2012
@@ -74,7 +74,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -762,35 +761,13 @@ public class Dispatcher {
      *
      * @param request the HttpServletRequest object.
      * @see org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper
-     * @throws java.io.IOException on any error.
      */
-    public void cleanUpRequest(HttpServletRequest request) throws IOException {
+    public void cleanUpRequest(HttpServletRequest request) {
         if (!(request instanceof MultiPartRequestWrapper)) {
             return;
         }
-
         MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
-
-        Enumeration fileParameterNames = multiWrapper.getFileParameterNames();
-        while (fileParameterNames != null && fileParameterNames.hasMoreElements())
{
-            String inputValue = (String) fileParameterNames.nextElement();
-            File[] files = multiWrapper.getFiles(inputValue);
-
-            for (File currentFile : files) {
-                if (LOG.isInfoEnabled()) {
-                    String msg = LocalizedTextUtil.findText(this.getClass(), "struts.messages.removing.file",
Locale.ENGLISH, "no.message.found", new Object[]{inputValue, currentFile});
-                    LOG.info(msg);
-                }
-
-                if ((currentFile != null) && currentFile.isFile()) {
-                    if (!currentFile.delete()) {
-                        if (LOG.isWarnEnabled()) {
-                            LOG.warn("Resource Leaking:  Could not remove uploaded file '"
+ currentFile.getCanonicalPath() + "'.");
-                        }
-                    }
-                }
-            }
-        }
+        multiWrapper.cleanUp();
     }
 
     /**

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java?rev=1338715&r1=1338714&r2=1338715&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
(original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
Tue May 15 14:10:27 2012
@@ -22,6 +22,7 @@
 package org.apache.struts2.dispatcher.multipart;
 
 import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import org.apache.commons.fileupload.FileItem;
@@ -42,7 +43,9 @@ import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * Multipart form data request adapter for Jakarta Commons Fileupload package.
@@ -118,6 +121,7 @@ public class JakartaMultiPartRequest imp
         }
 
         values.add(item);
+        item.delete();
         files.put(item.getFieldName(), values);
     }
 
@@ -336,4 +340,24 @@ public class JakartaMultiPartRequest imp
         };
     }
 
+    /* (non-Javadoc)
+    * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#cleanUp()
+    */
+    public void cleanUp() {
+        Set<String> names = files.keySet();
+        for (String name : names) {
+            List<FileItem> items = files.get(name);
+            for (FileItem item : items) {
+                if (LOG.isInfoEnabled()) {
+                    String msg = LocalizedTextUtil.findText(this.getClass(), "struts.messages.removing.file",
+                            Locale.ENGLISH, "no.message.found", new Object[]{name, item});
+                    LOG.info(msg);
+                }
+                if (!item.isInMemory()) {
+                    item.delete();
+                }
+            }
+        }
+    }
+
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java?rev=1338715&r1=1338714&r2=1338715&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
(original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
Tue May 15 14:10:27 2012
@@ -21,13 +21,12 @@
 
 package org.apache.struts2.dispatcher.multipart;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
 import java.util.Enumeration;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-
 
 /**
  * Abstract wrapper class HTTP requests to handle multi-part data. <p>
@@ -115,4 +114,10 @@ public interface MultiPartRequest {
      * @return a list of Strings that represent various errors during parsing
      */
     public List getErrors();
+
+    /**
+     * Cleans up all uploaded file, should be called at the end of request
+     */
+    public void cleanUp();
+
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java?rev=1338715&r1=1338714&r2=1338715&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
(original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
Tue May 15 14:10:27 2012
@@ -21,6 +21,11 @@
 
 package org.apache.struts2.dispatcher.multipart;
 
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.struts2.dispatcher.StrutsRequestWrapper;
+
+import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -30,13 +35,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Vector;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.struts2.dispatcher.StrutsRequestWrapper;
-
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
-
 
 /**
  * Parse a multipart request and provide a wrapper around the request. The parsing implementation
used
@@ -245,4 +243,11 @@ public class MultiPartRequestWrapper ext
 
         return temp.elements();
     }
+
+    public void cleanUp() {
+        if (multi != null) {
+            multi.cleanUp();
+        }
+    }
+
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java?rev=1338715&r1=1338714&r2=1338715&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
(original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java
Tue May 15 14:10:27 2012
@@ -26,7 +26,6 @@ import com.opensymphony.xwork2.util.Valu
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import org.apache.struts2.RequestUtils;
-import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
@@ -102,11 +101,6 @@ public class PrepareOperations {
         // always clean up the thread request, even if an action hasn't been executed
         try {
             dispatcher.cleanUpRequest(request);
-        } catch (IOException e) {
-            if (LOG.isWarnEnabled()) {
-                LOG.warn("Cannot clean up the request, some files can still remain in #0
after upload!", e,
-                        StrutsConstants.STRUTS_MULTIPART_SAVEDIR);
-            }
         } finally {
             ActionContext.setContext(null);
             Dispatcher.setInstance(null);

Modified: struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java?rev=1338715&r1=1338714&r2=1338715&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
(original)
+++ struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
Tue May 15 14:10:27 2012
@@ -21,8 +21,14 @@
 
 package org.apache.struts2.dispatcher.multipart;
 
+import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.LocalizedTextUtil;
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import http.utils.multipartrequest.ServletMultipartRequest;
+import org.apache.struts2.StrutsConstants;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -30,14 +36,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.struts2.StrutsConstants;
-
-import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.logging.Logger;
-import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import java.util.Locale;
 
 
 /**
@@ -159,10 +158,36 @@ public class PellMultiPartRequest implem
             }
         } catch (IllegalArgumentException e) {
             if (LOG.isInfoEnabled()) {
-        	LOG.info("Could not get encoding property 'struts.i18n.encoding' for file upload.
 Using system default");
+        	    LOG.info("Could not get encoding property 'struts.i18n.encoding' for file upload.
 Using system default");
             }
         } catch (UnsupportedEncodingException e) {
             LOG.error("Encoding " + encoding + " is not a valid encoding.  Please check your
struts.properties file.");
         }
     }
+
+    /* (non-Javadoc)
+    * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#cleanUp()
+    */
+    public void cleanUp() {
+        Enumeration fileParameterNames = multi.getFileParameterNames();
+        while (fileParameterNames != null && fileParameterNames.hasMoreElements())
{
+            String inputValue = (String) fileParameterNames.nextElement();
+            File[] files = getFile(inputValue);
+            for (File currentFile : files) {
+                if (LOG.isInfoEnabled()) {
+                    String msg = LocalizedTextUtil.findText(this.getClass(), "struts.messages.removing.file",
Locale.ENGLISH,
+                            "no.message.found", new Object[]{inputValue, currentFile});
+                    LOG.info(msg);
+                }
+                if ((currentFile != null) && currentFile.isFile()) {
+                    if (!currentFile.delete()) {
+                        if (LOG.isWarnEnabled()) {
+                            LOG.warn("Resource Leaking:  Could not remove uploaded file [#0]",
currentFile.getAbsolutePath());
+                        }
+                    }
+                }
+            }
+        }
+    }
+
 }



Mime
View raw message