This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch feature/WW-5371-modern-upload
in repository https://gitbox.apache.org/repos/asf/struts.git
The following commit(s) were added to refs/heads/feature/WW-5371-modern-upload
by this push:
new 3ef9ade89 WW-5371 Document how to use the new file upload logic
3ef9ade89 is described below
commit 3ef9ade8902a63bb560892453eeca02bfddefc78
Author: Lukasz Lenart
AuthorDate: Tue Dec 12 08:35:31 2023 +0100
WW-5371 Document how to use the new file upload logic
---
.../apache/struts2/action/UploadedFilesAware.java | 2 +-
.../multipart/JakartaStreamMultiPartRequest.java | 13 +--
.../interceptor/ActionFileUploadInterceptor.java | 117 +++--
.../struts2/interceptor/FileUploadInterceptor.java | 3 +
4 files changed, 45 insertions(+), 90 deletions(-)
diff --git
a/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java
b/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java
index 635e0b2d4..92ec9c98b 100644
--- a/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java
+++ b/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java
@@ -33,7 +33,7 @@ public interface UploadedFilesAware {
* Notifies action about the multiple uploaded files, when a single file
is uploaded
* the list will have just one element
*
- * @param uploadedFiles a list of {@link UploadedFile}.
+ * @param uploadedFiles a list of {@link UploadedFile}, cannot be null. It
can be empty.
*/
void withUploadedFiles(List uploadedFiles);
diff --git
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
index 2618d6ace..763b5d634 100644
---
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
+++
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
@@ -44,6 +44,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.stream.Collectors;
/**
* Multi-part form data request adapter for Jakarta Commons FileUpload package
that
@@ -109,16 +110,12 @@ public class JakartaStreamMultiPartRequest extends
AbstractMultiPartRequest {
return null;
}
-List files = new ArrayList<>(infos.size());
-for (FileInfo fileInfo : infos) {
-UploadedFile file =
StrutsUploadedFile.Builder.create(fileInfo.getFile())
+return infos.stream().map(fileInfo ->
+StrutsUploadedFile.Builder.create(fileInfo.getFile())
.withContentType(fileInfo.contentType)
.withOriginalName(fileInfo.originalName)
-.build();
-files.add(file);
-}
-
-return files.toArray(new UploadedFile[0]);
+.build()
+).toArray(UploadedFile[]::new);
}
/* (non-Javadoc)
diff --git
a/core/src/main/java/org/apache/struts2/interceptor/ActionFileUploadInterceptor.java
b/core/src/main/java/org/apache/struts2/interceptor/ActionFileUploadInterceptor.java
index 1642a890b..c42d125af 100644
---
a/core/src/main/java/org/apache/struts2/interceptor/ActionFileUploadInterceptor.java
+++
b/core/src/main/java/org/apache/struts2/interceptor/ActionFileUploadInterceptor.java
@@ -33,105 +33,62 @@ import java.util.Enumeration;
import java.util.List;
/**
- *
*
* Interceptor that is based off of {@link MultiPartRequestWrapper}, which is
automatically applied for any request that
- * includes a file. It adds the following parameters, where [File Name] is the
name given to the file uploaded by the
- * HTML form:
+ * includes a file when the support for multi-part request is enabled,
+ * see https://struts.apache.org/core-developers/file-upload.html#disabling-file-upload-support";>Disabling
file upload.
*
- *
- *
- * [File Name] : File - the actual File
- *
- * [File Name]ContentType : String - the content type of the file
*
- * [File Name]FileName : String - the actual name of the file uploaded
(not the HTML name)
- *
- *
- *
- * You can get access to these files by merely providing setters in your
action that correspond to any of the three
- * patterns above, such as setDocument(File document),
setDocumentContentType(String contentType), etc.
- * See the example code section.
+ *
+ * You can get access to these files by implementing {@link
UploadedFilesAware} interface. The interceptor will then
+ * call {@link UploadedFilesAware#withUploadedFiles(List)} when there are
files which were accepted during the upload process.
*
*
- * This interceptor will add several field errors, assuming that the
action implements {@link ValidationAware}.
+ *
+ * This interceptor will add several field errors, assuming that the action