This is an automated email from the ASF dual-hosted git repository. kusal pushed a commit to branch 7.0.x/merge-master-2024-07-20 in repository https://gitbox.apache.org/repos/asf/struts.git
commit b2061765325b21f6bea12316e0827c5bffd12d1c Merge: b8f7c4b2f 9195990b5 Author: Kusal Kithul-Godage <g...@kusal.io> AuthorDate: Sat Jul 20 13:31:20 2024 +1000 Merge remote-tracking branch 'origin/master' into 7.0.x/merge-master-2024-07-20 .../org/demo/rest/example/OrdersController.java | 24 ++--- .../java/org/demo/rest/example/OrdersService.java | 7 +- apps/showcase/pom.xml | 6 ++ .../struts2/showcase/DynamicTreeSelectAction.java | 3 +- .../showcase/LotsOfOptiontransferselectAction.java | 17 +++- .../showcase/LotsOfRichtexteditorAction.java | 7 +- .../apache/struts2/showcase/MoreSelectsAction.java | 10 +- .../showcase/ShowAjaxDynamicTreeAction.java | 2 + .../org/apache/struts2/showcase/UITagExample.java | 8 ++ .../showcase/action/AbstractCRUDAction.java | 101 +++++++++++---------- .../struts2/showcase/action/EmployeeAction.java | 5 +- .../struts2/showcase/action/ExampleAction.java | 10 +- .../struts2/showcase/action/JSPEvalAction.java | 8 +- .../struts2/showcase/action/SkillAction.java | 2 + .../showcase/actionchaining/ActionChain1.java | 3 + .../showcase/actionchaining/ActionChain2.java | 5 +- .../showcase/actionchaining/ActionChain3.java | 8 +- .../struts2/showcase/ajax/AjaxTestAction.java | 3 +- .../showcase/ajax/AutocompleterExampleAction.java | 5 +- .../showcase/ajax/Example4ShowPanelAction.java | 3 + .../struts2/showcase/ajax/Example5Action.java | 3 + .../struts2/showcase/ajax/tree/GetCategory.java | 3 + .../apache/struts2/showcase/ajax/tree/Toggle.java | 2 + .../struts2/showcase/async/ChatRoomAction.java | 13 +-- .../struts2/showcase/chat/ChatLoginAction.java | 5 +- .../struts2/showcase/chat/CrudRoomAction.java | 3 + .../struts2/showcase/chat/EnterRoomAction.java | 5 +- .../struts2/showcase/chat/ExitRoomAction.java | 5 +- .../chat/MessagesAvailableInRoomAction.java | 6 +- .../showcase/chat/SendMessageToRoomAction.java | 10 +- .../showcase/chat/UsersAvailableInRoomAction.java | 7 +- .../showcase/conversion/OperationsEnumAction.java | 3 +- .../MultipleFileUploadUsingArrayAction.java | 6 +- .../showcase/freemarker/StandardTagsAction.java | 6 +- .../showcase/hangman/GuessCharacterAction.java | 6 +- .../showcase/modelDriven/ModelDrivenAction.java | 4 + .../showcase/modelDriven/{ => model}/Gangster.java | 2 +- .../struts2/showcase/person/EditPersonAction.java | 6 +- .../struts2/showcase/person/ListPeopleAction.java | 3 +- .../struts2/showcase/person/NewPersonAction.java | 3 + .../struts2/showcase/source/ViewSourceAction.java | 12 ++- .../tag/nonui/actionPrefix/SubmitAction.java | 3 + .../tag/nonui/debugtag/DebugTagAction.java | 3 +- .../nonui/iteratortag/AppendIteratorTagDemo.java | 7 +- .../iteratortag/IteratorGeneratorTagDemo.java | 9 +- .../nonui/iteratortag/MergeIteratorTagDemo.java | 9 +- .../nonui/iteratortag/SubsetIteratorTagDemo.java | 13 ++- .../apache/struts2/showcase/token/TokenAction.java | 2 + .../AbstractValidationActionSupport.java | 1 + .../showcase/validation/AjaxFormSubmitAction.java | 31 ++++--- .../validation/BeanValidationExampleAction.java | 13 ++- .../NonFieldValidatorsExampleAction.java | 5 + .../struts2/showcase/validation/QuizAction.java | 4 + .../showcase/validation/SubmitApplication.java | 3 + .../validation/VisitorValidatorsExampleAction.java | 3 + .../apache/struts2/showcase/xslt/JVMAction.java | 2 +- .../src/main/resources/struts-fileupload.xml | 4 +- apps/showcase/src/main/resources/struts.xml | 9 ++ .../apache/struts2/showcase/ConventionTest.java | 88 ++++++++++++++++++ .../xwork2/ValidationAwareSupport.java | 15 ++- .../xwork2/config/ConfigurationUtil.java | 13 ++- .../providers/XmlDocConfigurationProvider.java | 17 ++-- .../xwork2/interceptor/annotations/Allowed.java | 2 + .../AnnotationParameterFilterInterceptor.java | 7 +- .../interceptor/annotations/BlockByDefault.java | 2 + .../xwork2/interceptor/annotations/Blocked.java | 2 + .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 11 +-- .../xwork2/ognl/SecurityMemberAccess.java | 6 +- .../struts2/dispatcher/DefaultActionSupport.java | 5 +- .../org/apache/struts2/ognl/ProviderAllowlist.java | 35 +++++-- .../com/opensymphony/xwork2/ActionSupportTest.java | 7 +- .../com/opensymphony/xwork2/ModelDrivenAction.java | 8 +- .../xwork2/ModelDrivenAnnotationAction.java | 8 +- .../opensymphony/xwork2/ProxyInvocationAction.java | 2 + .../java/com/opensymphony/xwork2/SimpleAction.java | 26 +++--- .../xwork2/SimpleAnnotationAction.java | 32 +++++-- .../opensymphony/xwork2/ValidationOrderAction.java | 36 ++++---- .../interceptor/ModelDrivenInterceptorTest.java | 8 +- .../ScopedModelDrivenInterceptorTest.java | 10 ++ .../annotations/AllowingByDefaultAction.java | 9 +- .../annotations/BlockingByDefaultAction.java | 9 +- .../xwork2/test/ModelDrivenAction2.java | 4 +- .../xwork2/test/ModelDrivenAnnotationAction2.java | 4 +- .../opensymphony/xwork2/test/SimpleAction2.java | 3 +- .../opensymphony/xwork2/test/SimpleAction3.java | 8 +- .../xwork2/test/SimpleAnnotationAction2.java | 2 + .../xwork2/test/SimpleAnnotationAction3.java | 8 +- .../ValidateAnnotatedMethodOnlyAction.java | 3 + .../java/com/opensymphony/xwork2/util/Bar.java | 5 +- .../util/StrutsLocalizedTextProviderTest.java | 10 +- .../validator/ActionValidatorManagerTest.java | 5 +- .../validator/AnnotationValidationAction.java | 1 + .../validator/AnnotationValidationExpAction.java | 1 + .../validator/StringLengthFieldValidatorTest.java | 7 ++ .../validator/VisitorValidatorModelAction.java | 3 + .../validator/VisitorValidatorTestAction.java | 7 +- .../apache/struts2/ExecutionCountTestAction.java | 3 +- .../org/apache/struts2/HttpMethodsTestAction.java | 2 + .../test/java/org/apache/struts2/TestAction.java | 1 + .../multipart/JakartaMultiPartRequestTest.java | 2 +- .../struts2/interceptor/CookieInterceptorTest.java | 4 + .../interceptor/FileUploadInterceptorTest.java | 2 + .../apache/struts2/ognl/ProviderAllowlistTest.java | 27 +++--- .../views/jsp/IteratorGeneratorTagTest.java | 13 +-- .../struts2/views/jsp/SortIteratorTagTest.java | 23 ++--- .../struts2/views/jsp/SubsetIteratorTagTest.java | 29 +++--- .../views/jsp/ui/DoubleValidationAction.java | 2 + .../struts2/views/jsp/ui/FieldErrorTagTest.java | 13 ++- .../struts2/views/jsp/ui/IntValidationAction.java | 2 + .../struts/beanvalidation/actions/FieldAction.java | 2 + .../beanvalidation/actions/FieldMatchAction.java | 5 + .../beanvalidation/actions/ModelDrivenAction.java | 5 +- .../actions/ValidateGroupAction.java | 7 +- .../struts2/config_browser/ActionNamesAction.java | 5 +- .../config_browser/ListValidatorsAction.java | 8 +- .../struts2/config_browser/ShowBeansAction.java | 2 + .../struts2/config_browser/ShowConfigAction.java | 25 +++-- .../config_browser/ShowValidatorAction.java | 24 +++-- .../convention/ClasspathConfigurationProvider.java | 11 ++- .../convention/ClasspathPackageProvider.java | 11 ++- .../PackageBasedActionConfigBuilder.java | 61 +++++++++---- .../src/test/java/actions/MessageAction.java | 2 +- .../PackageBasedActionConfigBuilderTest.java | 52 +++++++++-- plugins/jasperreports/pom.xml | 2 +- .../json/JSONValidationInterceptorTest.java | 5 + .../struts2/junit/session/SessionGetAction.java | 1 + .../struts2/junit/session/SessionSetAction.java | 1 + .../struts2/rest/RestActionInvocationTest.java | 5 +- .../com/opensymphony/xwork2/ModelDrivenAction.java | 8 +- pom.xml | 4 +- 130 files changed, 893 insertions(+), 376 deletions(-) diff --cc apps/showcase/pom.xml index de25a7d9f,5b5f0e590..6fdc010c2 --- a/apps/showcase/pom.xml +++ b/apps/showcase/pom.xml @@@ -129,17 -137,17 +129,23 @@@ <scope>test</scope> </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> - <groupId>net.sourceforge.htmlunit</groupId> - <artifactId>htmlunit</artifactId> - <scope>test</scope> - </dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.htmlunit</groupId> + <artifactId>htmlunit</artifactId> + <scope>test</scope> + </dependency> <!-- BeanValidation Example --> <dependency> diff --cc apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java index 06ceae842,bbd4bb54a..d1ba0a412 --- a/apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java +++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java @@@ -23,8 -23,9 +23,9 @@@ package org.apache.struts2.showcase.sou import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.ClassLoaderUtil; import org.apache.struts2.action.ServletContextAware; + import org.apache.struts2.interceptor.parameter.StrutsParameter; -import javax.servlet.ServletContext; +import jakarta.servlet.ServletContext; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; diff --cc core/src/main/java/org/apache/struts2/dispatcher/DefaultActionSupport.java index c6f07795e,0df1e3e90..555746cdb --- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultActionSupport.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultActionSupport.java @@@ -18,11 -18,11 +18,12 @@@ */ package org.apache.struts2.dispatcher; -import com.opensymphony.xwork2.ActionSupport; +import jakarta.servlet.http.HttpServletRequest; + import org.apache.struts2.ServletActionContext; + import org.apache.struts2.interceptor.parameter.StrutsParameter; -import javax.servlet.http.HttpServletRequest; +import com.opensymphony.xwork2.ActionSupport; /** * A simple action support class that sets properties to be able to serve diff --cc core/src/test/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequestTest.java index c5fe42b1c,5e8f31e4e..781b7fbd0 --- a/core/src/test/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequestTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequestTest.java @@@ -16,13 -16,14 +16,13 @@@ * specific language governing permissions and limitations * under the License. */ -package org.apache.struts2.components; +package org.apache.struts2.dispatcher.multipart; -import com.opensymphony.xwork2.Action; +public class JakartaMultiPartRequestTest extends AbstractMultiPartRequestTest { -public class PortletAction { - - public String execute() { - return Action.SUCCESS; + @Override + protected AbstractMultiPartRequest createMultipartRequest() { + return new JakartaMultiPartRequest(); } - } + } diff --cc core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java index 3cd0e57ab,8e6f6d19d..adb5496d1 --- a/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/CookieInterceptorTest.java @@@ -25,12 -25,12 +25,13 @@@ import com.opensymphony.xwork2.ActionSu import com.opensymphony.xwork2.mock.MockActionInvocation; import com.opensymphony.xwork2.security.DefaultAcceptedPatternsChecker; import com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker; +import jakarta.servlet.http.Cookie; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsInternalTestCase; +import org.apache.struts2.action.CookiesAware; + import org.apache.struts2.interceptor.parameter.StrutsParameter; import org.springframework.mock.web.MockHttpServletRequest; -import javax.servlet.http.Cookie; import java.util.Collections; import java.util.HashMap; import java.util.Map; diff --cc core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java index 8dbd173e5,cfb305770..872122066 --- a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java @@@ -618,10 -590,10 +618,11 @@@ public class FileUploadInterceptorTest jak.setMaxFileSize(String.valueOf(maxfilesize)); jak.setMaxFiles(String.valueOf(maxfiles)); jak.setMaxStringLength(String.valueOf(maxStringLength)); - return new MultiPartRequestWrapper(jak, req, tempDir.getAbsolutePath(), new DefaultLocaleProvider()); + jak.setDefaultEncoding(StandardCharsets.UTF_8.name()); + return new MultiPartRequestWrapper(jak, request, tempDir.getAbsolutePath(), new DefaultLocaleProvider()); } + @Override protected void setUp() throws Exception { super.setUp(); @@@ -629,11 -600,13 +630,12 @@@ interceptor = new FileUploadInterceptor(); container.inject(interceptor); tempDir = File.createTempFile("struts", "fileupload"); - tempDir.delete(); - tempDir.mkdirs(); + assertThat(tempDir.delete()).isTrue(); + assertThat(tempDir.mkdirs()).isTrue(); } + @Override protected void tearDown() throws Exception { - tempDir.delete(); interceptor.destroy(); super.tearDown(); } diff --cc core/src/test/java/org/apache/struts2/views/jsp/SortIteratorTagTest.java index 51b8b7a81,700e6e80a..ea37888a4 --- a/core/src/test/java/org/apache/struts2/views/jsp/SortIteratorTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/SortIteratorTagTest.java @@@ -18,17 -18,15 +18,16 @@@ */ package org.apache.struts2.views.jsp; - import java.util.ArrayList; - import java.util.Comparator; - import java.util.Iterator; - import java.util.List; - +import jakarta.servlet.jsp.JspException; + - import org.apache.struts2.views.jsp.iterator.SortIteratorTag; - import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; + import org.apache.struts2.views.jsp.iterator.SortIteratorTag; + -import javax.servlet.jsp.JspException; + import java.util.ArrayList; + import java.util.Comparator; + import java.util.Iterator; + import java.util.List; /** * Test case to test SortIteratorTag. diff --cc plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/ModelDrivenAction.java index c2fe152e1,9b32fa24b..296f42c62 --- a/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/ModelDrivenAction.java +++ b/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/ModelDrivenAction.java @@@ -21,8 -21,9 +21,9 @@@ package org.apache.struts.beanvalidatio import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import org.apache.struts.beanvalidation.models.Person; + import org.apache.struts2.interceptor.parameter.StrutsParameter; -import javax.validation.Valid; +import jakarta.validation.Valid; public class ModelDrivenAction extends ActionSupport implements ModelDriven<Person>, ModelDrivenActionInterface { diff --cc plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/ValidateGroupAction.java index be4693463,7d3540551..20aabf15b --- a/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/ValidateGroupAction.java +++ b/plugins/bean-validation/src/test/java/org/apache/struts/beanvalidation/actions/ValidateGroupAction.java @@@ -22,8 -22,9 +22,9 @@@ import com.opensymphony.xwork2.ActionSu import com.opensymphony.xwork2.ModelDriven; import org.apache.struts.beanvalidation.constraints.ValidationGroup; import org.apache.struts.beanvalidation.models.Person; + import org.apache.struts2.interceptor.parameter.StrutsParameter; -import javax.validation.Valid; +import jakarta.validation.Valid; public class ValidateGroupAction extends ActionSupport implements ModelDriven<Person> { diff --cc plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java index 4733abfad,1643ce7ae..5fef87760 --- a/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java +++ b/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java @@@ -72,12 -101,20 +101,20 @@@ import org.apache.struts2.ognl.Provider import org.apache.struts2.result.ServletDispatcherResult; import org.easymock.EasyMock; -import javax.servlet.ServletContext; +import jakarta.servlet.ServletContext; import java.net.MalformedURLException; - import java.util.*; + import java.util.ArrayList; + import java.util.Collections; + import java.util.HashMap; + import java.util.List; + import java.util.Map; + import java.util.Set; import static org.apache.struts2.convention.ReflectionTools.getAnnotation; - import static org.easymock.EasyMock.*; + import static org.easymock.EasyMock.checkOrder; + import static org.easymock.EasyMock.createStrictMock; + import static org.easymock.EasyMock.expect; + import static org.easymock.EasyMock.verify; /** * <p> diff --cc plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java index b567801c7,6f22a583e..0e64f2ef8 --- a/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java +++ b/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java @@@ -28,14 -28,11 +28,15 @@@ import com.opensymphony.xwork2.config.e import com.opensymphony.xwork2.config.entities.ResultConfig; import com.opensymphony.xwork2.mock.MockActionProxy; import com.opensymphony.xwork2.mock.MockInterceptor; +import com.opensymphony.xwork2.ognl.DefaultOgnlBeanInfoCacheFactory; +import com.opensymphony.xwork2.ognl.DefaultOgnlExpressionCacheFactory; import com.opensymphony.xwork2.ognl.OgnlUtil; import com.opensymphony.xwork2.util.XWorkTestCaseHelper; +import jakarta.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.apache.struts2.ServletActionContext; + import org.apache.struts2.interceptor.parameter.StrutsParameter; +import org.apache.struts2.ognl.StrutsOgnlGuard; import org.apache.struts2.result.HttpHeaderResult; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; diff --cc pom.xml index 6490ad4ea,cbca9161c..ab259db29 --- a/pom.xml +++ b/pom.xml @@@ -111,20 -110,16 +111,20 @@@ <!-- dependency versions in alphanumeric order --> <asm.version>9.7</asm.version> + <byte-buddy.version>1.14.11</byte-buddy.version> + <freemarker.version>2.3.33</freemarker.version> + <hibernate-validator.version>8.0.1.Final</hibernate-validator.version> - <jackson.version>2.17.1</jackson.version> + <jackson.version>2.17.2</jackson.version> <log4j2.version>2.23.1</log4j2.version> - <maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version> ++ <maven-surefire-plugin.version>3.3.1</maven-surefire-plugin.version> + <mockito.version>5.8.0</mockito.version> <ognl.version>3.3.5</ognl.version> + <sitemesh.version>2.5.0</sitemesh.version> <slf4j.version>2.0.13</slf4j.version> - <spring.platformVersion>5.3.37</spring.platformVersion> + <spring.platformVersion>6.0.13</spring.platformVersion> <tiles.version>3.0.8</tiles.version> <tiles-request.version>1.0.7</tiles-request.version> - <maven-surefire-plugin.version>3.3.1</maven-surefire-plugin.version> - <hibernate-validator.version>6.2.4.Final</hibernate-validator.version> - <freemarker.version>2.3.33</freemarker.version> + <velocity-tools.version>3.1</velocity-tools.version> <!-- Site generation --> <fluido-skin.version>1.9</fluido-skin.version>