fix(core): move xwork-default.xml to test resources (#1513)

The Struts IDEA plugin incorrectly displayed xwork-default.xml as a
framework configuration file. This was misleading since the file is
only used in testing and is not loaded by the framework by default.

Changes:
- Move xwork-default.xml from core/src/main/resources to
  core/src/test/resources and rename to struts-tests-default.xml
- Copy struts-tests-default.xml to plugins/spring/src/test/resources
- Update all test file references to use the new filename
- Update Javadoc examples to use modern Struts terminology
  (xwork -> struts, xwork-default -> struts-default)

Closes [WW-5603](https://issues.apache.org/jira/browse/WW-5603)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Lukasz Lenart
2026-01-26 10:23:53 +01:00
committed by GitHub
parent 3679361bf3
commit 05003d237a
10 changed files with 99 additions and 27 deletions
@@ -84,8 +84,8 @@ import java.util.Map;
*
* <pre>
* <!-- START SNIPPET: example -->
* &lt;xwork&gt;
* &lt;package name="default" extends="xwork-default"&gt;
* &lt;struts&gt;
* &lt;package name="default" extends="struts-default"&gt;
* &lt;global-results&gt;
* &lt;result name="error" type="freemarker"&gt;error.ftl&lt;/result&gt;
* &lt;/global-results&gt;
@@ -102,7 +102,7 @@ import java.util.Map;
* &lt;result name="success" type="freemarker"&gt;test.ftl&lt;/result&gt;
* &lt;/action&gt;
* &lt;/package&gt;
* &lt;/xwork&gt;
* &lt;/struts&gt;
* <!-- END SNIPPET: example -->
* </pre>
*
@@ -113,8 +113,8 @@ import java.util.Map;
*
* <pre>
* <!-- START SNIPPET: example2 -->
* &lt;xwork&gt;
* &lt;package name="something" extends="xwork-default"&gt;
* &lt;struts&gt;
* &lt;package name="something" extends="struts-default"&gt;
* &lt;interceptors&gt;
* &lt;interceptor-stack name="exceptionmappingStack"&gt;
* &lt;interceptor-ref name="exception"&gt;
@@ -150,7 +150,7 @@ import java.util.Map;
* &lt;/action&gt;
*
* &lt;/package&gt;
* &lt;/xwork&gt;
* &lt;/struts&gt;
* <!-- END SNIPPET: example2 -->
* </pre>
*
@@ -257,7 +257,7 @@ public class ExceptionMappingInterceptor extends AbstractInterceptor {
}
Level level = Level.getLevel(logLevel);
if (level == null) {
if (level == null) {
throw new IllegalArgumentException("LogLevel [" + logLevel + "] is not supported");
}
logger.log(level, e.getMessage(), e);
@@ -36,7 +36,7 @@ import java.util.Map;
* a fake parameter map when a conversion error has occurred and the 'repopulateField'
* property is set to "true".
* </p>
*
* <p>
* <!-- START SNIPPET: javadoc -->
* <p>
* The capability of auto-repopulating the stack with a fake parameter map when
@@ -52,9 +52,9 @@ import java.util.Map;
* property set to true, it will, meaning the textfield will have 'one' as its value
* upon conversion error.
* </p>
*
* <p>
* <!-- END SNIPPET: javadoc -->
*
*
* <pre>
* <!-- START SNIPPET: exampleJspPage -->
@@ -75,11 +75,11 @@ import java.util.Map;
* <pre>
* <!-- START SNIPPET: exampleXwork -->
*
* &lt;!-- xwork.xml --&gt;
* &lt;xwork&gt;
* &lt;include file="xwork-default.xml" /&gt;
* &lt;!-- struts.xml --&gt;
* &lt;struts&gt;
* &lt;include file="struts-default.xml" /&gt;
* ....
* &lt;package name="myPackage" extends="xwork-default"&gt;
* &lt;package name="myPackage" extends="struts-default"&gt;
* ....
* &lt;action name="someAction" class="example.MyActionSupport.java"&gt;
* &lt;result name="input"&gt;myJspPage.jsp&lt;/result&gt;
@@ -88,7 +88,7 @@ import java.util.Map;
* ....
* &lt;/package&gt;
* ....
* &lt;/xwork&gt;
* &lt;/struts&gt;
*
* <!-- END SNIPPET:exampleXwork -->
* </pre>
@@ -67,7 +67,7 @@ public class ChainingInterceptorWithConfigTest extends XWorkTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("xwork-default.xml");
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("struts-tests-default.xml");
container.inject(provider);
this.objectFactory = container.getInstance(ObjectFactory.class);
loadConfigurationProviders(provider, new MockConfigurationProvider());
@@ -51,7 +51,7 @@ public class AnnotationWorkflowInterceptorTest extends XWorkTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("xwork-default.xml");
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("struts-tests-default.xml");
container.inject(provider);
loadConfigurationProviders(provider, new MockConfigurationProvider());
}
@@ -18,15 +18,15 @@
*/
package org.apache.struts2.util;
import org.apache.struts2.ObjectFactory;
import junit.framework.TestCase;
import org.apache.struts2.ObjectFactory;
import java.net.URL;
import java.util.Set;
public class ResolverUtilTest extends TestCase {
public void testSimpleFind() throws Exception {
public void testSimpleFind() {
ResolverUtil<ObjectFactory> resolver = new ResolverUtil<>();
resolver.findImplementations(ObjectFactory.class, "org");
Set<Class<? extends ObjectFactory>> impls = resolver.getClasses();
@@ -35,7 +35,7 @@ public class ResolverUtilTest extends TestCase {
assertTrue(impls.contains(DummyObjectFactory.class));
}
public void testMissingSomeFind() throws Exception {
public void testMissingSomeFind() {
ResolverUtil<ObjectFactory> resolver = new ResolverUtil<>();
resolver.findImplementations(ObjectFactory.class, "org.apache.struts2.util");
Set<Class<? extends ObjectFactory>> impls = resolver.getClasses();
@@ -44,15 +44,15 @@ public class ResolverUtilTest extends TestCase {
assertTrue(impls.contains(DummyObjectFactory.class));
}
public void testFindNamedResource() throws Exception {
ResolverUtil resolver = new ResolverUtil();
resolver.findNamedResource("xwork-default.xml", "");
public void testFindNamedResource() {
ResolverUtil resolver = new ResolverUtil<>();
resolver.findNamedResource("struts-tests-default.xml", "");
Set<URL> impls = resolver.getResources();
assertTrue(impls.size() > 0);
}
public void testFindNamedResourceInDir() throws Exception {
public void testFindNamedResourceInDir() {
ResolverUtil resolver = new ResolverUtil();
resolver.findNamedResource("SimpleAction.properties", "org/apache");
Set<URL> impls = resolver.getResources();
@@ -303,7 +303,7 @@ public class DoubleRangeFieldValidatorTest extends XWorkTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("xwork-default.xml");
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("struts-tests-default.xml");
container.inject(provider);
loadConfigurationProviders(provider, new MockConfigurationProvider());
val = new DoubleRangeFieldValidator();
@@ -120,7 +120,7 @@ public class ValidatorAnnotationTest extends XWorkTestCase {
protected void setUp() throws Exception {
super.setUp();
XmlConfigurationProvider provider1 = new StrutsXmlConfigurationProvider("xwork-default.xml");
XmlConfigurationProvider provider1 = new StrutsXmlConfigurationProvider("struts-tests-default.xml");
container.inject(provider1);
XmlConfigurationProvider provider2 = new StrutsXmlConfigurationProvider("xwork-test-validation.xml");
container.inject(provider2);
@@ -57,7 +57,7 @@ public class ActionAutowiringInterceptorTest extends XWorkTestCase {
}
public void testSetAutowireType() throws Exception {
XmlConfigurationProvider prov = new StrutsXmlConfigurationProvider("xwork-default.xml");
XmlConfigurationProvider prov = new StrutsXmlConfigurationProvider("struts-tests-default.xml");
container.inject(prov);
prov.setThrowExceptionOnDuplicateBeans(false);
XmlConfigurationProvider c = new StrutsXmlConfigurationProvider("org/apache/struts2/spring/xwork-autowire.xml");
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* 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.
*/
-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 6.0//EN"
"https://struts.apache.org/dtds/struts-6.0.dtd">
<struts>
<package name="xwork-default" abstract="true">
<result-types>
<result-type name="chain" class="org.apache.struts2.result.ActionChainResult"/>
</result-types>
<interceptors>
<interceptor name="logger" class="org.apache.struts2.interceptor.LoggingInterceptor"/>
<interceptor name="chain" class="org.apache.struts2.interceptor.ChainingInterceptor"/>
<interceptor name="staticParams" class="org.apache.struts2.interceptor.StaticParametersInterceptor"/>
<interceptor name="params" class="org.apache.struts2.interceptor.parameter.ParametersInterceptor"/>
<interceptor name="removeParams" class="org.apache.struts2.interceptor.ParameterRemoverInterceptor"/>
<interceptor name="modelDriven" class="org.apache.struts2.interceptor.ModelDrivenInterceptor"/>
<interceptor name="scopedModelDriven"
class="org.apache.struts2.interceptor.ScopedModelDrivenInterceptor"/>
<interceptor name="validation" class="org.apache.struts2.validator.ValidationInterceptor"/>
<interceptor name="workflow" class="org.apache.struts2.interceptor.DefaultWorkflowInterceptor"/>
<interceptor name="prepare" class="org.apache.struts2.interceptor.PrepareInterceptor"/>
<interceptor name="conversionError" class="org.apache.struts2.interceptor.ConversionErrorInterceptor"/>
<interceptor name="alias" class="org.apache.struts2.interceptor.AliasInterceptor"/>
<interceptor name="exception" class="org.apache.struts2.interceptor.ExceptionMappingInterceptor"/>
<interceptor name="i18n" class="org.apache.struts2.interceptor.I18nInterceptor"/>
<!--interceptor name="static-params" class="org.apache.struts2.interceptor.StaticParametersInterceptor"/>
<interceptor name="remove-params" class="org.apache.struts2.interceptor.ParameterRemoverInterceptor"/>
<interceptor name="model-driven" class="org.apache.struts2.interceptor.ModelDrivenInterceptor"/>
<interceptor name="scoped-model-driven"
class="org.apache.struts2.interceptor.ScopedModelDrivenInterceptor"/-->
<interceptor-stack name="emptyStack"/>
<interceptor-stack name="defaultStack">
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
</interceptor-stack>
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
</interceptors>
<default-class-ref class="org.apache.struts2.ActionSupport"/>
</package>
</struts>