You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2024/03/17 16:45:39 UTC

(struts) 01/01: Converts multiple file uploads example to use Action based upload

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

lukaszlenart pushed a commit to branch fix/file-uploads
in repository https://gitbox.apache.org/repos/asf/struts.git

commit db0bd438551b8c646ede133bebdb5eae899b3cb3
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Sun Mar 17 17:45:32 2024 +0100

    Converts multiple file uploads example to use Action based upload
---
 .../MultipleFileUploadUsingArrayAction.java        | 82 +++++++++-----------
 .../MultipleFileUploadUsingListAction.java         | 88 ++++++++++------------
 2 files changed, 76 insertions(+), 94 deletions(-)

diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingArrayAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingArrayAction.java
index dcf671e5e..59ea954e2 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingArrayAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingArrayAction.java
@@ -22,61 +22,51 @@
 package org.apache.struts2.showcase.fileupload;
 
 import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.action.UploadedFilesAware;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
 
-import java.io.File;
+import java.util.List;
 
 /**
  * Showcase action - mutiple file upload using array.
- *
- * @version $Date$ $Id$
  */
-public class MultipleFileUploadUsingArrayAction extends ActionSupport {
-
-	private File[] uploads = new File[0];
-	private String[] uploadFileNames = new String[0];
-	private String[] uploadContentTypes = new String[0];
-
-
-	public String upload() throws Exception {
-		System.out.println("\n\n upload2");
-		System.out.println("files:");
-		for (File u : uploads) {
-			System.out.println("*** " + u + "\t" + u.length());
-		}
-		System.out.println("filenames:");
-		for (String n : uploadFileNames) {
-			System.out.println("*** " + n);
-		}
-		System.out.println("content types:");
-		for (String c : uploadContentTypes) {
-			System.out.println("*** " + c);
-		}
-		System.out.println("\n\n");
-		return SUCCESS;
-	}
+public class MultipleFileUploadUsingArrayAction extends ActionSupport implements UploadedFilesAware {
 
-	public File[] getUpload() {
-		return this.uploads;
-	}
+    private List<UploadedFile> uploadedFiles;
 
-	public void setUpload(File[] upload) {
-		this.uploads = upload;
-	}
+    public String upload() throws Exception {
+        System.out.println("\n\n upload2");
+        System.out.println("files:");
+        for (UploadedFile u : uploadedFiles) {
+            System.out.println("*** " + u + "\t" + u.length());
+        }
+        System.out.println("filenames:");
+        for (String n : getUploadFileNames()) {
+            System.out.println("*** " + n);
+        }
+        System.out.println("content types:");
+        for (String c : getUploadContentTypes()) {
+            System.out.println("*** " + c);
+        }
+        System.out.println("\n\n");
+        return SUCCESS;
+    }
 
-	public String[] getUploadFileName() {
-		return this.uploadFileNames;
-	}
+    @Override
+    public void withUploadedFiles(List<UploadedFile> uploadedFiles) {
+        this.uploadedFiles = uploadedFiles;
+    }
 
-	public void setUploadFileName(String[] uploadFileName) {
-		this.uploadFileNames = uploadFileName;
-	}
+    private String[] getUploadFileNames() {
+        return this.uploadedFiles.stream()
+                .map(UploadedFile::getOriginalName)
+                .toArray(String[]::new);
+    }
 
-	public String[] getUploadContentType() {
-		return this.uploadContentTypes;
-	}
+    private String[] getUploadContentTypes() {
+        return this.uploadedFiles.stream()
+                .map(UploadedFile::getContentType)
+                .toArray(String[]::new);
+    }
 
-	public void setUploadContentType(String[] uploadContentType) {
-		this.uploadContentTypes = uploadContentType;
-	}
 }
-// END SNIPPET: entire-file
\ No newline at end of file
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingListAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingListAction.java
index 7b4325e98..e60b0df3e 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingListAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingListAction.java
@@ -22,64 +22,56 @@
 package org.apache.struts2.showcase.fileupload;
 
 import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.action.UploadedFilesAware;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Showcase action - multiple file upload using List
- *
- * @version $Date$ $Id$
  */
-public class MultipleFileUploadUsingListAction extends ActionSupport {
-
-	private List<File> uploads = new ArrayList<>();
-	private List<String> uploadFileNames = new ArrayList<>();
-	private List<String> uploadContentTypes = new ArrayList<>();
-
-
-	public List<File> getUpload() {
-		return this.uploads;
-	}
-
-	public void setUpload(List<File> uploads) {
-		this.uploads = uploads;
-	}
+public class MultipleFileUploadUsingListAction extends ActionSupport implements UploadedFilesAware {
 
-	public List<String> getUploadFileName() {
-		return this.uploadFileNames;
-	}
+    private List<UploadedFile> uploads = new ArrayList<>();
 
-	public void setUploadFileName(List<String> uploadFileNames) {
-		this.uploadFileNames = uploadFileNames;
-	}
+    public List<UploadedFile> getUpload() {
+        return this.uploads;
+    }
 
-	public List<String> getUploadContentType() {
-		return this.uploadContentTypes;
-	}
+    @Override
+    public void withUploadedFiles(List<UploadedFile> uploads) {
+        this.uploads = uploads;
+    }
 
-	public void setUploadContentType(List<String> contentTypes) {
-		this.uploadContentTypes = contentTypes;
-	}
+    private List<String> getUploadFileNames() {
+        return this.uploads.stream()
+                .map(UploadedFile::getOriginalName)
+                .collect(Collectors.toList());
+    }
 
-	public String upload() throws Exception {
+    private List<String> getUploadContentTypes() {
+        return this.uploads.stream()
+                .map(UploadedFile::getContentType)
+                .collect(Collectors.toList());
+    }
 
-		System.out.println("\n\n upload1");
-		System.out.println("files:");
-		for (File u : uploads) {
-			System.out.println("*** " + u + "\t" + u.length());
-		}
-		System.out.println("filenames:");
-		for (String n : uploadFileNames) {
-			System.out.println("*** " + n);
-		}
-		System.out.println("content types:");
-		for (String c : uploadContentTypes) {
-			System.out.println("*** " + c);
-		}
-		System.out.println("\n\n");
-		return SUCCESS;
-	}
-}
-// END SNIPPET: entire-file
\ No newline at end of file
+    public String upload() throws Exception {
+        System.out.println("\n\n upload1");
+        System.out.println("files:");
+        for (UploadedFile u : uploads) {
+            System.out.println("*** " + u + "\t" + u.length());
+        }
+        System.out.println("filenames:");
+        for (String n : getUploadFileNames()) {
+            System.out.println("*** " + n);
+        }
+        System.out.println("content types:");
+        for (String c : getUploadContentTypes()) {
+            System.out.println("*** " + c);
+        }
+        System.out.println("\n\n");
+        return SUCCESS;
+    }
+}
\ No newline at end of file