From 14bb4d8a6d06c9515984cfe293d36e7fd1e90202 Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Sat, 10 Oct 2026 14:44:29 +0200 Subject: [PATCH] WW-3464 test(config): pin first-match-wins wildcard order When several XML wildcard action names match a request, the first one declared in the package wins. Cover both declaration orders with the ticket's `**` / `Project**` patterns so the behaviour cannot drift from what the documentation describes. Co-Authored-By: Claude Opus 5.5 --- .../struts2/config/ConfigurationTest.java | 18 ++++++++++++++++++ core/src/test/resources/xwork-sample.xml | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/core/src/test/java/org/apache/struts2/config/ConfigurationTest.java b/core/src/test/java/org/apache/struts2/config/ConfigurationTest.java index 4b949fe39b..c5f530a9b7 100644 --- a/core/src/test/java/org/apache/struts2/config/ConfigurationTest.java +++ b/core/src/test/java/org/apache/struts2/config/ConfigurationTest.java @@ -115,6 +115,24 @@ public void testWildcardNamespace() { assertEquals("Wrong parameter, " + p.get("1"), "dog", p.get("1")); } + public void testFirstMatchingWildcardWinsWhenCatchAllIsFirst() { + RuntimeConfiguration configuration = configurationManager.getConfiguration().getRuntimeConfiguration(); + + ActionConfig config = configuration.getActionConfig("/wildcard-order-catch-all-first", "ProjectStatus"); + + assertNotNull(config); + assertEquals("execute", config.getMethodName()); + } + + public void testFirstMatchingWildcardWinsWhenCatchAllIsLast() { + RuntimeConfiguration configuration = configurationManager.getConfiguration().getRuntimeConfiguration(); + + ActionConfig config = configuration.getActionConfig("/wildcard-order-catch-all-last", "ProjectStatus"); + + assertNotNull(config); + assertEquals("input", config.getMethodName()); + } + public void testGlobalResults() { try { ActionProxy proxy = actionProxyFactory.createActionProxy("", "Foo", null, null); diff --git a/core/src/test/resources/xwork-sample.xml b/core/src/test/resources/xwork-sample.xml index 7a513fc738..a49a8c24d8 100644 --- a/core/src/test/resources/xwork-sample.xml +++ b/core/src/test/resources/xwork-sample.xml @@ -362,5 +362,23 @@ + + + + + + + + + + + + + + + + + +