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 2016/11/25 18:17:56 UTC
[01/14] struts git commit: Introduces a dedicated class to represent
an uploaded file
Repository: struts
Updated Branches:
refs/heads/master 6d623ebb5 -> 32341681e
Introduces a dedicated class to represent an uploaded file
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/fe05ca20
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/fe05ca20
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/fe05ca20
Branch: refs/heads/master
Commit: fe05ca20951ecda86e147dbf5272709412df820d
Parents: 6f7fcaa
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Nov 21 11:04:24 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Nov 21 11:04:24 2016 +0100
----------------------------------------------------------------------
.../dispatcher/multipart/UploadedFile.java | 39 ++++++++++++++++++++
1 file changed, 39 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/fe05ca20/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
new file mode 100644
index 0000000..e6a77a8
--- /dev/null
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.struts2.dispatcher.multipart;
+
+/**
+ * Virtual representation of a uploaded file used by {@link MultiPartRequest}
+ */
+public interface UploadedFile<T> {
+
+ Long length();
+
+ String getName();
+
+ boolean isFile();
+
+ boolean delete();
+
+ String getAbsolutePath();
+
+ T getContent();
+
+}
[03/14] struts git commit: Adjusts interceptor to use the new class
Posted by lu...@apache.org.
Adjusts interceptor to use the new class
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/407cd582
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/407cd582
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/407cd582
Branch: refs/heads/master
Commit: 407cd58279c61a8c9487aae3e42a99fcfe8352b9
Parents: 45edbcb
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Nov 21 11:05:47 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Nov 21 11:05:47 2016 +0100
----------------------------------------------------------------------
.../interceptor/FileUploadInterceptor.java | 9 ++--
.../interceptor/FileUploadInterceptorTest.java | 56 ++++++++++++++++----
2 files changed, 50 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/407cd582/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
index be97a31..b9f5cb6 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
@@ -34,6 +34,7 @@ import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.LocalizedMessage;
import org.apache.struts2.dispatcher.Parameter;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
import org.apache.struts2.util.ContentTypeMatcher;
import javax.servlet.http.HttpServletRequest;
@@ -280,9 +281,9 @@ public class FileUploadInterceptor extends AbstractInterceptor {
if (isNonEmpty(fileName)) {
// get a File object for the uploaded File
- File[] files = multiWrapper.getFiles(inputName);
+ UploadedFile[] files = multiWrapper.getFiles(inputName);
if (files != null && files.length > 0) {
- List<File> acceptedFiles = new ArrayList<>(files.length);
+ List<UploadedFile> acceptedFiles = new ArrayList<>(files.length);
List<String> acceptedContentTypes = new ArrayList<>(files.length);
List<String> acceptedFileNames = new ArrayList<>(files.length);
String contentTypeName = inputName + "ContentType";
@@ -298,7 +299,7 @@ public class FileUploadInterceptor extends AbstractInterceptor {
if (!acceptedFiles.isEmpty()) {
Map<String, Parameter> newParams = new HashMap<>();
- newParams.put(inputName, new Parameter.File(inputName, acceptedFiles.toArray(new File[acceptedFiles.size()])));
+ newParams.put(inputName, new Parameter.File(inputName, acceptedFiles.toArray(new UploadedFile[acceptedFiles.size()])));
newParams.put(contentTypeName, new Parameter.File(contentTypeName, acceptedContentTypes.toArray(new String[acceptedContentTypes.size()])));
newParams.put(fileNameName, new Parameter.File(fileNameName, acceptedFileNames.toArray(new String[acceptedFileNames.size()])));
ac.getParameters().appendAll(newParams);
@@ -332,7 +333,7 @@ public class FileUploadInterceptor extends AbstractInterceptor {
* logging.
* @return true if the proposed file is acceptable by contentType and size.
*/
- protected boolean acceptFile(Object action, File file, String filename, String contentType, String inputName, ValidationAware validation) {
+ protected boolean acceptFile(Object action, UploadedFile file, String filename, String contentType, String inputName, ValidationAware validation) {
boolean fileIsAcceptable = false;
// If it's null the upload failed
http://git-wip-us.apache.org/repos/asf/struts/blob/407cd582/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
index 6668b4c..87251cd 100644
--- a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
+++ b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
@@ -33,7 +33,9 @@ import org.apache.struts2.StrutsInternalTestCase;
import org.apache.struts2.TestAction;
import org.apache.struts2.dispatcher.HttpParameters;
import org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest;
+import org.apache.struts2.dispatcher.multipart.JakartaUploadedFile;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
import org.springframework.mock.web.MockHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
@@ -53,6 +55,38 @@ import java.util.Map;
*/
public class FileUploadInterceptorTest extends StrutsInternalTestCase {
+ public static final UploadedFile EMPTY_FILE = new UploadedFile() {
+ @Override
+ public Long length() {
+ return 0L;
+ }
+
+ @Override
+ public String getName() {
+ return "";
+ }
+
+ @Override
+ public boolean isFile() {
+ return false;
+ }
+
+ @Override
+ public boolean delete() {
+ return false;
+ }
+
+ @Override
+ public String getAbsolutePath() {
+ return null;
+ }
+
+ @Override
+ public byte[] getContent() {
+ return new byte[0];
+ }
+ };
+
private FileUploadInterceptor interceptor;
private File tempDir;
private TestAction action;
@@ -60,7 +94,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
public void testAcceptFileWithEmptyAllowedTypesAndExtensions() throws Exception {
// when allowed type is empty
ValidationAwareSupport validation = new ValidationAwareSupport();
- boolean ok = interceptor.acceptFile(action, new File(""), "filename", "text/plain", "inputName", validation);
+ boolean ok = interceptor.acceptFile(action, EMPTY_FILE, "filename", "text/plain", "inputName", validation);
assertTrue(ok);
assertTrue(validation.getFieldErrors().isEmpty());
@@ -72,7 +106,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
// when file is of allowed types
ValidationAwareSupport validation = new ValidationAwareSupport();
- boolean ok = interceptor.acceptFile(action, new File(""), "filename.txt", "text/plain", "inputName", validation);
+ boolean ok = interceptor.acceptFile(action, EMPTY_FILE, "filename.txt", "text/plain", "inputName", validation);
assertTrue(ok);
assertTrue(validation.getFieldErrors().isEmpty());
@@ -80,7 +114,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
// when file is not of allowed types
validation = new ValidationAwareSupport();
- boolean notOk = interceptor.acceptFile(action, new File(""), "filename.html", "text/html", "inputName", validation);
+ boolean notOk = interceptor.acceptFile(action, EMPTY_FILE, "filename.html", "text/html", "inputName", validation);
assertFalse(notOk);
assertFalse(validation.getFieldErrors().isEmpty());
@@ -92,7 +126,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
interceptor.setAllowedTypes("text/*");
ValidationAwareSupport validation = new ValidationAwareSupport();
- boolean ok = interceptor.acceptFile(action, new File(""), "filename.txt", "text/plain", "inputName", validation);
+ boolean ok = interceptor.acceptFile(action, EMPTY_FILE, "filename.txt", "text/plain", "inputName", validation);
assertTrue(ok);
assertTrue(validation.getFieldErrors().isEmpty());
@@ -100,7 +134,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
interceptor.setAllowedTypes("text/h*");
validation = new ValidationAwareSupport();
- boolean notOk = interceptor.acceptFile(action, new File(""), "filename.html", "text/plain", "inputName", validation);
+ boolean notOk = interceptor.acceptFile(action, EMPTY_FILE, "filename.html", "text/plain", "inputName", validation);
assertFalse(notOk);
assertFalse(validation.getFieldErrors().isEmpty());
@@ -112,7 +146,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
// when file is of allowed extensions
ValidationAwareSupport validation = new ValidationAwareSupport();
- boolean ok = interceptor.acceptFile(action, new File(""), "filename.txt", "text/plain", "inputName", validation);
+ boolean ok = interceptor.acceptFile(action, EMPTY_FILE, "filename.txt", "text/plain", "inputName", validation);
assertTrue(ok);
assertTrue(validation.getFieldErrors().isEmpty());
@@ -120,7 +154,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
// when file is not of allowed extensions
validation = new ValidationAwareSupport();
- boolean notOk = interceptor.acceptFile(action, new File(""), "filename.html", "text/html", "inputName", validation);
+ boolean notOk = interceptor.acceptFile(action, EMPTY_FILE, "filename.html", "text/html", "inputName", validation);
assertFalse(notOk);
assertFalse(validation.getFieldErrors().isEmpty());
@@ -129,7 +163,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
//test with multiple extensions
interceptor.setAllowedExtensions(".txt,.lol");
validation = new ValidationAwareSupport();
- ok = interceptor.acceptFile(action, new File(""), "filename.lol", "text/plain", "inputName", validation);
+ ok = interceptor.acceptFile(action, EMPTY_FILE, "filename.lol", "text/plain", "inputName", validation);
assertTrue(ok);
assertTrue(validation.getFieldErrors().isEmpty());
@@ -164,7 +198,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
URL url = ClassLoaderUtil.getResource("log4j2.xml", FileUploadInterceptorTest.class);
File file = new File(new URI(url.toString()));
assertTrue("log4j2.xml should be in src/test folder", file.exists());
- boolean notOk = interceptor.acceptFile(action, file, "filename", "text/html", "inputName", validation);
+ boolean notOk = interceptor.acceptFile(action, new JakartaUploadedFile(file), "filename", "text/html", "inputName", validation);
assertFalse(notOk);
assertFalse(validation.getFieldErrors().isEmpty());
@@ -263,7 +297,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
HttpParameters parameters = mai.getInvocationContext().getParameters();
assertTrue(parameters.getNames().size() == 3);
- File[] files = (File[]) parameters.get("file").getObject();
+ UploadedFile[] files = (UploadedFile[]) parameters.get("file").getObject();
String[] fileContentTypes = parameters.get("fileContentType").getMultipleValues();
String[] fileRealFilenames = parameters.get("fileFileName").getMultipleValues();
@@ -323,7 +357,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
HttpParameters parameters = mai.getInvocationContext().getParameters();
assertEquals(3, parameters.getNames().size());
- File[] files = (File[]) parameters.get("file").getObject();
+ UploadedFile[] files = (UploadedFile[]) parameters.get("file").getObject();
String[] fileContentTypes = parameters.get("fileContentType").getMultipleValues();
String[] fileRealFilenames = parameters.get("fileFileName").getMultipleValues();
[12/14] struts git commit: Merge branch 'master' into WW-4717
Posted by lu...@apache.org.
Merge branch 'master' into WW-4717
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ae5605ff
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ae5605ff
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ae5605ff
Branch: refs/heads/master
Commit: ae5605ff8872daa08f12c84fb7a2b30f5f57e8ea
Parents: 4de8309 6d623eb
Author: Lukasz Lenart <lu...@apache.org>
Authored: Wed Nov 23 15:15:15 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Wed Nov 23 15:15:15 2016 +0100
----------------------------------------------------------------------
assembly/src/main/assembly/all.xml | 1 +
assembly/src/main/assembly/lib.xml | 1 +
assembly/src/main/assembly/min-lib.xml | 5 +-
core/pom.xml | 8 -
.../interceptor/ParameterFilterInterceptor.java | 2 +-
.../interceptor/ParametersInterceptor.java | 4 +-
.../AnnotationParameterFilterInterceptor.java | 4 +-
.../xwork2/util/finder/DefaultClassFinder.java | 580 ------------------
.../struts2/dispatcher/HttpParameters.java | 100 +++-
.../interceptor/CheckboxInterceptor.java | 2 +-
.../interceptor/DateTextFieldInterceptor.java | 2 +-
.../interceptor/MultiselectInterceptor.java | 2 +-
.../opensymphony/xwork2/ActionContextTest.java | 2 +-
.../ParameterFilterInterceptorTest.java | 2 +-
.../ParameterRemoverInterceptorTest.java | 6 +-
.../StaticParametersInterceptorTest.java | 2 +-
...nnotationParameterFilterInterceptorTest.java | 8 +-
.../struts2/components/ActionComponentTest.java | 2 +-
.../interceptor/CheckboxInterceptorTest.java | 16 +-
.../DateTextFieldInterceptorTest.java | 4 +-
.../interceptor/FileUploadInterceptorTest.java | 4 +-
.../interceptor/MultiselectInterceptorTest.java | 6 +-
.../apache/struts2/views/jsp/ActionTagTest.java | 4 +-
plugins/convention/pom.xml | 10 +
.../struts2/convention/DefaultClassFinder.java | 583 +++++++++++++++++++
pom.xml | 7 +-
26 files changed, 722 insertions(+), 645 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/ae5605ff/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
----------------------------------------------------------------------
diff --cc core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
index 1cea2d7,a7df38f..5ac4bc2
--- a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
+++ b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
@@@ -296,8 -262,8 +296,8 @@@ public class FileUploadInterceptorTest
assertTrue(!action.hasErrors());
HttpParameters parameters = mai.getInvocationContext().getParameters();
- assertTrue(parameters.getNames().size() == 3);
+ assertTrue(parameters.keySet().size() == 3);
- File[] files = (File[]) parameters.get("file").getObject();
+ UploadedFile[] files = (UploadedFile[]) parameters.get("file").getObject();
String[] fileContentTypes = parameters.get("fileContentType").getMultipleValues();
String[] fileRealFilenames = parameters.get("fileFileName").getMultipleValues();
@@@ -356,8 -322,8 +356,8 @@@
interceptor.intercept(mai);
HttpParameters parameters = mai.getInvocationContext().getParameters();
- assertEquals(3, parameters.getNames().size());
+ assertEquals(3, parameters.keySet().size());
- File[] files = (File[]) parameters.get("file").getObject();
+ UploadedFile[] files = (UploadedFile[]) parameters.get("file").getObject();
String[] fileContentTypes = parameters.get("fileContentType").getMultipleValues();
String[] fileRealFilenames = parameters.get("fileFileName").getMultipleValues();
[11/14] struts git commit: Extracts one base class
Posted by lu...@apache.org.
Extracts one base class
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4de8309d
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4de8309d
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4de8309d
Branch: refs/heads/master
Commit: 4de8309d0aebb75d409119f2d4a6d06491dda2b4
Parents: de51e79
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 20:02:22 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 20:02:22 2016 +0100
----------------------------------------------------------------------
.../multipart/AbstractMultiPartRequest.java | 112 +++++++++++++++++++
.../multipart/JakartaMultiPartRequest.java | 45 +-------
.../JakartaStreamMultiPartRequest.java | 90 +--------------
.../multipart/PellMultiPartRequest.java | 27 +----
4 files changed, 118 insertions(+), 156 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/4de8309d/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
new file mode 100644
index 0000000..a8037ed
--- /dev/null
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
@@ -0,0 +1,112 @@
+package org.apache.struts2.dispatcher.multipart;
+
+import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.inject.Inject;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts2.StrutsConstants;
+import org.apache.struts2.dispatcher.LocalizedMessage;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Abstract class with some helper methods, it should be used
+ * when starting development of another implementation of {@link MultiPartRequest}
+ */
+public abstract class AbstractMultiPartRequest implements MultiPartRequest {
+
+ private static final Logger LOG = LogManager.getLogger(AbstractMultiPartRequest.class);
+
+ /**
+ * Defines the internal buffer size used during streaming operations.
+ */
+ public static final int BUFFER_SIZE = 10240;
+
+ /**
+ * Internal list of raised errors to be passed to the the Struts2 framework.
+ */
+ protected List<LocalizedMessage> errors = new ArrayList<>();
+
+ /**
+ * Specifies the maximum size of the entire request.
+ */
+ protected int maxSize;
+ protected boolean maxSizeProvided;
+
+ /**
+ * Specifies the buffer size to use during streaming.
+ */
+ protected int bufferSize = BUFFER_SIZE;
+
+ protected String defaultEncoding;
+
+ /**
+ * Localization to be used regarding errors.
+ */
+ protected Locale defaultLocale = Locale.ENGLISH;
+
+ /**
+ * @param bufferSize Sets the buffer size to be used.
+ */
+ @Inject(value = StrutsConstants.STRUTS_MULTIPART_BUFFERSIZE, required = false)
+ public void setBufferSize(String bufferSize) {
+ this.bufferSize = Integer.parseInt(bufferSize);
+ }
+
+ @Inject(StrutsConstants.STRUTS_I18N_ENCODING)
+ public void setDefaultEncoding(String enc) {
+ this.defaultEncoding = enc;
+ }
+
+ /**
+ * @param maxSize Injects the Struts multiple part maximum size.
+ */
+ @Inject(StrutsConstants.STRUTS_MULTIPART_MAXSIZE)
+ public void setMaxSize(String maxSize) {
+ this.maxSizeProvided = true;
+ this.maxSize = Integer.parseInt(maxSize);
+ }
+
+ /**
+ * @param provider Injects the Struts locale provider.
+ */
+ @Inject
+ public void setLocaleProvider(LocaleProvider provider) {
+ defaultLocale = provider.getLocale();
+ }
+
+ /**
+ * @param request Inspect the servlet request and set the locale if one wasn't provided by
+ * the Struts2 framework.
+ */
+ protected void setLocale(HttpServletRequest request) {
+ if (defaultLocale == null) {
+ defaultLocale = request.getLocale();
+ }
+ }
+
+ /**
+ * Build error message.
+ *
+ * @param e the Throwable/Exception
+ * @param args arguments
+ * @return error message
+ */
+ protected LocalizedMessage buildErrorMessage(Throwable e, Object[] args) {
+ String errorKey = "struts.messages.upload.error." + e.getClass().getSimpleName();
+ LOG.debug("Preparing error message for key: [{}]", errorKey);
+
+ return new LocalizedMessage(this.getClass(), errorKey, e.getMessage(), args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getErrors()
+ */
+ public List<LocalizedMessage> getErrors() {
+ return errors;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/struts/blob/4de8309d/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
----------------------------------------------------------------------
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 30ec33d..02de7f2 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
@@ -21,8 +21,6 @@
package org.apache.struts2.dispatcher.multipart;
-import com.opensymphony.xwork2.LocaleProvider;
-import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.LocalizedTextUtil;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
@@ -33,7 +31,6 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.LocalizedMessage;
import javax.servlet.http.HttpServletRequest;
@@ -46,7 +43,7 @@ import java.util.*;
/**
* Multipart form data request adapter for Jakarta Commons Fileupload package.
*/
-public class JakartaMultiPartRequest implements MultiPartRequest {
+public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
static final Logger LOG = LogManager.getLogger(JakartaMultiPartRequest.class);
@@ -56,22 +53,6 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
// maps parameter name -> List of param values
protected Map<String, List<String>> params = new HashMap<>();
- // any errors while processing this request
- protected List<LocalizedMessage> errors = new ArrayList<>();
-
- protected long maxSize;
- private Locale defaultLocale = Locale.ENGLISH;
-
- @Inject(StrutsConstants.STRUTS_MULTIPART_MAXSIZE)
- public void setMaxSize(String maxSize) {
- this.maxSize = Long.parseLong(maxSize);
- }
-
- @Inject
- public void setLocaleProvider(LocaleProvider provider) {
- defaultLocale = provider.getLocale();
- }
-
/**
* Creates a new request wrapper to handle multi-part data using methods adapted from Jason Pell's
* multipart classes (see class description).
@@ -86,15 +67,14 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
processUpload(request, saveDir);
} catch (FileUploadException e) {
LOG.warn("Request exceeded size limit!", e);
- LocalizedMessage errorMessage = null;
-
+ LocalizedMessage errorMessage;
if(e instanceof FileUploadBase.SizeLimitExceededException) {
FileUploadBase.SizeLimitExceededException ex = (FileUploadBase.SizeLimitExceededException) e;
errorMessage = buildErrorMessage(e, new Object[]{ex.getPermittedSize(), ex.getActualSize()});
} else {
errorMessage = buildErrorMessage(e, new Object[]{});
}
-
+
if (!errors.contains(errorMessage)) {
errors.add(errorMessage);
}
@@ -107,18 +87,6 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
}
}
- protected void setLocale(HttpServletRequest request) {
- if (defaultLocale == null) {
- defaultLocale = request.getLocale();
- }
- }
-
- protected LocalizedMessage buildErrorMessage(Throwable e, Object[] args) {
- String errorKey = "struts.messages.upload.error." + e.getClass().getSimpleName();
- LOG.debug("Preparing error message for key: [{}]", errorKey);
- return new LocalizedMessage(this.getClass(), errorKey, e.getMessage(), args);
- }
-
protected void processUpload(HttpServletRequest request, String saveDir) throws FileUploadException, UnsupportedEncodingException {
for (FileItem item : parseRequest(request, saveDir)) {
LOG.debug("Found file item: [{}]", item.getFieldName());
@@ -313,13 +281,6 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
return null;
}
- /* (non-Javadoc)
- * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getErrors()
- */
- public List<LocalizedMessage> getErrors() {
- return errors;
- }
-
/**
* Returns the canonical name of the given file.
*
http://git-wip-us.apache.org/repos/asf/struts/blob/4de8309d/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
----------------------------------------------------------------------
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 63760e6..11b5a0d 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
@@ -1,8 +1,5 @@
package org.apache.struts2.dispatcher.multipart;
-import com.opensymphony.xwork2.LocaleProvider;
-import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.LocalizedTextUtil;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadBase;
@@ -11,7 +8,6 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.LocalizedMessage;
import javax.servlet.http.HttpServletRequest;
@@ -27,16 +23,11 @@ import java.util.*;
* @author Chris Cranford
* @since 2.3.18
*/
-public class JakartaStreamMultiPartRequest implements MultiPartRequest {
+public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
static final Logger LOG = LogManager.getLogger(JakartaStreamMultiPartRequest.class);
/**
- * Defines the internal buffer size used during streaming operations.
- */
- private static final int BUFFER_SIZE = 10240;
-
- /**
* Map between file fields and file data.
*/
private Map<String, List<FileInfo>> fileInfos = new HashMap<>();
@@ -46,55 +37,6 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
*/
private Map<String, List<String>> parameters = new HashMap<>();
- /**
- * Internal list of raised errors to be passed to the the Struts2 framework.
- */
- private List<LocalizedMessage> errors = new ArrayList<>();
-
- /**
- * Internal list of non-critical messages to be passed to the Struts2 framework.
- */
- private List<String> messages = new ArrayList<>();
-
- /**
- * Specifies the maximum size of the entire request.
- */
- private Long maxSize;
-
- /**
- * Specifies the buffer size to use during streaming.
- */
- private int bufferSize = BUFFER_SIZE;
-
- /**
- * Localization to be used regarding errors.
- */
- private Locale defaultLocale = Locale.ENGLISH;
-
- /**
- * @param maxSize Injects the Struts multiple part maximum size.
- */
- @Inject(StrutsConstants.STRUTS_MULTIPART_MAXSIZE)
- public void setMaxSize(String maxSize) {
- this.maxSize = Long.parseLong(maxSize);
- }
-
- /**
- * @param bufferSize Sets the buffer size to be used.
- */
- @Inject(value = StrutsConstants.STRUTS_MULTIPART_BUFFERSIZE, required = false)
- public void setBufferSize(String bufferSize) {
- this.bufferSize = Integer.parseInt(bufferSize);
- }
-
- /**
- * @param provider Injects the Struts locale provider.
- */
- @Inject
- public void setLocaleProvider(LocaleProvider provider) {
- defaultLocale = provider.getLocale();
- }
-
/* (non-Javadoc)
* @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#cleanUp()
*/
@@ -129,13 +71,6 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
}
/* (non-Javadoc)
- * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getErrors()
- */
- public List<LocalizedMessage> getErrors() {
- return errors;
- }
-
- /* (non-Javadoc)
* @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getFile(java.lang.String)
*/
public UploadedFile[] getFile(String fieldName) {
@@ -239,16 +174,6 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
}
/**
- * @param request Inspect the servlet request and set the locale if one wasn't provided by
- * the Struts2 framework.
- */
- protected void setLocale(HttpServletRequest request) {
- if (defaultLocale == null) {
- defaultLocale = request.getLocale();
- }
- }
-
- /**
* Processes the upload.
*
* @param request the servlet request
@@ -493,19 +418,6 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
}
/**
- * Build error message.
- *
- * @param e the Throwable/Exception
- * @param args arguments
- * @return error message
- */
- private LocalizedMessage buildErrorMessage(Throwable e, Object[] args) {
- String errorKey = "struts.message.upload.error." + e.getClass().getSimpleName();
- LOG.debug("Preparing error message for key: [{}]", errorKey);
- return new LocalizedMessage(this.getClass(), errorKey, e.getMessage(), args);
- }
-
- /**
* Internal data structure used to store a reference to information needed
* to later pass post processing data to the <code>FileUploadInterceptor</code>.
*
http://git-wip-us.apache.org/repos/asf/struts/blob/4de8309d/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
index 40526e0..18bce32 100644
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
@@ -21,20 +21,15 @@
package org.apache.struts2.dispatcher.multipart;
-import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.LocalizedTextUtil;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import http.utils.multipartrequest.ServletMultipartRequest;
-import org.apache.struts2.StrutsConstants;
-import org.apache.struts2.dispatcher.LocalizedMessage;
import javax.servlet.http.HttpServletRequest;
-import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
@@ -44,26 +39,12 @@ import java.util.Locale;
* Multipart form data request adapter for Jason Pell's multipart utils package.
*
*/
-public class PellMultiPartRequest implements MultiPartRequest {
+public class PellMultiPartRequest extends AbstractMultiPartRequest {
private static final Logger LOG = LogManager.getLogger(PellMultiPartRequest.class);
+
private ServletMultipartRequest multi;
- private String defaultEncoding;
- private boolean maxSizeProvided;
- private int maxSize;
-
- @Inject(StrutsConstants.STRUTS_I18N_ENCODING)
- public void setDefaultEncoding(String enc) {
- this.defaultEncoding = enc;
- }
-
- @Inject(StrutsConstants.STRUTS_MULTIPART_MAXSIZE)
- public void setMaxSize(String maxSize) {
- this.maxSizeProvided = true;
- this.maxSize = Integer.parseInt(maxSize);
- }
-
/**
* Creates a new request wrapper to handle multi-part data using methods adapted from Jason Pell's
* multipart classes (see class description).
@@ -132,10 +113,6 @@ public class PellMultiPartRequest implements MultiPartRequest {
return values.toArray(new String[values.size()]);
}
- public List<LocalizedMessage> getErrors() {
- return Collections.emptyList();
- }
-
/**
* Sets the encoding for the uploaded params. This needs to be set if you are using character sets other than
* ASCII.
[05/14] struts git commit: Reverts back to pure File
Posted by lu...@apache.org.
Reverts back to pure File
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ec5fba7a
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ec5fba7a
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ec5fba7a
Branch: refs/heads/master
Commit: ec5fba7af9d62ac8a84dc1cd43d3bfee65dccca3
Parents: dca41a3
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 09:38:20 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 09:38:20 2016 +0100
----------------------------------------------------------------------
.../struts2/showcase/fileupload/FileUploadAction.java | 7 +++----
.../fileupload/MultipleFileUploadUsingArrayAction.java | 9 ++++-----
.../fileupload/MultipleFileUploadUsingListAction.java | 9 ++++-----
3 files changed, 11 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/ec5fba7a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
index 0568a51..6005306 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
@@ -21,7 +21,6 @@
package org.apache.struts2.showcase.fileupload;
import com.opensymphony.xwork2.ActionSupport;
-import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
@@ -33,7 +32,7 @@ public class FileUploadAction extends ActionSupport {
private static final long serialVersionUID = 5156288255337069381L;
private String contentType;
- private UploadedFile upload;
+ private File upload;
private String fileName;
private String caption;
@@ -69,11 +68,11 @@ public class FileUploadAction extends ActionSupport {
// since we are using <s:file name="upload" ... /> the File itself will be
// obtained through getter/setter of <file-tag-name>
- public UploadedFile getUpload() {
+ public File getUpload() {
return upload;
}
- public void setUpload(UploadedFile upload) {
+ public void setUpload(File upload) {
this.upload = upload;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/ec5fba7a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingArrayAction.java
----------------------------------------------------------------------
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 183b2b3..b1a5985 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,7 +22,6 @@
package org.apache.struts2.showcase.fileupload;
import com.opensymphony.xwork2.ActionSupport;
-import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
@@ -33,7 +32,7 @@ import java.io.File;
*/
public class MultipleFileUploadUsingArrayAction extends ActionSupport {
- private UploadedFile[] uploads;
+ private File[] uploads;
private String[] uploadFileNames;
private String[] uploadContentTypes;
@@ -41,7 +40,7 @@ public class MultipleFileUploadUsingArrayAction extends ActionSupport {
public String upload() throws Exception {
System.out.println("\n\n upload2");
System.out.println("files:");
- for (UploadedFile u : uploads) {
+ for (File u : uploads) {
System.out.println("*** " + u + "\t" + u.length());
}
System.out.println("filenames:");
@@ -56,11 +55,11 @@ public class MultipleFileUploadUsingArrayAction extends ActionSupport {
return SUCCESS;
}
- public UploadedFile[] getUpload() {
+ public File[] getUpload() {
return this.uploads;
}
- public void setUpload(UploadedFile[] upload) {
+ public void setUpload(File[] upload) {
this.uploads = upload;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/ec5fba7a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingListAction.java
----------------------------------------------------------------------
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 5327ae7..7b4325e 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,7 +22,6 @@
package org.apache.struts2.showcase.fileupload;
import com.opensymphony.xwork2.ActionSupport;
-import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
import java.util.ArrayList;
@@ -35,16 +34,16 @@ import java.util.List;
*/
public class MultipleFileUploadUsingListAction extends ActionSupport {
- private List<UploadedFile> uploads = new ArrayList<>();
+ private List<File> uploads = new ArrayList<>();
private List<String> uploadFileNames = new ArrayList<>();
private List<String> uploadContentTypes = new ArrayList<>();
- public List<UploadedFile> getUpload() {
+ public List<File> getUpload() {
return this.uploads;
}
- public void setUpload(List<UploadedFile> uploads) {
+ public void setUpload(List<File> uploads) {
this.uploads = uploads;
}
@@ -68,7 +67,7 @@ public class MultipleFileUploadUsingListAction extends ActionSupport {
System.out.println("\n\n upload1");
System.out.println("files:");
- for (UploadedFile u : uploads) {
+ for (File u : uploads) {
System.out.println("*** " + u + "\t" + u.length());
}
System.out.println("filenames:");
[10/14] struts git commit: Drops unused code
Posted by lu...@apache.org.
Drops unused code
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/de51e797
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/de51e797
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/de51e797
Branch: refs/heads/master
Commit: de51e7971847b8e501a6d6efe076ee506a62ecb4
Parents: 6280feb
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 18:03:14 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 18:03:14 2016 +0100
----------------------------------------------------------------------
.../multipart/JakartaStreamMultiPartRequest.java | 13 -------------
1 file changed, 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/de51e797/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
----------------------------------------------------------------------
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 49ca2be..63760e6 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
@@ -506,19 +506,6 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
}
/**
- * Build action message.
- *
- * @param e the Throwable/Exception
- * @param args arguments
- * @return action message
- */
- private String buildMessage(Throwable e, Object[] args) {
- String messageKey = "struts.message.upload.message." + e.getClass().getSimpleName();
- LOG.debug("Preparing message for key: [{}]", messageKey);
- return LocalizedTextUtil.findText(this.getClass(), messageKey, defaultLocale, e.getMessage(), args);
- }
-
- /**
* Internal data structure used to store a reference to information needed
* to later pass post processing data to the <code>FileUploadInterceptor</code>.
*
[04/14] struts git commit: Updates examples
Posted by lu...@apache.org.
Updates examples
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/dca41a39
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/dca41a39
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/dca41a39
Branch: refs/heads/master
Commit: dca41a39bf61917def9288e0436b8ccff410dd31
Parents: 407cd58
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Nov 21 11:05:56 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Nov 21 11:05:56 2016 +0100
----------------------------------------------------------------------
.../struts2/showcase/fileupload/FileUploadAction.java | 7 ++++---
.../fileupload/MultipleFileUploadUsingArrayAction.java | 9 +++++----
.../fileupload/MultipleFileUploadUsingListAction.java | 13 +++++++------
3 files changed, 16 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/dca41a39/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
index 6005306..0568a51 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/FileUploadAction.java
@@ -21,6 +21,7 @@
package org.apache.struts2.showcase.fileupload;
import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
@@ -32,7 +33,7 @@ public class FileUploadAction extends ActionSupport {
private static final long serialVersionUID = 5156288255337069381L;
private String contentType;
- private File upload;
+ private UploadedFile upload;
private String fileName;
private String caption;
@@ -68,11 +69,11 @@ public class FileUploadAction extends ActionSupport {
// since we are using <s:file name="upload" ... /> the File itself will be
// obtained through getter/setter of <file-tag-name>
- public File getUpload() {
+ public UploadedFile getUpload() {
return upload;
}
- public void setUpload(File upload) {
+ public void setUpload(UploadedFile upload) {
this.upload = upload;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/dca41a39/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingArrayAction.java
----------------------------------------------------------------------
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 b1a5985..183b2b3 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,6 +22,7 @@
package org.apache.struts2.showcase.fileupload;
import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
@@ -32,7 +33,7 @@ import java.io.File;
*/
public class MultipleFileUploadUsingArrayAction extends ActionSupport {
- private File[] uploads;
+ private UploadedFile[] uploads;
private String[] uploadFileNames;
private String[] uploadContentTypes;
@@ -40,7 +41,7 @@ public class MultipleFileUploadUsingArrayAction extends ActionSupport {
public String upload() throws Exception {
System.out.println("\n\n upload2");
System.out.println("files:");
- for (File u : uploads) {
+ for (UploadedFile u : uploads) {
System.out.println("*** " + u + "\t" + u.length());
}
System.out.println("filenames:");
@@ -55,11 +56,11 @@ public class MultipleFileUploadUsingArrayAction extends ActionSupport {
return SUCCESS;
}
- public File[] getUpload() {
+ public UploadedFile[] getUpload() {
return this.uploads;
}
- public void setUpload(File[] upload) {
+ public void setUpload(UploadedFile[] upload) {
this.uploads = upload;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/dca41a39/apps/showcase/src/main/java/org/apache/struts2/showcase/fileupload/MultipleFileUploadUsingListAction.java
----------------------------------------------------------------------
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 56e5875..5327ae7 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,6 +22,7 @@
package org.apache.struts2.showcase.fileupload;
import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
import java.util.ArrayList;
@@ -34,16 +35,16 @@ import java.util.List;
*/
public class MultipleFileUploadUsingListAction extends ActionSupport {
- private List<File> uploads = new ArrayList<File>();
- private List<String> uploadFileNames = new ArrayList<String>();
- private List<String> uploadContentTypes = new ArrayList<String>();
+ private List<UploadedFile> uploads = new ArrayList<>();
+ private List<String> uploadFileNames = new ArrayList<>();
+ private List<String> uploadContentTypes = new ArrayList<>();
- public List<File> getUpload() {
+ public List<UploadedFile> getUpload() {
return this.uploads;
}
- public void setUpload(List<File> uploads) {
+ public void setUpload(List<UploadedFile> uploads) {
this.uploads = uploads;
}
@@ -67,7 +68,7 @@ public class MultipleFileUploadUsingListAction extends ActionSupport {
System.out.println("\n\n upload1");
System.out.println("files:");
- for (File u : uploads) {
+ for (UploadedFile u : uploads) {
System.out.println("*** " + u + "\t" + u.length());
}
System.out.println("filenames:");
[13/14] struts git commit: Fixes issue with NPE
Posted by lu...@apache.org.
Fixes issue with NPE
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/1ff8a88a
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/1ff8a88a
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/1ff8a88a
Branch: refs/heads/master
Commit: 1ff8a88a9df4b5cb9ffbdbb21028dc61d3236b01
Parents: ae5605f
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Nov 24 14:52:18 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Nov 24 14:52:18 2016 +0100
----------------------------------------------------------------------
.../conversion/UploadedFileConverter.java | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/1ff8a88a/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java b/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
index 8ceac31..69d3c62 100644
--- a/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
+++ b/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
@@ -36,18 +36,22 @@ public class UploadedFileConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object target, Member member, String propertyName, Object value, Class toType) {
if (File.class.equals(toType)) {
- LOG.warn("Converting {} into {}, consider switching to {} and do not access {} directly!",
+ LOG.debug("Converting {} into {}, consider switching to {} and do not access {} directly!",
File.class.getName(), UploadedFile.class.getName(), UploadedFile.class.getName(), File.class.getName());
+ Object obj;
if (value.getClass().isArray() && Array.getLength(value) == 1) {
- Object obj = Array.get(value, 0);
- if (obj instanceof UploadedFile) {
- UploadedFile file = (UploadedFile) obj;
- if (file.getContent() instanceof File) {
- return file.getContent();
- }
- return new File(file.getAbsolutePath());
+ obj = Array.get(value, 0);
+ } else {
+ obj = value;
+ }
+
+ if (obj instanceof UploadedFile) {
+ UploadedFile file = (UploadedFile) obj;
+ if (file.getContent() instanceof File) {
+ return file.getContent();
}
+ return new File(file.getAbsolutePath());
}
}
[14/14] struts git commit: Adds unit test to cover converter's logic
Posted by lu...@apache.org.
Adds unit test to cover converter's logic
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/32341681
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/32341681
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/32341681
Branch: refs/heads/master
Commit: 32341681ed420b4d042b35f712a6172dcab874f2
Parents: 1ff8a88
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Nov 24 14:52:34 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Nov 24 14:52:34 2016 +0100
----------------------------------------------------------------------
.../conversion/UploadedFileConverterTest.java | 70 ++++++++++++++++++++
1 file changed, 70 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/32341681/core/src/test/java/org/apache/struts2/conversion/UploadedFileConverterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/conversion/UploadedFileConverterTest.java b/core/src/test/java/org/apache/struts2/conversion/UploadedFileConverterTest.java
new file mode 100644
index 0000000..9b83b72
--- /dev/null
+++ b/core/src/test/java/org/apache/struts2/conversion/UploadedFileConverterTest.java
@@ -0,0 +1,70 @@
+package org.apache.struts2.conversion;
+
+import org.apache.struts2.dispatcher.multipart.StrutsUploadedFile;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.lang.reflect.Member;
+import java.util.Collections;
+import java.util.Map;
+
+import static org.fest.assertions.Assertions.assertThat;
+
+public class UploadedFileConverterTest {
+
+ private Map<String, Object> context;
+ private Class target;
+ private Member member;
+ private String propertyName;
+ private File tempFile;
+
+ @Before
+ public void setUp() throws Exception {
+ context = Collections.emptyMap();
+ target = File.class;
+ member = File.class.getMethod("length");
+ propertyName = "ignore";
+ tempFile = File.createTempFile("struts", "test");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ tempFile.delete();
+ }
+
+ @Test
+ public void convertUploadedFileToFile() throws Exception {
+ // given
+ UploadedFileConverter ufc = new UploadedFileConverter();
+ UploadedFile uploadedFile = new StrutsUploadedFile(tempFile);
+
+ // when
+ Object result = ufc.convertValue(context, target, member, propertyName, uploadedFile, File.class);
+
+ // then
+ assertThat(result).isInstanceOf(File.class);
+ File file = (File) result;
+ assertThat(file.length()).isEqualTo(tempFile.length());
+ assertThat(file.getAbsolutePath()).isEqualTo(tempFile.getAbsolutePath());
+ }
+
+ @Test
+ public void convertUploadedFileArrayToFile() throws Exception {
+ // given
+ UploadedFileConverter ufc = new UploadedFileConverter();
+ UploadedFile[] uploadedFile = new UploadedFile[] { new StrutsUploadedFile(tempFile) };
+
+ // when
+ Object result = ufc.convertValue(context, target, member, propertyName, uploadedFile, File.class);
+
+ // then
+ assertThat(result).isInstanceOf(File.class);
+ File file = (File) result;
+ assertThat(file.length()).isEqualTo(tempFile.length());
+ assertThat(file.getAbsolutePath()).isEqualTo(tempFile.getAbsolutePath());
+ }
+
+}
\ No newline at end of file
[08/14] struts git commit: Adds WARN to avoid using java.io.File
Posted by lu...@apache.org.
Adds WARN to avoid using java.io.File
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e152c15f
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e152c15f
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e152c15f
Branch: refs/heads/master
Commit: e152c15f78d2052737f0ed3d95fd8f54979a4557
Parents: 3fd9096
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 17:44:02 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 17:44:02 2016 +0100
----------------------------------------------------------------------
.../org/apache/struts2/conversion/UploadedFileConverter.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/e152c15f/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java b/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
index 15b0d85..8ceac31 100644
--- a/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
+++ b/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
@@ -20,6 +20,8 @@
package org.apache.struts2.conversion;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.dispatcher.multipart.UploadedFile;
import java.io.File;
@@ -29,9 +31,14 @@ import java.util.Map;
public class UploadedFileConverter extends DefaultTypeConverter {
+ private static final Logger LOG = LogManager.getLogger(UploadedFileConverter.class);
+
@Override
public Object convertValue(Map<String, Object> context, Object target, Member member, String propertyName, Object value, Class toType) {
if (File.class.equals(toType)) {
+ LOG.warn("Converting {} into {}, consider switching to {} and do not access {} directly!",
+ File.class.getName(), UploadedFile.class.getName(), UploadedFile.class.getName(), File.class.getName());
+
if (value.getClass().isArray() && Array.getLength(value) == 1) {
Object obj = Array.get(value, 0);
if (obj instanceof UploadedFile) {
[09/14] struts git commit: Reduces code duplication
Posted by lu...@apache.org.
Reduces code duplication
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/6280feb4
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/6280feb4
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/6280feb4
Branch: refs/heads/master
Commit: 6280feb4266f5f8906b72d48a292a81939c8d151
Parents: e152c15
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 17:56:56 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 17:56:56 2016 +0100
----------------------------------------------------------------------
.../multipart/JakartaMultiPartRequest.java | 2 +-
.../JakartaStreamMultiPartRequest.java | 11 +---
.../multipart/JakartaUploadedFile.java | 61 --------------------
.../multipart/StrutsUploadedFile.java | 61 ++++++++++++++++++++
.../interceptor/FileUploadInterceptorTest.java | 4 +-
.../multipart/PellMultiPartRequest.java | 2 +-
.../dispatcher/multipart/PellUploadedFile.java | 61 --------------------
7 files changed, 66 insertions(+), 136 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
----------------------------------------------------------------------
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 900733c..30ec33d 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
@@ -240,7 +240,7 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
LOG.error("Cannot write uploaded empty file to disk: {}", storeLocation.getAbsolutePath(), e);
}
}
- fileList.add(new JakartaUploadedFile(storeLocation));
+ fileList.add(new StrutsUploadedFile(storeLocation));
}
return fileList.toArray(new UploadedFile[fileList.size()]);
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
----------------------------------------------------------------------
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 a6e15b8..49ca2be 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
@@ -135,15 +135,6 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
return errors;
}
- /**
- * Allows interceptor to fetch non-critical messages that can be passed to the action.
- *
- * @return list of string messages
- */
- public List<String> getMesssages() {
- return messages;
- }
-
/* (non-Javadoc)
* @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getFile(java.lang.String)
*/
@@ -155,7 +146,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
List<UploadedFile> files = new ArrayList<>(infos.size());
for (FileInfo fileInfo : infos) {
- files.add(new JakartaUploadedFile(fileInfo.getFile()));
+ files.add(new StrutsUploadedFile(fileInfo.getFile()));
}
return files.toArray(new UploadedFile[files.size()]);
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
deleted file mode 100644
index 3dfdea6..0000000
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.struts2.dispatcher.multipart;
-
-import java.io.File;
-
-public class JakartaUploadedFile implements UploadedFile {
-
- private File file;
-
- public JakartaUploadedFile(File file) {
- this.file = file;
- }
-
- @Override
- public Long length() {
- return file.length();
- }
-
- @Override
- public String getName() {
- return file.getName();
- }
-
- @Override
- public boolean isFile() {
- return file.isFile();
- }
-
- @Override
- public boolean delete() {
- return file.delete();
- }
-
- @Override
- public String getAbsolutePath() {
- return file.getAbsolutePath();
- }
-
- @Override
- public File getContent() {
- return file;
- }
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/core/src/main/java/org/apache/struts2/dispatcher/multipart/StrutsUploadedFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/StrutsUploadedFile.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/StrutsUploadedFile.java
new file mode 100644
index 0000000..a185780
--- /dev/null
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/StrutsUploadedFile.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.struts2.dispatcher.multipart;
+
+import java.io.File;
+
+public class StrutsUploadedFile implements UploadedFile {
+
+ private File file;
+
+ public StrutsUploadedFile(File file) {
+ this.file = file;
+ }
+
+ @Override
+ public Long length() {
+ return file.length();
+ }
+
+ @Override
+ public String getName() {
+ return file.getName();
+ }
+
+ @Override
+ public boolean isFile() {
+ return file.isFile();
+ }
+
+ @Override
+ public boolean delete() {
+ return file.delete();
+ }
+
+ @Override
+ public String getAbsolutePath() {
+ return file.getAbsolutePath();
+ }
+
+ @Override
+ public File getContent() {
+ return file;
+ }
+}
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
index 87251cd..1cea2d7 100644
--- a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
+++ b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
@@ -33,7 +33,7 @@ import org.apache.struts2.StrutsInternalTestCase;
import org.apache.struts2.TestAction;
import org.apache.struts2.dispatcher.HttpParameters;
import org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest;
-import org.apache.struts2.dispatcher.multipart.JakartaUploadedFile;
+import org.apache.struts2.dispatcher.multipart.StrutsUploadedFile;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
import org.apache.struts2.dispatcher.multipart.UploadedFile;
import org.springframework.mock.web.MockHttpServletRequest;
@@ -198,7 +198,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
URL url = ClassLoaderUtil.getResource("log4j2.xml", FileUploadInterceptorTest.class);
File file = new File(new URI(url.toString()));
assertTrue("log4j2.xml should be in src/test folder", file.exists());
- boolean notOk = interceptor.acceptFile(action, new JakartaUploadedFile(file), "filename", "text/html", "inputName", validation);
+ boolean notOk = interceptor.acceptFile(action, new StrutsUploadedFile(file), "filename", "text/html", "inputName", validation);
assertFalse(notOk);
assertFalse(validation.getFieldErrors().isEmpty());
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
index 1acfe46..40526e0 100644
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
@@ -93,7 +93,7 @@ public class PellMultiPartRequest implements MultiPartRequest {
}
public UploadedFile[] getFile(String fieldName) {
- return new UploadedFile[]{ new PellUploadedFile(multi.getFile(fieldName)) };
+ return new UploadedFile[]{ new StrutsUploadedFile(multi.getFile(fieldName)) };
}
public String[] getFileNames(String fieldName) {
http://git-wip-us.apache.org/repos/asf/struts/blob/6280feb4/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
deleted file mode 100644
index b51c987..0000000
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.struts2.dispatcher.multipart;
-
-import java.io.File;
-
-public class PellUploadedFile implements UploadedFile {
-
- private File file;
-
- public PellUploadedFile(File file) {
- this.file = file;
- }
-
- @Override
- public Long length() {
- return file.length();
- }
-
- @Override
- public String getName() {
- return file.getName();
- }
-
- @Override
- public boolean isFile() {
- return file.isFile();
- }
-
- @Override
- public boolean delete() {
- return file.delete();
- }
-
- @Override
- public String getAbsolutePath() {
- return file.getAbsolutePath();
- }
-
- @Override
- public File getContent() {
- return file;
- }
-}
[07/14] struts git commit: Adds default converter to handle
converstion of internal file representation to File
Posted by lu...@apache.org.
Adds default converter to handle converstion of internal file representation to File
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/3fd90966
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/3fd90966
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/3fd90966
Branch: refs/heads/master
Commit: 3fd909668af694214500c7b3b02054a5ea7f4bb1
Parents: e867934
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 09:41:13 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 09:41:13 2016 +0100
----------------------------------------------------------------------
.../conversion/UploadedFileConverter.java | 50 ++++++++++++++++++++
.../xwork-default-conversion.properties | 1 +
2 files changed, 51 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/3fd90966/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java b/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
new file mode 100644
index 0000000..15b0d85
--- /dev/null
+++ b/core/src/main/java/org/apache/struts2/conversion/UploadedFileConverter.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.struts2.conversion;
+
+import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
+
+import java.io.File;
+import java.lang.reflect.Array;
+import java.lang.reflect.Member;
+import java.util.Map;
+
+public class UploadedFileConverter extends DefaultTypeConverter {
+
+ @Override
+ public Object convertValue(Map<String, Object> context, Object target, Member member, String propertyName, Object value, Class toType) {
+ if (File.class.equals(toType)) {
+ if (value.getClass().isArray() && Array.getLength(value) == 1) {
+ Object obj = Array.get(value, 0);
+ if (obj instanceof UploadedFile) {
+ UploadedFile file = (UploadedFile) obj;
+ if (file.getContent() instanceof File) {
+ return file.getContent();
+ }
+ return new File(file.getAbsolutePath());
+ }
+ }
+ }
+
+ return super.convertValue(context, target, member, propertyName, value, toType);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/struts/blob/3fd90966/core/src/main/resources/xwork-default-conversion.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/xwork-default-conversion.properties b/core/src/main/resources/xwork-default-conversion.properties
new file mode 100644
index 0000000..43d0fe9
--- /dev/null
+++ b/core/src/main/resources/xwork-default-conversion.properties
@@ -0,0 +1 @@
+java.io.File=org.apache.struts2.conversion.UploadedFileConverter
[06/14] struts git commit: Drops generic
Posted by lu...@apache.org.
Drops generic
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e8679348
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e8679348
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e8679348
Branch: refs/heads/master
Commit: e86793482a9e40eb8315655df672fb32ac6cf77c
Parents: ec5fba7
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Nov 22 09:38:31 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Nov 22 09:38:31 2016 +0100
----------------------------------------------------------------------
.../apache/struts2/dispatcher/multipart/JakartaUploadedFile.java | 2 +-
.../org/apache/struts2/dispatcher/multipart/UploadedFile.java | 4 ++--
.../apache/struts2/dispatcher/multipart/PellUploadedFile.java | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/e8679348/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
index 5461b9d..3dfdea6 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
@@ -21,7 +21,7 @@ package org.apache.struts2.dispatcher.multipart;
import java.io.File;
-public class JakartaUploadedFile implements UploadedFile<File> {
+public class JakartaUploadedFile implements UploadedFile {
private File file;
http://git-wip-us.apache.org/repos/asf/struts/blob/e8679348/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
index e6a77a8..7efe285 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/UploadedFile.java
@@ -22,7 +22,7 @@ package org.apache.struts2.dispatcher.multipart;
/**
* Virtual representation of a uploaded file used by {@link MultiPartRequest}
*/
-public interface UploadedFile<T> {
+public interface UploadedFile {
Long length();
@@ -34,6 +34,6 @@ public interface UploadedFile<T> {
String getAbsolutePath();
- T getContent();
+ Object getContent();
}
http://git-wip-us.apache.org/repos/asf/struts/blob/e8679348/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
index a1d9e4a..b51c987 100644
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
@@ -21,7 +21,7 @@ package org.apache.struts2.dispatcher.multipart;
import java.io.File;
-public class PellUploadedFile implements UploadedFile<File> {
+public class PellUploadedFile implements UploadedFile {
private File file;
[02/14] struts git commit: Uses the new class in implementation of
MultiPartRequest
Posted by lu...@apache.org.
Uses the new class in implementation of MultiPartRequest
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/45edbcbe
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/45edbcbe
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/45edbcbe
Branch: refs/heads/master
Commit: 45edbcbe45d303240af998687387d12a9e15733e
Parents: fe05ca2
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Nov 21 11:05:33 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Nov 21 11:05:33 2016 +0100
----------------------------------------------------------------------
.../multipart/JakartaMultiPartRequest.java | 8 +--
.../JakartaStreamMultiPartRequest.java | 8 +--
.../multipart/JakartaUploadedFile.java | 61 ++++++++++++++++++++
.../dispatcher/multipart/MultiPartRequest.java | 26 ++++-----
.../multipart/MultiPartRequestWrapper.java | 2 +-
.../multipart/PellMultiPartRequest.java | 8 +--
.../dispatcher/multipart/PellUploadedFile.java | 61 ++++++++++++++++++++
7 files changed, 148 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
----------------------------------------------------------------------
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 32890c6..900733c 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
@@ -223,14 +223,14 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
/* (non-Javadoc)
* @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getFile(java.lang.String)
*/
- public File[] getFile(String fieldName) {
+ public UploadedFile[] getFile(String fieldName) {
List<FileItem> items = files.get(fieldName);
if (items == null) {
return null;
}
- List<File> fileList = new ArrayList<>(items.size());
+ List<UploadedFile> fileList = new ArrayList<>(items.size());
for (FileItem fileItem : items) {
File storeLocation = ((DiskFileItem) fileItem).getStoreLocation();
if (fileItem.isInMemory() && storeLocation != null && !storeLocation.exists()) {
@@ -240,10 +240,10 @@ public class JakartaMultiPartRequest implements MultiPartRequest {
LOG.error("Cannot write uploaded empty file to disk: {}", storeLocation.getAbsolutePath(), e);
}
}
- fileList.add(storeLocation);
+ fileList.add(new JakartaUploadedFile(storeLocation));
}
- return fileList.toArray(new File[fileList.size()]);
+ return fileList.toArray(new UploadedFile[fileList.size()]);
}
/* (non-Javadoc)
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
----------------------------------------------------------------------
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 b1aa563..a6e15b8 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
@@ -147,18 +147,18 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest {
/* (non-Javadoc)
* @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#getFile(java.lang.String)
*/
- public File[] getFile(String fieldName) {
+ public UploadedFile[] getFile(String fieldName) {
List<FileInfo> infos = fileInfos.get(fieldName);
if (infos == null) {
return null;
}
- List<File> files = new ArrayList<>(infos.size());
+ List<UploadedFile> files = new ArrayList<>(infos.size());
for (FileInfo fileInfo : infos) {
- files.add(fileInfo.getFile());
+ files.add(new JakartaUploadedFile(fileInfo.getFile()));
}
- return files.toArray(new File[files.size()]);
+ return files.toArray(new UploadedFile[files.size()]);
}
/* (non-Javadoc)
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
new file mode 100644
index 0000000..5461b9d
--- /dev/null
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaUploadedFile.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.struts2.dispatcher.multipart;
+
+import java.io.File;
+
+public class JakartaUploadedFile implements UploadedFile<File> {
+
+ private File file;
+
+ public JakartaUploadedFile(File file) {
+ this.file = file;
+ }
+
+ @Override
+ public Long length() {
+ return file.length();
+ }
+
+ @Override
+ public String getName() {
+ return file.getName();
+ }
+
+ @Override
+ public boolean isFile() {
+ return file.isFile();
+ }
+
+ @Override
+ public boolean delete() {
+ return file.delete();
+ }
+
+ @Override
+ public String getAbsolutePath() {
+ return file.getAbsolutePath();
+ }
+
+ @Override
+ public File getContent() {
+ return file;
+ }
+}
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
index a230a60..22ffe8e 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
@@ -36,14 +36,14 @@ import java.util.List;
*/
public interface MultiPartRequest {
- public void parse(HttpServletRequest request, String saveDir) throws IOException;
+ void parse(HttpServletRequest request, String saveDir) throws IOException;
/**
* Returns an enumeration of the parameter names for uploaded files
*
* @return an enumeration of the parameter names for uploaded files
*/
- public Enumeration<String> getFileParameterNames();
+ Enumeration<String> getFileParameterNames();
/**
* Returns the content type(s) of the file(s) associated with the specified field name
@@ -54,16 +54,16 @@ public interface MultiPartRequest {
* @return an array of content encoding for the specified input field name or <tt>null</tt> if
* no content type was specified.
*/
- public String[] getContentType(String fieldName);
+ String[] getContentType(String fieldName);
/**
- * Returns a {@link java.io.File} object for the filename specified or <tt>null</tt> if no files
+ * Returns a {@link UploadedFile} object for the filename specified or <tt>null</tt> if no files
* are associated with the given field name.
*
* @param fieldName input field name
- * @return a File[] object for files associated with the specified input field name
+ * @return a UploadedFile[] object for files associated with the specified input field name
*/
- public File[] getFile(String fieldName);
+ UploadedFile[] getFile(String fieldName);
/**
* Returns a String[] of file names for files associated with the specified input field name
@@ -71,7 +71,7 @@ public interface MultiPartRequest {
* @param fieldName input field name
* @return a String[] of file names for files associated with the specified input field name
*/
- public String[] getFileNames(String fieldName);
+ String[] getFileNames(String fieldName);
/**
* Returns the file system name(s) of files associated with the given field name or
@@ -80,7 +80,7 @@ public interface MultiPartRequest {
* @param fieldName input field name
* @return the file system name(s) of files associated with the given field name
*/
- public String[] getFilesystemName(String fieldName);
+ String[] getFilesystemName(String fieldName);
/**
* Returns the specified request parameter.
@@ -88,14 +88,14 @@ public interface MultiPartRequest {
* @param name the name of the parameter to get
* @return the parameter or <tt>null</tt> if it was not found.
*/
- public String getParameter(String name);
+ String getParameter(String name);
/**
* Returns an enumeration of String parameter names.
*
* @return an enumeration of String parameter names.
*/
- public Enumeration<String> getParameterNames();
+ Enumeration<String> getParameterNames();
/**
* Returns a list of all parameter values associated with a parameter name. If there is only
@@ -104,7 +104,7 @@ public interface MultiPartRequest {
* @param name the name of the parameter.
* @return an array of all values associated with the parameter name.
*/
- public String[] getParameterValues(String name);
+ String[] getParameterValues(String name);
/**
* Returns a list of error messages that may have occurred while processing the request.
@@ -115,11 +115,11 @@ public interface MultiPartRequest {
*
* @return a list of Strings that represent various errors during parsing
*/
- public List<LocalizedMessage> getErrors();
+ List<LocalizedMessage> getErrors();
/**
* Cleans up all uploaded file, should be called at the end of request
*/
- public void cleanUp();
+ void cleanUp();
}
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
index 05798e3..4f55621 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java
@@ -143,7 +143,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper {
* @param fieldName input field name
* @return a File[] object for files associated with the specified input field name
*/
- public File[] getFiles(String fieldName) {
+ public UploadedFile[] getFiles(String fieldName) {
if (multi == null) {
return null;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
index 4a5f7c0..1acfe46 100644
--- a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellMultiPartRequest.java
@@ -92,8 +92,8 @@ public class PellMultiPartRequest implements MultiPartRequest {
return new String[]{multi.getContentType(fieldName)};
}
- public File[] getFile(String fieldName) {
- return new File[]{multi.getFile(fieldName)};
+ public UploadedFile[] getFile(String fieldName) {
+ return new UploadedFile[]{ new PellUploadedFile(multi.getFile(fieldName)) };
}
public String[] getFileNames(String fieldName) {
@@ -174,8 +174,8 @@ public class PellMultiPartRequest implements MultiPartRequest {
Enumeration fileParameterNames = multi.getFileParameterNames();
while (fileParameterNames != null && fileParameterNames.hasMoreElements()) {
String inputValue = (String) fileParameterNames.nextElement();
- File[] files = getFile(inputValue);
- for (File currentFile : files) {
+ UploadedFile[] files = getFile(inputValue);
+ for (UploadedFile currentFile : files) {
if (LOG.isInfoEnabled()) {
String msg = LocalizedTextUtil.findText(this.getClass(), "struts.messages.removing.file", Locale.ENGLISH,
"no.message.found", new Object[]{inputValue, currentFile});
http://git-wip-us.apache.org/repos/asf/struts/blob/45edbcbe/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
----------------------------------------------------------------------
diff --git a/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
new file mode 100644
index 0000000..a1d9e4a
--- /dev/null
+++ b/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/multipart/PellUploadedFile.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.struts2.dispatcher.multipart;
+
+import java.io.File;
+
+public class PellUploadedFile implements UploadedFile<File> {
+
+ private File file;
+
+ public PellUploadedFile(File file) {
+ this.file = file;
+ }
+
+ @Override
+ public Long length() {
+ return file.length();
+ }
+
+ @Override
+ public String getName() {
+ return file.getName();
+ }
+
+ @Override
+ public boolean isFile() {
+ return file.isFile();
+ }
+
+ @Override
+ public boolean delete() {
+ return file.delete();
+ }
+
+ @Override
+ public String getAbsolutePath() {
+ return file.getAbsolutePath();
+ }
+
+ @Override
+ public File getContent() {
+ return file;
+ }
+}