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;