This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch release/struts-6-1-x
in repository https://gitbox.apache.org/repos/asf/struts.git

commit 3292152f8c0a77ee4827beede82b6580478a2c2a
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Sun Sep 3 08:57:26 2023 +0200

    Always delete uploaded file
---
 .../multipart/JakartaMultiPartRequest.java         | 79 +++++++++++-----------
 1 file changed, 41 insertions(+), 38 deletions(-)

diff --git 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
index 5030ab7d4..4e0d2b30f 100644
--- 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
+++ 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
@@ -111,7 +111,7 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
         LOG.debug("Item is a file upload");
 
         // Skip file uploads that don't have a file name - meaning that no 
file was selected.
-        if (item.getName() == null || item.getName().trim().length() < 1) {
+        if (item.getName() == null || item.getName().trim().isEmpty()) {
             LOG.debug("No file has been uploaded for the field: {}", 
item.getFieldName());
             return;
         }
@@ -128,39 +128,42 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
     }
 
     protected void processNormalFormField(FileItem item, String charset) 
throws UnsupportedEncodingException {
-        LOG.debug("Item is a normal form field");
+        try {
+            LOG.debug("Item is a normal form field");
 
-        List<String> values;
-        if (params.get(item.getFieldName()) != null) {
-            values = params.get(item.getFieldName());
-        } else {
-            values = new ArrayList<>();
-        }
+            List<String> values;
+            if (params.get(item.getFieldName()) != null) {
+                values = params.get(item.getFieldName());
+            } else {
+                values = new ArrayList<>();
+            }
 
-        long size = item.getSize();
-        if (size == 0) {
-            values.add(StringUtils.EMPTY);
-        } else if (size > maxStringLength) {
-          String errorKey = "struts.messages.upload.error.parameter.too.long";
-          LocalizedMessage localizedMessage = new 
LocalizedMessage(this.getClass(), errorKey, null,
-                  new Object[] { item.getFieldName(), maxStringLength, size });
-
-          if (!errors.contains(localizedMessage)) {
-              errors.add(localizedMessage);
-          }
-          return;
-
-        } else if (charset != null) {
-            values.add(item.getString(charset));
-        } else {
-            // note: see https://issues.apache.org/jira/browse/WW-633
-            // basically, in some cases the charset may be null, so
-            // we're just going to try to "other" method (no idea if this
-            // will work)
-            values.add(item.getString());
+            long size = item.getSize();
+            if (size == 0) {
+                values.add(StringUtils.EMPTY);
+            } else if (size > maxStringLength) {
+                String errorKey = 
"struts.messages.upload.error.parameter.too.long";
+                LocalizedMessage localizedMessage = new 
LocalizedMessage(this.getClass(), errorKey, null,
+                    new Object[]{item.getFieldName(), maxStringLength, size});
+
+                if (!errors.contains(localizedMessage)) {
+                    errors.add(localizedMessage);
+                }
+                return;
+
+            } else if (charset != null) {
+                values.add(item.getString(charset));
+            } else {
+                // note: see https://issues.apache.org/jira/browse/WW-633
+                // basically, in some cases the charset may be null, so
+                // we're just going to try to "other" method (no idea if this
+                // will work)
+                values.add(item.getString());
+            }
+            params.put(item.getFieldName(), values);
+        } finally {
+            item.delete();
         }
-        params.put(item.getFieldName(), values);
-        item.delete();
     }
 
     protected List<FileItem> parseRequest(HttpServletRequest servletRequest, 
String saveDir) throws FileUploadException {
@@ -212,7 +215,7 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
             contentTypes.add(fileItem.getContentType());
         }
 
-        return contentTypes.toArray(new String[contentTypes.size()]);
+        return contentTypes.toArray(new String[0]);
     }
 
     /* (non-Javadoc)
@@ -241,7 +244,7 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
             fileList.add(new StrutsUploadedFile(storeLocation));
         }
 
-        return fileList.toArray(new UploadedFile[fileList.size()]);
+        return fileList.toArray(new UploadedFile[0]);
     }
 
     /* (non-Javadoc)
@@ -259,7 +262,7 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
             fileNames.add(getCanonicalName(fileItem.getName()));
         }
 
-        return fileNames.toArray(new String[fileNames.size()]);
+        return fileNames.toArray(new String[0]);
     }
 
     /* (non-Javadoc)
@@ -277,7 +280,7 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
             fileNames.add(((DiskFileItem) 
fileItem).getStoreLocation().getName());
         }
 
-        return fileNames.toArray(new String[fileNames.size()]);
+        return fileNames.toArray(new String[0]);
     }
 
     /* (non-Javadoc)
@@ -285,7 +288,7 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
      */
     public String getParameter(String name) {
         List<String> v = params.get(name);
-        if (v != null && v.size() > 0) {
+        if (v != null && !v.isEmpty()) {
             return v.get(0);
         }
 
@@ -304,8 +307,8 @@ public class JakartaMultiPartRequest extends 
AbstractMultiPartRequest {
      */
     public String[] getParameterValues(String name) {
         List<String> v = params.get(name);
-        if (v != null && v.size() > 0) {
-            return v.toArray(new String[v.size()]);
+        if (v != null && !v.isEmpty()) {
+            return v.toArray(new String[0]);
         }
 
         return null;

Reply via email to