(struts) branch fix/after-rebase updated (576c06469 -> 660f5376e)
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a change to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git from 576c06469 Replaces empty file upload test with simple one add 51a173aa2 Upgrades Maven wrapper add 660f5376e Fixes pipeline to properly handle transformed artifacts No new revisions were added by this update. Summary of changes: .mvn/wrapper/maven-wrapper.properties | 2 +- Jenkinsfile | 111 +- 2 files changed, 56 insertions(+), 57 deletions(-)
(struts) branch feature/jakarta-modules updated (c25e0e67a -> 41f4485b4)
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a change to branch feature/jakarta-modules in repository https://gitbox.apache.org/repos/asf/struts.git discard c25e0e67a Moves JakartaEE related modules into dedicate subdirectory add 41f4485b4 Moves JakartaEE related modules into dedicate subdirectory This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (c25e0e67a) \ N -- N -- N refs/heads/feature/jakarta-modules (41f4485b4) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. No new revisions were added by this update. Summary of changes: jakarta/freemarker-jakarta/pom.xml | 2 +- jakarta/sitemesh2-jakarta/pom.xml | 2 +- jakarta/velocity-tools-jsp-jakarta/pom.xml | 2 +- jakarta/velocity-tools-view-jakarta/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
(struts) 01/01: Moves JakartaEE related modules into dedicate subdirectory
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch feature/jakarta-modules in repository https://gitbox.apache.org/repos/asf/struts.git commit c25e0e67a189e75efd63eb12983bcdc559cf3001 Author: Lukasz Lenart AuthorDate: Sat Dec 16 17:37:09 2023 +0100 Moves JakartaEE related modules into dedicate subdirectory --- freemarker-jakarta/pom.xml | 71 .../freemarker-jakarta}/README.md | 1 + jakarta/freemarker-jakarta/pom.xml | 71 jakarta/pom.xml| 48 ++ .../sitemesh2-jakarta}/README.md | 1 + jakarta/sitemesh2-jakarta/pom.xml | 71 .../velocity-tools-jsp-jakarta}/README.md | 1 + jakarta/velocity-tools-jsp-jakarta/pom.xml | 77 ++ .../velocity-tools-view-jakarta}/README.md | 1 + jakarta/velocity-tools-view-jakarta/pom.xml| 71 pom.xml| 42 ++-- sitemesh2-jakarta/pom.xml | 71 velocity-tools-jsp-jakarta/pom.xml | 77 -- velocity-tools-view-jakarta/pom.xml| 71 14 files changed, 362 insertions(+), 312 deletions(-) diff --git a/freemarker-jakarta/pom.xml b/freemarker-jakarta/pom.xml deleted file mode 100644 index d4b6b766c..0 --- a/freemarker-jakarta/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - -http://maven.apache.org/POM/4.0.0; - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd;> - 4.0.0 - -org.apache.struts -struts2-parent -7.0.0-SNAPSHOT - - struts2-freemarker-jakarta - jar - Struts 2 Jakarta EE Compatible Freemarker - - -UTF-8 -true -true - - - - - -org.eclipse.transformer -transformer-maven-plugin -0.5.0 -true - - -true - - - - -eclipse-transformer-freemarker-jar - - jar - - - -org.freemarker -freemarker -${freemarker.version} - - - - - - - - diff --git a/freemarker-jakarta/README.md b/jakarta/freemarker-jakarta/README.md similarity index 99% rename from freemarker-jakarta/README.md rename to jakarta/freemarker-jakarta/README.md index 8702074d9..b3bf61124 100644 --- a/freemarker-jakarta/README.md +++ b/jakarta/freemarker-jakarta/README.md @@ -1,3 +1,4 @@ # Struts 2 Freemarker Jakarta + This uses the eclipse transformer maven plugin to make the Freemarker dependency Jakarta EE 9+ compatible. diff --git a/jakarta/freemarker-jakarta/pom.xml b/jakarta/freemarker-jakarta/pom.xml new file mode 100644 index 0..32e7e2e09 --- /dev/null +++ b/jakarta/freemarker-jakarta/pom.xml @@ -0,0 +1,71 @@ + + +http://maven.apache.org/POM/4.0.0; + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd;> +4.0.0 + +org.apache.struts +struts2-parent +7.0.0-SNAPSHOT + +struts2-freemarker-jakarta +jar +Struts 2 Jakarta EE Compatible Freemarker + + +UTF-8 +true +true + + + + + +org.eclipse.transformer +transformer-maven-plugin +0.5.0 +true + + +true + + + + +eclipse-transformer-freemarker-jar + +jar + + + +org.freemarker +freemarker +${freemarker.version} + + + + + + + + diff --git a/jakarta/pom.xml b/jakarta/pom.xml new file mode 100644 index 0..a4987ae2b --- /dev/null +++ b/jakarta/pom.xml @@ -0,0 +1,48 @@ + + +http://maven.apache.org/POM/4.0.0; + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd;> +4.0.0 + +org.apache.struts +struts2-parent +7.0.0-SNAPSHOT + +struts2-jakarta +pom +Struts 2 Jakarta EE Compatible modules + + +UTF-8 +true
(struts) branch feature/jakarta-modules created (now c25e0e67a)
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a change to branch feature/jakarta-modules in repository https://gitbox.apache.org/repos/asf/struts.git at c25e0e67a Moves JakartaEE related modules into dedicate subdirectory This branch includes the following new commits: new c25e0e67a Moves JakartaEE related modules into dedicate subdirectory The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference.
(struts) 05/11: WW-5370 Simplifies error handling logic
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit e0f77c11b5d4f7643a9e4164ff065014d918c802 Author: Lukasz Lenart AuthorDate: Fri Dec 15 09:38:43 2023 +0100 WW-5370 Simplifies error handling logic --- .../struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java | 1 - 1 file changed, 1 deletion(-) 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 689968f29..80ef58097 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 @@ -48,7 +48,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; -import java.util.stream.Collectors; /** * Multi-part form data request adapter for Jakarta Commons FileUpload package that
(struts) 07/11: WW-5371 Migrates modern upload change to JakartaEE
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 31a582eee5a85bf7d9f5634006cda1859cedc1ef Author: Lukasz Lenart AuthorDate: Sat Dec 16 16:11:37 2023 +0100 WW-5371 Migrates modern upload change to JakartaEE --- .../multipart/AbstractMultiPartRequest.java| 2 + .../multipart/JakartaMultiPartRequest.java | 57 +- .../org/apache/struts2/struts-messages.properties | 50 --- .../ActionFileUploadInterceptorTest.java | 10 ++-- .../interceptor/FileUploadInterceptorTest.java | 10 ++-- 5 files changed, 94 insertions(+), 35 deletions(-) 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 index e46470ea2..256fea051 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java @@ -36,6 +36,8 @@ import java.util.Locale; */ public abstract class AbstractMultiPartRequest implements MultiPartRequest { +protected static final String STRUTS_MESSAGES_UPLOAD_ERROR_PARAMETER_TOO_LONG_KEY = "struts.messages.upload.error.parameter.too.long"; + private static final Logger LOG = LogManager.getLogger(AbstractMultiPartRequest.class); /** 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 09c068471..ca5afd9dd 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 @@ -18,23 +18,12 @@ */ package org.apache.struts2.dispatcher.multipart; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.UncheckedIOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - +import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.fileupload2.core.DiskFileItem; import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.core.FileItem; import org.apache.commons.fileupload2.core.FileUploadByteCountLimitException; +import org.apache.commons.fileupload2.core.FileUploadContentTypeException; import org.apache.commons.fileupload2.core.FileUploadException; import org.apache.commons.fileupload2.core.FileUploadFileCountLimitException; import org.apache.commons.fileupload2.core.FileUploadSizeException; @@ -45,7 +34,18 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.dispatcher.LocalizedMessage; -import jakarta.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Multipart form data request adapter for Jakarta Commons Fileupload package. @@ -77,13 +77,24 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest { LocalizedMessage errorMessage; if (e instanceof FileUploadByteCountLimitException) { FileUploadByteCountLimitException ex = (FileUploadByteCountLimitException) e; -errorMessage = buildErrorMessage(e, new Object[]{ex.getFileName(), ex.getPermitted(), ex.getActualSize()}); +errorMessage = buildErrorMessage(e, new Object[]{ +ex.getFieldName(), ex.getFileName(), ex.getPermitted(), ex.getActualSize() +}); } else if (e instanceof FileUploadFileCountLimitException) { FileUploadFileCountLimitException ex = (FileUploadFileCountLimitException) e; -errorMessage = buildErrorMessage(e, new Object[]{ex.getPermitted()}); +errorMessage = buildErrorMessage(e, new Object[]{ +ex.getPermitted(), ex.getActualSize() +}); } else if (e instanceof FileUploadSizeException) { FileUploadSizeException ex = (FileUploadSizeException) e; -errorMessage = buildErrorMessage(e, new Object[]{ex.getPermitted(), ex.getActualSize()}); +errorMessage = buildErrorMessage(e, new Object[]{ +
(struts) 09/11: WW-5339 Add option to block custom OGNL maps
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit b087006a41004fd97d7baa7ca5269df620a5a43c Author: Kusal Kithul-Godage AuthorDate: Tue Dec 5 13:06:33 2023 +1100 WW-5339 Add option to block custom OGNL maps --- .../com/opensymphony/xwork2/ognl/MyCustomMap.java | 28 ++ 1 file changed, 28 insertions(+) diff --git a/core/src/test/java/com/opensymphony/xwork2/ognl/MyCustomMap.java b/core/src/test/java/com/opensymphony/xwork2/ognl/MyCustomMap.java new file mode 100644 index 0..ef5683386 --- /dev/null +++ b/core/src/test/java/com/opensymphony/xwork2/ognl/MyCustomMap.java @@ -0,0 +1,28 @@ +/* + * 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 com.opensymphony.xwork2.ognl; + +import java.util.HashMap; + +public class MyCustomMap extends HashMap { +@Override +public V get(Object key) { +return (V) "System compromised"; +} +}
(struts) 02/11: WW-5371 Uses the new upload mechanism in Showcase app
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 86d4a520176b03aeac79f26ebe09b5f22ca91023 Author: Lukasz Lenart AuthorDate: Mon Dec 11 07:56:38 2023 +0100 WW-5371 Uses the new upload mechanism in Showcase app
(struts) 04/11: WW-5371 Document how to use the new file upload logic
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 2009e58924d798ae1671dab28362dd6eb8134e16 Author: Lukasz Lenart AuthorDate: Tue Dec 12 08:35:31 2023 +0100 WW-5371 Document how to use the new file upload logic --- core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java| 2 +- .../struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java b/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java index 635e0b2d4..92ec9c98b 100644 --- a/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java +++ b/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java @@ -33,7 +33,7 @@ public interface UploadedFilesAware { * Notifies action about the multiple uploaded files, when a single file is uploaded * the list will have just one element * - * @param uploadedFiles a list of {@link UploadedFile}. + * @param uploadedFiles a list of {@link UploadedFile}, cannot be null. It can be empty. */ void withUploadedFiles(List uploadedFiles); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java index 80ef58097..689968f29 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 @@ -48,6 +48,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; /** * Multi-part form data request adapter for Jakarta Commons FileUpload package that
(struts) 08/11: WW-5364 fixes automatically populated OGNL allowlist
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 83874c331804ef16f01387074a475c73803e37c2 Author: Lukasz Lenart AuthorDate: Sat Dec 16 16:12:46 2023 +0100 WW-5364 fixes automatically populated OGNL allowlist --- .../ConfigurationProviderOgnlAllowlistTest.java| 2 +- .../util/SecurityMemberAccessInServletsTest.java | 10 ++--- .../config/providers/xwork-test-allowlist-2.xml| 41 ++ .../config/providers/xwork-test-allowlist.xml | 48 ++ 4 files changed, 93 insertions(+), 8 deletions(-) diff --git a/core/src/test/java/com/opensymphony/xwork2/config/providers/ConfigurationProviderOgnlAllowlistTest.java b/core/src/test/java/com/opensymphony/xwork2/config/providers/ConfigurationProviderOgnlAllowlistTest.java index 4fa4aad8b..d2c8bc3fe 100644 --- a/core/src/test/java/com/opensymphony/xwork2/config/providers/ConfigurationProviderOgnlAllowlistTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/config/providers/ConfigurationProviderOgnlAllowlistTest.java @@ -40,7 +40,7 @@ public class ConfigurationProviderOgnlAllowlistTest extends XWorkJUnit4TestCase } @Test -public void allowlist() throws Exception { +public void allowList() throws Exception { loadConfigurationProviders(testXml1, testXml2); providerAllowlist = container.getInstance(ProviderAllowlist.class); diff --git a/core/src/test/java/org/apache/struts2/util/SecurityMemberAccessInServletsTest.java b/core/src/test/java/org/apache/struts2/util/SecurityMemberAccessInServletsTest.java index 5154a0b92..9d934c36e 100644 --- a/core/src/test/java/org/apache/struts2/util/SecurityMemberAccessInServletsTest.java +++ b/core/src/test/java/org/apache/struts2/util/SecurityMemberAccessInServletsTest.java @@ -19,10 +19,10 @@ package org.apache.struts2.util; import com.opensymphony.xwork2.ognl.SecurityMemberAccess; +import jakarta.servlet.jsp.tagext.TagSupport; import org.apache.struts2.StrutsInternalTestCase; import org.apache.struts2.views.jsp.ActionTag; -import jakarta.servlet.jsp.tagext.TagSupport; import java.lang.reflect.Member; import java.util.HashMap; import java.util.Map; @@ -40,9 +40,7 @@ public class SecurityMemberAccessInServletsTest extends StrutsInternalTestCase { // given SecurityMemberAccess sma = new SecurityMemberAccess(true); -Set excluded = new HashSet(); - excluded.add(Pattern.compile("^(?!jakarta\\.servlet\\..+)(jakarta\\..+)")); -sma.useExcludedPackageNamePatterns(excluded); + sma.useExcludedPackageNamePatterns("^(?!jakarta\\.servlet\\..+)(jakarta\\..+)"); String propertyName = "value"; Member member = TagSupport.class.getMethod("doStartTag"); @@ -58,9 +56,7 @@ public class SecurityMemberAccessInServletsTest extends StrutsInternalTestCase { // given SecurityMemberAccess sma = new SecurityMemberAccess(true); -Set excluded = new HashSet<>(); -excluded.add(Pattern.compile("^jakarta\\..+")); -sma.useExcludedPackageNamePatterns(excluded); +sma.useExcludedPackageNamePatterns("^jakarta\\..+"); String propertyName = "value"; Member member = TagSupport.class.getMethod("doStartTag"); diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowlist-2.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowlist-2.xml new file mode 100644 index 0..f5e9b184d --- /dev/null +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowlist-2.xml @@ -0,0 +1,41 @@ + + +https://struts.apache.org/dtds/struts-6.0.dtd;> + + + + + + + + + + + + + + + + + diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowlist.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowlist.xml new file mode 100644 index 0..1de061efd --- /dev/null +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowlist.xml @@ -0,0 +1,48 @@ + + +https://struts.apache.org/dtds/struts-6.0.dtd;> + + + + + + + + +fooDefault + + + + + + + + +18 +24 + + + + +
(struts) 11/11: Replaces empty file upload test with simple one
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 576c0646958de04891c0eca6db562478d57de337 Author: Lukasz Lenart AuthorDate: Sat Dec 16 16:48:51 2023 +0100 Replaces empty file upload test with simple one --- apps/showcase/pom.xml | 8 ++- .../apache/struts2/showcase/FileUploadTest.java| 25 -- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/apps/showcase/pom.xml b/apps/showcase/pom.xml index 2745be15e..d715790cd 100644 --- a/apps/showcase/pom.xml +++ b/apps/showcase/pom.xml @@ -129,6 +129,12 @@ test + + org.assertj + assertj-core + test + + org.htmlunit htmlunit @@ -231,7 +237,7 @@ 8090 -10 +10 ${basedir}/src/main/webapp/ diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileUploadTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileUploadTest.java index b5246ae2d..fdbc1c311 100644 --- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileUploadTest.java +++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileUploadTest.java @@ -19,35 +19,46 @@ package it.org.apache.struts2.showcase; import java.io.File; +import java.io.FileWriter; import org.htmlunit.WebClient; -import org.htmlunit.html.DomElement; import org.htmlunit.html.HtmlFileInput; import org.htmlunit.html.HtmlForm; import org.htmlunit.html.HtmlInput; import org.htmlunit.html.HtmlPage; import org.htmlunit.html.HtmlSubmitInput; -import org.junit.Assert; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + public class FileUploadTest { @Test -public void testEmptyFile() throws Exception { +public void testSimpleFileUpload() throws Exception { try (final WebClient webClient = new WebClient()) { final HtmlPage page = webClient.getPage(ParameterUtils.getBaseUrl() + "/fileupload/doUpload.action"); final HtmlForm form = page.getFormByName("doUpload"); HtmlInput captionInput = form.getInputByName("caption"); HtmlFileInput uploadInput = form.getInputByName("upload"); captionInput.type("some caption"); -File tempFile = File.createTempFile("testEmptyFile", ".tmp"); +File tempFile = File.createTempFile("testEmptyFile", ".txt"); tempFile.deleteOnExit(); + +try (FileWriter writer = new FileWriter(tempFile)) { +writer.append("Some strings"); +} + uploadInput.setValue(tempFile.getAbsolutePath()); final HtmlSubmitInput button = form.getInputByValue("Submit"); final HtmlPage resultPage = button.click(); -DomElement errorMessage = resultPage.getFirstByXPath("//span[@class='errorMessage']"); -Assert.assertNotNull(errorMessage); -Assert.assertEquals("File cannot be empty", errorMessage.getVisibleText()); + +String content = resultPage.getVisibleText(); +System.out.println(content); +assertThat(content).contains( +"ContentType: text/plain", +"Original FileName: " + tempFile.getName(), +"Caption:some caption" +); } }
(struts) 01/11: WW-5371 Implements action based file upload
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 94a4f559e9f7c386570dbcab2180d515ab2ccb59 Author: Lukasz Lenart AuthorDate: Mon Dec 11 07:37:38 2023 +0100 WW-5371 Implements action based file upload --- .../apache/struts2/action/UploadedFilesAware.java | 40 ++ 1 file changed, 40 insertions(+) diff --git a/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java b/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java new file mode 100644 index 0..635e0b2d4 --- /dev/null +++ b/core/src/main/java/org/apache/struts2/action/UploadedFilesAware.java @@ -0,0 +1,40 @@ +/* + * 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.action; + +import org.apache.struts2.dispatcher.multipart.UploadedFile; + +import java.util.List; + +/** + * Actions that want to be aware of all the uploaded file should implement this interface. + * The {@link org.apache.struts2.interceptor.ActionFileUploadInterceptor} will use the interface + * to notify action about the multiple uploaded files. + */ +public interface UploadedFilesAware { + +/** + * Notifies action about the multiple uploaded files, when a single file is uploaded + * the list will have just one element + * + * @param uploadedFiles a list of {@link UploadedFile}. + */ +void withUploadedFiles(List uploadedFiles); + +}
(struts) 10/11: Adds missing import
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 938f8eadb9a373d9b8f8798dc15eae90593a995f Author: Lukasz Lenart AuthorDate: Sat Dec 16 16:22:15 2023 +0100 Adds missing import --- plugins/junit/src/main/java/org/apache/struts2/junit/StrutsTestCase.java | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/junit/src/main/java/org/apache/struts2/junit/StrutsTestCase.java b/plugins/junit/src/main/java/org/apache/struts2/junit/StrutsTestCase.java index 2b40f26a6..6267a1d44 100644 --- a/plugins/junit/src/main/java/org/apache/struts2/junit/StrutsTestCase.java +++ b/plugins/junit/src/main/java/org/apache/struts2/junit/StrutsTestCase.java @@ -21,6 +21,7 @@ package org.apache.struts2.junit; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.ActionProxyFactory; +import com.opensymphony.xwork2.XWorkTestCase; import com.opensymphony.xwork2.config.Configuration; import org.apache.struts2.ServletActionContext; import org.apache.struts2.dispatcher.Dispatcher;
(struts) 06/11: WW-5371 Migrates modern upload change to JakartaEE
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 19642a5e6979471459b1bfa81de70762b7689152 Author: Lukasz Lenart AuthorDate: Sat Dec 16 13:58:52 2023 +0100 WW-5371 Migrates modern upload change to JakartaEE --- .../multipart/JakartaStreamMultiPartRequest.java | 13 +--- .../multipart/MultiPartRequestWrapper.java | 20 ++--- .../interceptor/ActionFileUploadInterceptor.java | 9 +-- .../ActionFileUploadInterceptorTest.java | 87 +++--- 4 files changed, 61 insertions(+), 68 deletions(-) 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 80ef58097..90ef7a047 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 @@ -18,17 +18,12 @@ */ package org.apache.struts2.dispatcher.multipart; +import org.apache.commons.fileupload2.core.DiskFileItem; +import org.apache.commons.fileupload2.core.DiskFileItemFactory; import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload; import org.apache.commons.fileupload2.core.FileUploadSizeException; import org.apache.commons.fileupload2.core.FileItemInputIterator; import org.apache.commons.fileupload2.core.FileItemInput; -import org.apache.commons.fileupload.FileItemIterator; -import org.apache.commons.fileupload.FileItemStream; -import org.apache.commons.fileupload.FileUploadBase; -import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException; -import org.apache.commons.fileupload.FileUploadException; -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.dispatcher.LocalizedMessage; @@ -223,7 +218,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { // Interface with Commons FileUpload API // Using the Streaming API -JakartaServletFileUpload servletFileUpload = new JakartaServletFileUpload(); +JakartaServletFileUpload servletFileUpload = new JakartaServletFileUpload<>(); if (maxSize != null) { servletFileUpload.setSizeMax(maxSize); } @@ -447,8 +442,6 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { */ public static class FileInfo implements Serializable { -private static final long serialVersionUID = 1083158552766906037L; - private final File file; private final String contentType; private final String originalName; 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 c2871d423..c4f7b9dc6 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 @@ -55,9 +55,9 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { protected static final Logger LOG = LogManager.getLogger(MultiPartRequestWrapper.class); -private Collection errors; -private MultiPartRequest multi; -private Locale defaultLocale = Locale.ENGLISH; +private final Collection errors; +private final MultiPartRequest multi; +private Locale defaultLocale; /** * Process file downloads and log any errors. @@ -84,7 +84,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { } catch (IOException e) { LOG.warn(e.getMessage(), e); addError(buildErrorMessage(e, new Object[] {e.getMessage()})); -} +} } public MultiPartRequestWrapper(MultiPartRequest multiPartRequest, HttpServletRequest request, String saveDir, LocaleProvider provider) { @@ -185,12 +185,12 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { /** * @see jakarta.servlet.http.HttpServletRequest#getParameterMap() */ -public Map getParameterMap() { +public Map getParameterMap() { Map map = new HashMap<>(); -Enumeration enumeration = getParameterNames(); +Enumeration enumeration = getParameterNames(); while (enumeration.hasMoreElements()) { -String name = (String) enumeration.nextElement(); +String name = enumeration.nextElement(); map.put(name, this.getParameterValues(name)); } @@ -200,7 +200,7 @@ public
(struts) branch fix/after-rebase created (now 576c06469)
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a change to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git at 576c06469 Replaces empty file upload test with simple one This branch includes the following new commits: new 94a4f559e WW-5371 Implements action based file upload new 86d4a5201 WW-5371 Uses the new upload mechanism in Showcase app new 7f4c37b86 WW-5371 Simplifies file upload logic and extracts constants new 2009e5892 WW-5371 Document how to use the new file upload logic new e0f77c11b WW-5370 Simplifies error handling logic new 19642a5e6 WW-5371 Migrates modern upload change to JakartaEE new 31a582eee WW-5371 Migrates modern upload change to JakartaEE new 83874c331 WW-5364 fixes automatically populated OGNL allowlist new b087006a4 WW-5339 Add option to block custom OGNL maps new 938f8eadb Adds missing import new 576c06469 Replaces empty file upload test with simple one The 11 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference.
(struts) 03/11: WW-5371 Simplifies file upload logic and extracts constants
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/after-rebase in repository https://gitbox.apache.org/repos/asf/struts.git commit 7f4c37b86a062bf5fa6d245222fc7c94734860ff Author: Lukasz Lenart AuthorDate: Mon Dec 11 08:55:20 2023 +0100 WW-5371 Simplifies file upload logic and extracts constants
(struts) branch release/struts-7-0-x updated (c1054ada2 -> 5e187ad12)
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a change to branch release/struts-7-0-x in repository https://gitbox.apache.org/repos/asf/struts.git discard c1054ada2 Merge pull request #778 from jdyer1/feature/WN-5141 omit ba45c36a9 WN-5141 omit 397c5491b Merge branch 'release/struts-7-0-x' into feature/WN-5141 omit cde3c4f12 Merge pull request #803 from apache/feature/update-htmlunit omit cbb6b91f8 Upgrades Htmlunit to version 3.6.0 omit 4e22a87b1 WN-5141 omit fde15d3b8 Merge branch 'release/struts-7-0-x' into feature/WN-5141 omit cd93e4bb9 Delete remaining deprecated plugins omit a1ff157cb Delete unused files missed in previous PR omit 886290d68 [WW-5141] Removes deprecated plugins (#798) omit 8e7dceb45 WW-5335 Reverts adding release/struts-7-0-x branch to scorecards analysis Only the main branch is supported by this action omit 0fa58eab8 WW-5335 Prepares for Java 17 & Struts 7.x omit 84ab6e966 Merge branch 'release/struts-7-0-x' into feature/WN-5141 omit bf2d85ebe [WW-5141] Removes deprecated plugins (#798) omit dd45eb9f6 Merge branch 'release/struts-7-0-x' into feature/WN-5141 omit 0321d2777 Merge pull request #797 from apache/merge-forward-master omit 219049773 Merge remote-tracking branch 'origin/master' into merge-forward-master omit 50f724e66 WN-5141 omit 3651f62f5 WN-5141 omit 646ad0f54 Revert "WN-5141" omit 0c5e9c34d WN-5141 omit 4f9febb54 WN-5141 omit 1080579db WN-5141 omit 5d19c7335 Revert "WN-5141" omit c66f2a2a9 WN-5141 omit bb4237155 Revert "WN-5141" omit 6b38a1e91 Revert "WN-5141" omit aea173c89 Revert "WN-5141" omit 9439e675c WN-5141 omit 334ed173c WN-5141 omit d6d0c5111 WN-5141 omit 7ae89828b Merge branch 'release/struts-7-0-x' into feature/WN-5141 omit e87806436 WN-5141 omit bde4eb37c WN-5141 omit 4aa8ccacf WN-5141 omit 0af312f0f WW-5335 Reverts adding release/struts-7-0-x branch to scorecards analysis Only the main branch is supported by this action omit 0845c6af6 WW-5335 Prepares for Java 17 & Struts 7.x omit ed04c009c Merge pull request #794 from apache/fix/WW-5335-scorecards omit 55a304bf0 WW-5335 Reverts adding release/struts-7-0-x branch to scorecards analysis Only the main branch is supported by this action omit 321cf4634 Merge pull request #785 from apache/feature/prepares-for-7 omit 5a34bc8e0 WN-5141 omit 89717a58c WN-5141 omit 6140e5d73 WN-5141 omit e3f463548 Revert "WN-5141" omit deebfc346 WN-5141 omit 818ca1f26 WN-5141 omit 107eeb199 WN-5141 omit bbc4d1dbb WN-5141 omit 7c81d066e Revert "WN-5141" omit 99a482d0f Revert "WN-5141" omit 010192a1e Revert "WN-5141" omit c990edad1 Revert "WN-5141" omit 62c63a676 Revert "WN-5141" omit 24519a97d Revert "WN-5141" omit 8cd3245cf WN-5141 omit 77df10b9a Merge branch 'master' into feature/WN-5141 omit f17124c23 WN-5141 omit 98665848c WN-5141 omit 1aa997474 Merge pull request #1 from tyme-dev/feature/WN-5141 omit dc13abaf8 WW-5335 Prepares for Java 17 & Struts 7.x omit 334c4090c conversion to fileupload2 omit 74cf21a4f Merge remote-tracking branch 'origin' into feature/WN-5141 omit 315eb49f0 WN-5141 omit f4bd1462e WN-5141 omit 3383ff552 WN-5141 omit 7f12f15d9 WN-5141 omit f2459c07c WN-5141 omit 908d06483 WN-5141 omit cb476c8a9 WN-5141 omit 46a0037a3 WN-5141 omit 4e8dbe0c9 WN-5141 omit f0df35f2e WN-5141 omit e4fa6e40e WN-5141 omit ea722cb35 WN-5141 omit 1c43fd1dc WN-5141 omit 8d465c66a WN-5141 omit 73b6a5831 IPAGE-5141 omit 27a2a4390 WN-5141 omit c322f7f4a WN-5141 omit 261cfe549 WN-5141 omit ba75db010 WN-5141 omit 861e8f98b WN-5141 omit eb16ed49a WN-5141 omit 9d873e506 Revert "WN-5141" omit 57032d9d1 WN-5141 omit 5d1aa6edc WN-5141 omit cdb0820e6 WN-5141 omit d5e766e43 WN-5141 omit 8d3880a67 WN-5141 omit 1c66e692c WN-5141 omit 1fc70af56 WN-5141 omit def5254a5 WN-5141 omit 3a4c1dd6f WN-5141 omit 625a81e59 Revert "WN-5141" omit b8b9f8aa3 WN-5141 omit 5ccaf2449 WN-5141 omit d132c4386 WN-5141 omit 6f609dea6 WN-5141 omit b10b49160 WN-5141 omit 20f8a0096 WN-5141 omit 33c1afad0 WN-5141 omit 0295f0728 WN-5141 omit e00457ee4 WN-5141 omit a900d7b7d WN-5141 omit 666e17845 WN-5141 omit 307829c5f WN-5141 omit af70ececd IPAGE-5141 omit 81a765cde WN-5141 omit c4cc465e1 WN-5141 omit 9ea5ffc5c Merge remote-tracking branch 'origin/master' into feature/WN-5141 omit 86c72097c WN-5141 add 79ffc86b6 WW-5343 Delete unused code and consolidate constructors add 082532995 WW-5343 Extract ConfigParseUtil add b0b80bac7 WW-5343 Extract deprecated methods as default interface methods add 9e556e9ed WW-5343 Deprecate unnecessary setter add 90344b381 WW-5343 Make
(struts) branch release/struts-7-0-x updated (cde3c4f12 -> c1054ada2)
This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a change to branch release/struts-7-0-x in repository https://gitbox.apache.org/repos/asf/struts.git from cde3c4f12 Merge pull request #803 from apache/feature/update-htmlunit new 86c72097c WN-5141 new 9ea5ffc5c Merge remote-tracking branch 'origin/master' into feature/WN-5141 new c4cc465e1 WN-5141 new 81a765cde WN-5141 new af70ececd IPAGE-5141 new 307829c5f WN-5141 new 666e17845 WN-5141 new a900d7b7d WN-5141 new e00457ee4 WN-5141 new 0295f0728 WN-5141 new 33c1afad0 WN-5141 new 20f8a0096 WN-5141 new b10b49160 WN-5141 new 6f609dea6 WN-5141 new d132c4386 WN-5141 new 5ccaf2449 WN-5141 new b8b9f8aa3 WN-5141 new 625a81e59 Revert "WN-5141" new 3a4c1dd6f WN-5141 new def5254a5 WN-5141 new 1fc70af56 WN-5141 new 1c66e692c WN-5141 new 8d3880a67 WN-5141 new d5e766e43 WN-5141 new cdb0820e6 WN-5141 new 5d1aa6edc WN-5141 new 57032d9d1 WN-5141 new 9d873e506 Revert "WN-5141" new eb16ed49a WN-5141 new 861e8f98b WN-5141 new ba75db010 WN-5141 new 261cfe549 WN-5141 new c322f7f4a WN-5141 new 27a2a4390 WN-5141 new 73b6a5831 IPAGE-5141 new 8d465c66a WN-5141 new 1c43fd1dc WN-5141 new ea722cb35 WN-5141 new e4fa6e40e WN-5141 new f0df35f2e WN-5141 new 4e8dbe0c9 WN-5141 new 46a0037a3 WN-5141 new cb476c8a9 WN-5141 new 908d06483 WN-5141 new f2459c07c WN-5141 new 7f12f15d9 WN-5141 new 3383ff552 WN-5141 new f4bd1462e WN-5141 new 315eb49f0 WN-5141 new 74cf21a4f Merge remote-tracking branch 'origin' into feature/WN-5141 new 334c4090c conversion to fileupload2 new 1aa997474 Merge pull request #1 from tyme-dev/feature/WN-5141 new 98665848c WN-5141 new f17124c23 WN-5141 new 77df10b9a Merge branch 'master' into feature/WN-5141 new 8cd3245cf WN-5141 new 24519a97d Revert "WN-5141" new 62c63a676 Revert "WN-5141" new c990edad1 Revert "WN-5141" new 010192a1e Revert "WN-5141" new 99a482d0f Revert "WN-5141" new 7c81d066e Revert "WN-5141" new bbc4d1dbb WN-5141 new 107eeb199 WN-5141 new 818ca1f26 WN-5141 new deebfc346 WN-5141 new e3f463548 Revert "WN-5141" new 6140e5d73 WN-5141 new 89717a58c WN-5141 new 5a34bc8e0 WN-5141 new 0845c6af6 WW-5335 Prepares for Java 17 & Struts 7.x new 0af312f0f WW-5335 Reverts adding release/struts-7-0-x branch to scorecards analysis Only the main branch is supported by this action new 4aa8ccacf WN-5141 new bde4eb37c WN-5141 new e87806436 WN-5141 new dc13abaf8 WW-5335 Prepares for Java 17 & Struts 7.x new 321cf4634 Merge pull request #785 from apache/feature/prepares-for-7 new 55a304bf0 WW-5335 Reverts adding release/struts-7-0-x branch to scorecards analysis Only the main branch is supported by this action new ed04c009c Merge pull request #794 from apache/fix/WW-5335-scorecards new 7ae89828b Merge branch 'release/struts-7-0-x' into feature/WN-5141 new d6d0c5111 WN-5141 new 334ed173c WN-5141 new 9439e675c WN-5141 new aea173c89 Revert "WN-5141" new 6b38a1e91 Revert "WN-5141" new bb4237155 Revert "WN-5141" new c66f2a2a9 WN-5141 new 5d19c7335 Revert "WN-5141" new 1080579db WN-5141 new 4f9febb54 WN-5141 new 0c5e9c34d WN-5141 new 646ad0f54 Revert "WN-5141" new 3651f62f5 WN-5141 new 50f724e66 WN-5141 new 219049773 Merge remote-tracking branch 'origin/master' into merge-forward-master new 0321d2777 Merge pull request #797 from apache/merge-forward-master new dd45eb9f6 Merge branch 'release/struts-7-0-x' into feature/WN-5141 new bf2d85ebe [WW-5141] Removes deprecated plugins (#798) new 84ab6e966 Merge branch 'release/struts-7-0-x' into feature/WN-5141 new fde15d3b8 Merge branch 'release/struts-7-0-x' into feature/WN-5141 new 4e22a87b1 WN-5141 new 397c5491b Merge branch 'release/struts-7-0-x' into feature/WN-5141 new ba45c36a9 WN-5141 new c1054ada2 Merge pull request #778 from jdyer1/feature/WN-5141 The 7019 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: apps/rest-showcase/pom.xml | 2 +- apps/showcase/pom.xml | 67 +++- .../apache/struts2/showcase/async/AsyncFilter.java | 14 +- .../struts2/showcase/chat/ChatSessionListener.java | 6 +- .../freemarker/CustomFreemarkerManager.java| 4 +- .../struts2/showcase/servlet/TestServlet.java | 8 +- .../struts2/showcase/source/ViewSourceAction.java | 2 +- .../validation/BeanValidationExampleAction.java|