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

lukaszlenart pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/struts.git


    from 39bef89be WW-5833 fix(rest): authorize nested container members at the 
depth ParametersInterceptor counts (#2091)
     new 267a5ae61 WW-4164 docs: add design for per-package and per-action 
extensions
     new 03ca9052c WW-4164 docs: add implementation plan for per-action 
extensions
     new 5f7833721 WW-4164 feat(core): add ActionExtensions list parsing
     new 0ced1f2d5 WW-4164 feat(core): parse extension attribute on package and 
action
     new 0997d17bf WW-4164 feat(core): reject disallowed extensions with 
ActionExtensionInterceptor
     new 4d061a464 WW-4164 feat(core): map declared extensions to their actions
     new 8be5c47e5 WW-4164 feat(core): build action URLs with the target 
action's extension
     new 2a4d1aa8d WW-4164 fix(core): skip extension resolution when nothing 
declares extensions
     new e824a9c17 WW-4164 test(core): pin extension behaviour with one 
declaring package
     new da18bd64f WW-4164 fix(core): ignore default-action-ref when claiming 
declared extensions
     new 06cd4669b WW-4164 fix(core): resolve query-string action names and 
declared empty extension
     new bc9b2eb59 WW-4164 chore(core): polish extension config validation and 
warnings
     new 669b8ca34 WW-4164 docs: correct action-prefix enforcement in design
     new e5e430a05 WW-4164 refactor(core): use an empty list for undeclared 
extensions
     new 0cb27d078 WW-4164 fix(core): parse probe names like the mapper and 
keep allowed extensionless links
     new 70e10cd20 WW-4164 fix(core): match the full requested name when 
slashes are allowed
     new 3f4d46a13 WW-4164 docs: describe the extensionless-request rule for 
generated URLs
     new 706045e61 WW-4164 fix(core): address Sonar findings on extension 
support
     new d3a0310c5 WW-4164 feat(core): let action mappers declare support for 
declared extensions

The 19 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:
 .../org/apache/struts2/components/Component.java   |  12 +
 .../struts2/components/ServletUrlRenderer.java     |   1 +
 .../struts2/config/RuntimeConfiguration.java       |  13 ++
 .../struts2/config/entities/ActionConfig.java      |  28 ++-
 .../struts2/config/entities/PackageConfig.java     |  37 +++
 .../struts2/config/impl/ActionConfigMatcher.java   |   1 +
 .../struts2/config/impl/DefaultConfiguration.java  |  75 ++++--
 .../providers/XmlDocConfigurationProvider.java     |  22 ++
 .../org/apache/struts2/dispatcher/Dispatcher.java  |  17 +-
 .../dispatcher/mapper/ActionExtensionResolver.java | 142 ++++++++++++
 .../dispatcher/mapper/ActionExtensions.java        |  78 +++++++
 .../struts2/dispatcher/mapper/ActionMapper.java    |  10 +
 .../dispatcher/mapper/CompositeActionMapper.java   |   5 +
 .../dispatcher/mapper/DefaultActionMapper.java     | 123 +++++++++-
 .../dispatcher/mapper/PrefixBasedActionMapper.java |   5 +
 .../interceptor/ActionExtensionInterceptor.java    |  95 ++++++++
 .../struts2/interceptor/ResultResolution.java      |  49 ++++
 .../httpmethod/HttpMethodInterceptor.java          |  16 +-
 .../org/apache/struts2/result/PostbackResult.java  |  15 +-
 .../result/ServletActionRedirectResult.java        |  17 +-
 core/src/main/resources/struts-7.5.dtd             |   2 +
 core/src/main/resources/struts-beans.xml           |   1 +
 core/src/main/resources/struts-default.xml         |   4 +
 ... => XmlConfigurationProviderExtensionTest.java} |  67 +++---
 .../dispatcher/ActionExtensionEndToEndTest.java    | 168 ++++++++++++++
 .../apache/struts2/dispatcher/DispatcherTest.java  |  45 ++++
 .../mapper/ActionExtensionResolverTest.java        | 176 ++++++++++++++
 .../dispatcher/mapper/ActionExtensionsTest.java    |  57 +++++
 .../mapper/CompositeActionMapperTest.java          |  22 ++
 .../dispatcher/mapper/DefaultActionMapperTest.java | 221 ++++++++++++++++++
 .../mapper/PrefixBasedActionMapperTest.java        |  61 +++++
 .../mapper/Restful2ActionMapperTest.java           |   4 +
 .../dispatcher/mapper/RestfulActionMapperTest.java |   4 +
 .../ActionExtensionInterceptorTest.java            | 130 +++++++++++
 .../apache/struts2/result/PostbackResultTest.java  |  33 +++
 .../result/ServletActionRedirectResultTest.java    |  33 +++
 .../org/apache/struts2/views/jsp/URLTagTest.java   |  18 ++
 .../apache/struts2/views/jsp/ui/FormTagTest.java   |  18 ++
 ...ethod-invalid.xml => struts-extension-bang.xml} |  13 +-
 ...lid.xml => struts-extension-default-action.xml} |   6 +-
 ...od-invalid.xml => struts-extension-invalid.xml} |   4 +-
 ...hod-invalid.xml => struts-extension-reload.xml} |   4 +-
 ...invalid.xml => struts-extension-whitespace.xml} |   4 +-
 ...ttp-method-invalid.xml => struts-extension.xml} |  20 +-
 .../struts-extension-one-package.xml}              |   9 +-
 .../2026-11-02-WW-4164-per-action-extensions.md    | 257 +++++++++++++++++++++
 ...6-11-01-WW-4164-per-action-extensions-design.md | 189 +++++++++++++++
 .../struts2/json/JSONActionRedirectResultTest.java |   4 +
 .../org/apache/struts2/rest/RestActionMapper.java  |   5 +
 .../apache/struts2/rest/RestActionMapperTest.java  |   4 +
 50 files changed, 2259 insertions(+), 85 deletions(-)
 create mode 100644 
core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionExtensionResolver.java
 create mode 100644 
core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionExtensions.java
 create mode 100644 
core/src/main/java/org/apache/struts2/interceptor/ActionExtensionInterceptor.java
 create mode 100644 
core/src/main/java/org/apache/struts2/interceptor/ResultResolution.java
 copy 
core/src/test/java/org/apache/struts2/config/providers/{XmlConfigurationProviderHttpMethodTest.java
 => XmlConfigurationProviderExtensionTest.java} (52%)
 create mode 100644 
core/src/test/java/org/apache/struts2/dispatcher/ActionExtensionEndToEndTest.java
 create mode 100644 
core/src/test/java/org/apache/struts2/dispatcher/mapper/ActionExtensionResolverTest.java
 create mode 100644 
core/src/test/java/org/apache/struts2/dispatcher/mapper/ActionExtensionsTest.java
 create mode 100644 
core/src/test/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapperTest.java
 create mode 100644 
core/src/test/java/org/apache/struts2/interceptor/ActionExtensionInterceptorTest.java
 copy 
core/src/test/resources/org/apache/struts2/config/providers/{struts-http-method-invalid.xml
 => struts-extension-bang.xml} (66%)
 copy 
core/src/test/resources/org/apache/struts2/config/providers/{struts-http-method-invalid.xml
 => struts-extension-default-action.xml} (81%)
 copy 
core/src/test/resources/org/apache/struts2/config/providers/{struts-http-method-invalid.xml
 => struts-extension-invalid.xml} (88%)
 copy 
core/src/test/resources/org/apache/struts2/config/providers/{struts-http-method-invalid.xml
 => struts-extension-reload.xml} (88%)
 copy 
core/src/test/resources/org/apache/struts2/config/providers/{struts-http-method-invalid.xml
 => struts-extension-whitespace.xml} (88%)
 copy 
core/src/test/resources/org/apache/struts2/config/providers/{struts-http-method-invalid.xml
 => struts-extension.xml} (56%)
 copy 
core/src/test/resources/org/apache/struts2/{config/providers/struts-http-method-invalid.xml
 => dispatcher/struts-extension-one-package.xml} (70%)
 create mode 100644 
docs/superpowers/plans/2026-11-02-WW-4164-per-action-extensions.md
 create mode 100644 
docs/superpowers/specs/2026-11-01-WW-4164-per-action-extensions-design.md

Reply via email to