You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2015/06/17 23:09:53 UTC

[53/57] struts git commit: Merges xwork packages into struts

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java b/core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java
new file mode 100644
index 0000000..0011ced
--- /dev/null
+++ b/core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java
@@ -0,0 +1,76 @@
+package com.opensymphony.xwork2.validator.validators;
+
+import com.opensymphony.xwork2.XWorkTestCase;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.validator.GenericValidatorContext;
+import com.opensymphony.xwork2.validator.ValidatorContext;
+
+public class ShortRangeFieldValidatorTest extends XWorkTestCase {
+
+    public void testPassValidation() throws Exception {
+        // given
+        ValidationAction action = prepareAction((short) 5);
+        ValidatorContext context = new GenericValidatorContext(action);
+        ShortRangeFieldValidator validator = prepareValidator(action, context);
+
+        // when
+        validator.validate(action);
+
+        // then
+        assertTrue(context.getFieldErrors().size() == 0);
+    }
+
+    public void testMinValidation() throws Exception {
+        // given
+        ValidationAction action = prepareAction((short) 1);
+        ValidatorContext context = new GenericValidatorContext(action);
+        ShortRangeFieldValidator validator = prepareValidator(action, context);
+
+        // when
+        validator.validate(action);
+
+        // then
+        assertTrue(context.getFieldErrors().size() == 1);
+        assertEquals("Max is 10, min is 2 but value is 1", context.getFieldErrors().get("shortRange").get(0));
+    }
+
+    public void testMaxValidation() throws Exception {
+        // given
+        ValidationAction action = prepareAction((short) 11);
+        ValidatorContext context = new GenericValidatorContext(action);
+        ShortRangeFieldValidator validator = prepareValidator(action, context);
+
+        // when
+        validator.validate(action);
+
+        // then
+        assertTrue(context.getFieldErrors().size() == 1);
+        assertEquals("Max is 10, min is 2 but value is 11", context.getFieldErrors().get("shortRange").get(0));
+    }
+
+    private ValidationAction prepareAction(short range) {
+        ValidationAction action = new ValidationAction();
+        action.setShortMaxValue((short) 10);
+        action.setShortMinValue((short) 2);
+        action.setShortRange(range);
+        return action;
+    }
+
+    private ShortRangeFieldValidator prepareValidator(ValidationAction action, ValidatorContext context) {
+        ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack();
+        valueStack.push(action);
+
+        ShortRangeFieldValidator validator = new ShortRangeFieldValidator();
+        validator.setValueStack(valueStack);
+
+        validator.setMaxExpression("${shortMaxValue}");
+        validator.setMinExpression("${shortMinValue}");
+        validator.setValidatorContext(context);
+        validator.setFieldName("shortRange");
+        validator.setDefaultMessage("Max is ${shortMaxValue}, min is ${shortMinValue} but value is ${shortRange}");
+
+        return validator;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidationAction.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidationAction.java b/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidationAction.java
new file mode 100644
index 0000000..268288f
--- /dev/null
+++ b/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidationAction.java
@@ -0,0 +1,136 @@
+package com.opensymphony.xwork2.validator.validators;
+
+import java.util.Date;
+
+public class ValidationAction {
+
+    private Integer intRange;
+    private Integer intMinValue;
+    private Integer intMaxValue;
+
+    private Short shortRange;
+    private Short shortMinValue;
+    private Short shortMaxValue;
+
+    private Long longRange;
+    private Long longMinValue;
+    private Long longMaxValue;
+
+    private Date dateRange;
+    private Date dateMinValue;
+    private Date dateMaxValue;
+    private String dateFormat;
+    private String stringValue;
+
+    public Integer getIntRange() {
+        return intRange;
+    }
+
+    public void setIntRange(Integer intRange) {
+        this.intRange = intRange;
+    }
+
+    public Integer getIntMinValue() {
+        return intMinValue;
+    }
+
+    public void setIntMinValue(Integer intMinValue) {
+        this.intMinValue = intMinValue;
+    }
+
+    public Integer getIntMaxValue() {
+        return intMaxValue;
+    }
+
+    public void setIntMaxValue(Integer intMaxValue) {
+        this.intMaxValue = intMaxValue;
+    }
+
+    public Short getShortRange() {
+        return shortRange;
+    }
+
+    public void setShortRange(Short shortRange) {
+        this.shortRange = shortRange;
+    }
+
+    public Short getShortMinValue() {
+        return shortMinValue;
+    }
+
+    public void setShortMinValue(Short shortMinValue) {
+        this.shortMinValue = shortMinValue;
+    }
+
+    public Short getShortMaxValue() {
+        return shortMaxValue;
+    }
+
+    public void setShortMaxValue(Short shortMaxValue) {
+        this.shortMaxValue = shortMaxValue;
+    }
+
+    public Long getLongRange() {
+        return longRange;
+    }
+
+    public void setLongRange(Long longRange) {
+        this.longRange = longRange;
+    }
+
+    public Long getLongMinValue() {
+        return longMinValue;
+    }
+
+    public void setLongMinValue(Long longMinValue) {
+        this.longMinValue = longMinValue;
+    }
+
+    public Long getLongMaxValue() {
+        return longMaxValue;
+    }
+
+    public void setLongMaxValue(Long longMaxValue) {
+        this.longMaxValue = longMaxValue;
+    }
+
+    public Date getDateRange() {
+        return dateRange;
+    }
+
+    public void setDateRange(Date dateRange) {
+        this.dateRange = dateRange;
+    }
+
+    public Date getDateMinValue() {
+        return dateMinValue;
+    }
+
+    public void setDateMinValue(Date dateMinValue) {
+        this.dateMinValue = dateMinValue;
+    }
+
+    public Date getDateMaxValue() {
+        return dateMaxValue;
+    }
+
+    public void setDateMaxValue(Date dateMaxValue) {
+        this.dateMaxValue = dateMaxValue;
+    }
+
+    public String getDateFormat() {
+        return dateFormat;
+    }
+
+    public void setDateFormat(String dateFormat) {
+        this.dateFormat = dateFormat;
+    }
+
+    public void setStringValue(String stringValue) {
+        this.stringValue = stringValue;
+    }
+
+    public String getStringValue() {
+        return stringValue;
+    }
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidatorSupportTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidatorSupportTest.java b/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidatorSupportTest.java
new file mode 100644
index 0000000..b2448bc
--- /dev/null
+++ b/core/src/test/java/com/opensymphony/xwork2/validator/validators/ValidatorSupportTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2002-2006,2009 The Apache Software Foundation.
+ * 
+ * Licensed 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.validator.validators;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.XWorkTestCase;
+import com.opensymphony.xwork2.ognl.OgnlValueStack;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.validator.ValidationException;
+
+/**
+ * @author tmjee
+ * @version $Date$ $Id$
+ */
+public class ValidatorSupportTest extends XWorkTestCase {
+
+	public void testConditionalParseExpression()  throws Exception {
+		ValueStack oldStack = ActionContext.getContext().getValueStack();
+		try {
+			OgnlValueStack stack = (OgnlValueStack) container.getInstance(ValueStackFactory.class).createValueStack();
+			stack.getContext().put(ActionContext.CONTAINER, container);
+			stack.getContext().put("something", "somevalue");
+			ActionContext.getContext().setValueStack(stack);
+			ValidatorSupport validator = new ValidatorSupport() {
+				public void validate(Object object) throws ValidationException {
+				}
+			};
+            validator.setValueStack(ActionContext.getContext().getValueStack());
+
+			String result1 = validator.parse("${#something}", String.class).toString();
+
+			assertEquals(result1, "somevalue");
+		}
+		finally {
+			ActionContext.getContext().setValueStack(oldStack);
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties b/core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties
new file mode 100644
index 0000000..1a4a51b
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/ActionSupportTest$MyActionSupport_da.properties
@@ -0,0 +1,10 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+hello=Hello World
+hello.0=Hello World {0}
+hello.1=Hello World. This is {0} speaking {1}
+
+format.number = {0,number,#0.0##}

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/AnnotatedTestBean.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/AnnotatedTestBean.properties b/core/src/test/resources/com/opensymphony/xwork2/AnnotatedTestBean.properties
new file mode 100644
index 0000000..577c8e1
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/AnnotatedTestBean.properties
@@ -0,0 +1 @@
+invalid.count=Count must be between ${min} and ${max}, current value is ${count}.

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/DefaultTextProviderTest_en_CA.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/DefaultTextProviderTest_en_CA.properties b/core/src/test/resources/com/opensymphony/xwork2/DefaultTextProviderTest_en_CA.properties
new file mode 100644
index 0000000..b01a30f
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/DefaultTextProviderTest_en_CA.properties
@@ -0,0 +1,8 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+hello=Hello World
+hello.0=Hello World {0}
+hello.1=Hello World. This is {0} speaking {1}

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction-validation.xml
new file mode 100644
index 0000000..ee6bdc0
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction-validation.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="count">
+        <field-validator type="required">
+            <message>You must enter a value for count.</message>
+        </field-validator>
+        <field-validator type="int">
+            <param name="min">1</param>
+            <param name="max">10</param>
+            <message>count must be between ${min} and ${max}, current value is ${count}.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction.properties b/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction.properties
new file mode 100644
index 0000000..cb15554
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAction.properties
@@ -0,0 +1 @@
+invalid.fieldvalue.birth=Invalid date for birth.

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAnnotationAction.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAnnotationAction.properties b/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAnnotationAction.properties
new file mode 100644
index 0000000..d92a833
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/ModelDrivenAnnotationAction.properties
@@ -0,0 +1,6 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+invalid.fieldvalue.birth=Invalid date for birth.

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-some-alias-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-some-alias-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-some-alias-validation.xml
new file mode 100644
index 0000000..e22d206
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-some-alias-validation.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="baz">
+        <field-validator type="required">
+            <message>You must enter a value for baz.</message>
+        </field-validator>
+        <field-validator type="int">
+            <param name="min">2</param>
+            <param name="max">4</param>
+            <message>baz out of range.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-subproperty-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-subproperty-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-subproperty-validation.xml
new file mode 100644
index 0000000..849b5ac
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-subproperty-validation.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="bean.name">
+        <field-validator type="required">
+            <message>You must enter a name for the bean.</message>
+        </field-validator>
+    </field>
+    <field name="bean.count">
+        <field-validator type="required">
+            <message>You must have a count for the bean.</message>
+        </field-validator>
+        <field-validator type="int">
+            <param name="min">0</param>
+            <param name="max">10</param>
+            <message>bean.count out of range.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validation.xml
new file mode 100644
index 0000000..e1e9e45
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validation.xml
@@ -0,0 +1,58 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="bar">
+        <field-validator type="required">
+            <message>You must enter a value for bar.</message>
+        </field-validator>
+        <field-validator type="int">
+            <param name="min">6</param>
+            <param name="max">10</param>
+            <message>bar must be between ${min} and ${max}, current value is ${bar}.</message>
+        </field-validator>
+    </field>
+    <field name="percentage">
+        <field-validator type="double">
+            <param name="minExclusive">0.1</param>
+            <param name="maxExclusive">10.1</param>
+            <message>percentage must be between ${minExclusive} and ${maxExclusive}, current value is ${percentage}.</message>
+        </field-validator>
+    </field>
+    <field name="date">
+        <field-validator type="date">
+            <param name="min">12/22/2002</param>
+            <param name="max">12/25/2002</param>
+            <message>The date must be between 12-22-2002 and 12-25-2002.</message>
+        </field-validator>
+    </field>
+    <field name="foo">
+        <field-validator type="int">
+            <param name="min">0</param>
+            <param name="max">100</param>
+            <message key="foo.range">Could not find foo.range!</message>
+        </field-validator>
+    </field>
+    <field name="baz">
+        <field-validator type="int">
+            <param name="min">0</param>
+            <message key="baz.range">Could not find baz.range!</message>
+        </field-validator>
+    </field>
+    <field name="longFoo">
+        <field-validator type="long">
+            <param name="min">0</param>
+            <param name="max">100</param>
+            <message key="foo.range">Could not find foo.range!</message>
+        </field-validator>
+    </field>
+    <field name="shortFoo">
+        <field-validator type="short">
+            <param name="min">0</param>
+            <param name="max">100</param>
+            <message key="foo.range">Could not find foo.range!</message>
+        </field-validator>
+    </field>
+    <validator type="expression">
+        <param name="expression">foo > bar</param>
+        <message>Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.</message>
+    </validator>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml
new file mode 100644
index 0000000..e22d206
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="baz">
+        <field-validator type="required">
+            <message>You must enter a value for baz.</message>
+        </field-validator>
+        <field-validator type="int">
+            <param name="min">2</param>
+            <param name="max">4</param>
+            <message>baz out of range.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction.properties b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction.properties
new file mode 100644
index 0000000..f99b6e7
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction.properties
@@ -0,0 +1,3 @@
+foo.range=Foo Range Message
+baz.range=${getText(fieldName)} must be greater than ${min}
+baz=Baz Field

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_de.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_de.properties b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_de.properties
new file mode 100644
index 0000000..62f0bfc
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_de.properties
@@ -0,0 +1 @@
+foo.range=I don''t know German

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_en.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_en.properties b/core/src/test/resources/com/opensymphony/xwork2/SimpleAction_en.properties
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction.properties b/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction.properties
new file mode 100644
index 0000000..16819aa
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction.properties
@@ -0,0 +1,8 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+foo.range=Foo Range Message
+baz.range=${getText(fieldName)} must be greater than ${min}
+baz=Baz Field

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_de.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_de.properties b/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_de.properties
new file mode 100644
index 0000000..773a7fc
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_de.properties
@@ -0,0 +1,6 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+foo.range=I don''t know German

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_en.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_en.properties b/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_en.properties
new file mode 100644
index 0000000..7d0bcf9
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/SimpleAnnotationAction_en.properties
@@ -0,0 +1,5 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-anotherContext-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-anotherContext-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-anotherContext-validation.xml
new file mode 100644
index 0000000..b1eee9e
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-anotherContext-validation.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="count">
+        <field-validator type="int">
+            <param name="min">1</param>
+            <param name="max">100</param>
+            <message>Count must be between ${min} and ${max}, current value is ${count}.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-badtest-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-badtest-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-badtest-validation.xml
new file mode 100644
index 0000000..2d2aa4e
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-badtest-validation.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="name">
+        <field-validator type="requiredstring" foo="bar">
+            <message>You must enter a name.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-beanMessageBundle-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-beanMessageBundle-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-beanMessageBundle-validation.xml
new file mode 100644
index 0000000..4e0a3df
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-beanMessageBundle-validation.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
+<validators>
+    <field name="count">
+        <field-validator type="int" short-circuit="true">
+            <param name="min">1</param>
+            <param name="max">100</param>
+            <message key="invalid.count">Invalid count value, must be between ${min} and ${max}, current value ${count}!</message>
+        </field-validator>
+        <field-validator type="int">
+            <param name="min">20</param>
+            <param name="max">80</param>
+            <message key="invalid.count.bad">Smaller Invalid Count: ${count}</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-expressionValidation-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-expressionValidation-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-expressionValidation-validation.xml
new file mode 100644
index 0000000..5537544
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-expressionValidation-validation.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="name">
+        <field-validator type="fieldexpression">
+            <param name="expression">name.length() > 5</param>
+            <message>Name must be greater than 5 characters, it is currently '${name}'</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-validation.xml
new file mode 100644
index 0000000..7a3efc5
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-validation.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="name">
+        <field-validator type="requiredstring">
+            <message>You must enter a name.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorChildValidation-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorChildValidation-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorChildValidation-validation.xml
new file mode 100644
index 0000000..cdae277
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorChildValidation-validation.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="birth">
+        <field-validator type="date">
+            <param name="min">01/01/1970</param>
+            <message>You must have been born after 1970.</message>
+        </field-validator>
+    </field>
+    <field name="child">
+        <field-validator type="visitor">
+            <message>child bean: </message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorValidation-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorValidation-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorValidation-validation.xml
new file mode 100644
index 0000000..fabf794
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean-visitorValidation-validation.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+    <field name="birth">
+        <field-validator type="date">
+            <param name="min">01/01/1970</param>
+            <message>You must have been born after 1970.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestBean.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestBean.properties b/core/src/test/resources/com/opensymphony/xwork2/TestBean.properties
new file mode 100644
index 0000000..577c8e1
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestBean.properties
@@ -0,0 +1 @@
+invalid.count=Count must be between ${min} and ${max}, current value is ${count}.

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TestChildBean-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TestChildBean-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/TestChildBean-validation.xml
new file mode 100644
index 0000000..9329801
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TestChildBean-validation.xml
@@ -0,0 +1,23 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
+<validators>
+    <field name="name">
+        <field-validator type="requiredstring" short-circuit="true">
+            <message>You must enter a name.</message>
+        </field-validator>
+    <field-validator type="fieldexpression">
+        <param name="expression">name == 'test'</param>
+        <message>Name is invalid</message>
+    </field-validator> 
+    </field>
+    <field name="birth">
+        <field-validator type="date">
+            <param name="min">01/01/1970</param>
+            <message>You must have been born after 1970.</message>
+        </field-validator>
+    </field>
+    <field name="count">
+        <field-validator type="conversion">
+            <message>Count must be an integer.</message>
+        </field-validator>
+    </field>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/TextProviderSupportTest_en.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/TextProviderSupportTest_en.properties b/core/src/test/resources/com/opensymphony/xwork2/TextProviderSupportTest_en.properties
new file mode 100644
index 0000000..a44802b
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/TextProviderSupportTest_en.properties
@@ -0,0 +1,12 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+hello=Hello World
+hello.0=Hello World {0}
+hello.1=Hello World. This is {0} speaking {1}
+#wrong (unescaped ', {, \): symbols1="=!@#$%^&*(){qwe}<>?:|}{[]\';/.,<>`~'
+symbols1="=!@#$%^&*()'{'qwe}<>?:|}'{'[]\\'';/.,<>`~''
+#wrong: symbols1="=!@#$%^&*()<>?:|[]\';/.,<>`~'
+symbols2="=!@#$%^&*()<>?:|[]\\'';/.,<>`~''

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/ValidationOrderAction-validation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/ValidationOrderAction-validation.xml b/core/src/test/resources/com/opensymphony/xwork2/ValidationOrderAction-validation.xml
new file mode 100644
index 0000000..481aa34
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/ValidationOrderAction-validation.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE validators PUBLIC 
+  		"-//Apache Struts//XWork Validator 1.0.2//EN"
+  		"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
+
+<validators>
+	<field name="username">
+		<field-validator type="requiredstring">
+			<message>username required</message>
+		</field-validator>
+	</field>
+
+	<field name="password">
+		<field-validator type="requiredstring">
+			<message>password required</message>
+		</field-validator>
+	</field>
+
+	<field name="confirmPassword">
+		<field-validator type="requiredstring">
+			<message>confirm password required</message>
+		</field-validator>
+		<field-validator type="fieldexpression">
+			<param name="expression">
+                (confirmPassword.equals(password))
+			</param>
+			<message>confirmed password must match password</message>
+		</field-validator>
+	</field>
+	
+	<field name="firstName">
+		<field-validator type="requiredstring">
+			<message>first name required</message>
+		</field-validator>
+	</field>
+	
+	<field name="lastName">
+		<field-validator type="requiredstring">
+			<message>last name required</message>
+		</field-validator>
+	</field>
+
+	<field name="city">
+		<field-validator type="requiredstring">
+			<message>city is required</message>
+		</field-validator>
+	</field>
+	
+	<field name="province">
+		<field-validator type="requiredstring">
+			<message>province is required</message>
+		</field-validator>
+	</field>
+	
+	<field name="country">
+		<field-validator type="requiredstring">
+			<message>country is required</message>
+		</field-validator>
+	</field>
+	
+	<field name="postalCode">
+		<field-validator type="requiredstring">
+			<message>postal code is required</message>
+		</field-validator>
+	</field>
+	
+	<field name="email">
+		<field-validator type="requiredstring">
+			<message>email is required</message>
+		</field-validator>
+		<field-validator type="email">
+			<message>email is invalid</message>
+		</field-validator>
+	</field>
+
+	<field name="website">
+		<field-validator type="requiredstring">
+			<message>website is required</message>
+		</field-validator>
+	</field>
+	
+	<field name="passwordHint">
+		<field-validator type="requiredstring">
+			<message>password hint is required</message>
+		</field-validator>
+	</field>
+</validators>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder1/xwork-test-load-order.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder1/xwork-test-load-order.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder1/xwork-test-load-order.xml
new file mode 100644
index 0000000..c62a21c
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder1/xwork-test-load-order.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.1.3//EN"
+    "http://struts.apache.org/dtds/xwork-2.1.3.dtd"
+ >
+
+<xwork order="2">
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder2/xwork-test-load-order.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder2/xwork-test-load-order.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder2/xwork-test-load-order.xml
new file mode 100644
index 0000000..4e59b8f
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder2/xwork-test-load-order.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.1.3//EN"
+    "http://struts.apache.org/dtds/xwork-2.1.3.dtd"
+ >
+
+<xwork order="3">
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder3/xwork-test-load-order.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder3/xwork-test-load-order.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder3/xwork-test-load-order.xml
new file mode 100644
index 0000000..c657218
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/loadorder3/xwork-test-load-order.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.1.3//EN"
+    "http://struts.apache.org/dtds/xwork-2.1.3.dtd"
+ >
+
+<xwork order="1">
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork- test.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork- test.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork- test.xml
new file mode 100644
index 0000000..a8f635e
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork- test.xml	
@@ -0,0 +1,81 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true"/>
+            <result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult"/>
+        </result-types>
+
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+            <interceptor name="logging" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>
+            <interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
+                <param name="foo">fooDefault</param>
+            </interceptor>
+
+            <interceptor-stack name="defaultStack">
+                <interceptor-ref name="timer"/>
+            </interceptor-stack>
+        </interceptors>
+
+        <global-results>
+            <result name="login"> <!-- should be chain type since it is the default -->
+                <param name="actionName">login</param>
+            </result>
+        </global-results>
+
+        <action name="Bar" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">17</param>
+            <param name="bar">23</param>
+            <param name="testXW412">foo.jspa?fooID=${fooID}&amp;something=bar</param>
+            <param name="testXW412Again">
+            		something
+            </param>
+            <param name="testForXW171"></param>
+        </action>
+
+        <action name="Foo" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">18</param>
+            <param name="bar">24</param>
+            <result name="success" type="mock" />
+            <interceptor-ref name="defaultStack"/>
+        </action>
+
+        <action name="WildCard" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="*" type="mock" />
+            <interceptor-ref name="defaultStack"/>
+        </action>
+
+        <action name="FooBar" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">18</param>
+            <param name="bar">24</param>
+            <result name="success" type="mock" />
+            <interceptor-ref name="defaultStack"/>
+            <exception-mapping name="runtime" exception="java.lang.RuntimeException" result="exception"/>
+        </action>
+
+        <action name="TestInterceptorParam" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="test">
+                <param name="expectedFoo">expectedFooValue</param>
+            </interceptor-ref>
+        </action>
+
+        <action name="TestInterceptorParamOverride" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="test">
+                <param name="foo">foo123</param>
+                <param name="expectedFoo">expectedFooValue</param>
+            </interceptor-ref>
+        </action>
+
+        <action name="BarWithoutClassName">
+            <param name="foo">17</param>
+            <param name="bar">23</param>
+        </action>
+
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package-2.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package-2.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package-2.xml
new file mode 100644
index 0000000..39461ec
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package-2.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+    <package name="namespace5" extends="namespace4" namespace="/namespace5">
+        <action name="action5" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+        </action>
+    </package>
+
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package.xml
new file mode 100644
index 0000000..8e55e8e
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-after-package.xml
@@ -0,0 +1,20 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+    <package name="namespace4" extends="namespace1" namespace="/namespace4">
+        <interceptors>
+            <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>
+        </interceptors>
+
+        <action name="action4" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+        </action>
+    </package>
+
+
+    <include file="com/opensymphony/xwork2/config/providers/xwork-include-after-package-2.xml" />
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package-2.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package-2.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package-2.xml
new file mode 100644
index 0000000..ac30cc2
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package-2.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+    <package name="namespace2" extends="namespace1" namespace="/namespace2">
+        <action name="action2" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+        </action>
+    </package>
+
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package.xml
new file mode 100644
index 0000000..99bb3b4
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-before-package.xml
@@ -0,0 +1,22 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+
+    <package name="namespace1" extends="default" namespace="/namespace1">
+        <interceptors>
+            <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>
+        </interceptors>
+
+        <action name="action1" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+        </action>
+    </package>
+
+    <include file="com/opensymphony/xwork2/config/providers/xwork-include-before-package-2.xml" />
+
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-parent.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-parent.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-parent.xml
new file mode 100644
index 0000000..e7f9162
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-include-parent.xml
@@ -0,0 +1,22 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-default.xml" />
+
+    <package name="default">
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true"/>
+        </result-types>
+        <interceptors>
+            <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
+        </interceptors>
+    </package>
+
+    <include file="com/opensymphony/xwork2/config/providers/xwork-include-before-package.xml" />
+
+
+    <include file="com/opensymphony/xwork2/config/providers/xwork-include-after-package.xml" />
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-action-invalid.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-action-invalid.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-action-invalid.xml
new file mode 100644
index 0000000..dca52f8
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-action-invalid.xml
@@ -0,0 +1,23 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+
+        <action name="Foo" class="com.opensymphony.xwork2.config.providers.PrivateConstructorAction">
+            <param name="foo">13</param>
+        </action>
+
+        <action name="Bar" class="com.opensymphony.xwork2.config.providers.NoNoArgsConstructorAction">
+            <param name="bar">17</param>
+        </action>
+
+        <action name="FooBar" class="com.opensymphony.xwork2.config.providers.IDoNotExistAction">
+            <param name="foobar">17</param>
+        </action>
+
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions-packagedefaultclassref.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions-packagedefaultclassref.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions-packagedefaultclassref.xml
new file mode 100644
index 0000000..f0cc446
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions-packagedefaultclassref.xml
@@ -0,0 +1,41 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+    <package name="default">
+
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true"/>
+            <result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult"/>
+        </result-types>
+
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+            <interceptor name="logging" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>
+            <interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
+                <param name="foo">fooDefault</param>
+            </interceptor>
+
+            <interceptor-stack name="defaultStack">
+                <interceptor-ref name="timer"/>
+            </interceptor-stack>
+        </interceptors>
+
+		<default-class-ref class="com.opensymphony.xwork2.UserSpecifiedDefaultAction" />
+
+        <global-results>
+            <result name="login"> <!-- should be chain type since it is the default -->
+                <param name="actionName">login</param>
+            </result>
+        </global-results>
+
+		<!--  No class spcified for action. This should use the default-class-ref -->
+        <action name="Bar">
+            <param name="foo">17</param>
+            <param name="bar">23</param>
+            <param name="testForXW171"></param>
+        </action>
+    </package>
+</xwork>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions.xml
new file mode 100644
index 0000000..a8f635e
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-actions.xml
@@ -0,0 +1,81 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true"/>
+            <result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult"/>
+        </result-types>
+
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+            <interceptor name="logging" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>
+            <interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
+                <param name="foo">fooDefault</param>
+            </interceptor>
+
+            <interceptor-stack name="defaultStack">
+                <interceptor-ref name="timer"/>
+            </interceptor-stack>
+        </interceptors>
+
+        <global-results>
+            <result name="login"> <!-- should be chain type since it is the default -->
+                <param name="actionName">login</param>
+            </result>
+        </global-results>
+
+        <action name="Bar" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">17</param>
+            <param name="bar">23</param>
+            <param name="testXW412">foo.jspa?fooID=${fooID}&amp;something=bar</param>
+            <param name="testXW412Again">
+            		something
+            </param>
+            <param name="testForXW171"></param>
+        </action>
+
+        <action name="Foo" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">18</param>
+            <param name="bar">24</param>
+            <result name="success" type="mock" />
+            <interceptor-ref name="defaultStack"/>
+        </action>
+
+        <action name="WildCard" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="*" type="mock" />
+            <interceptor-ref name="defaultStack"/>
+        </action>
+
+        <action name="FooBar" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">18</param>
+            <param name="bar">24</param>
+            <result name="success" type="mock" />
+            <interceptor-ref name="defaultStack"/>
+            <exception-mapping name="runtime" exception="java.lang.RuntimeException" result="exception"/>
+        </action>
+
+        <action name="TestInterceptorParam" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="test">
+                <param name="expectedFoo">expectedFooValue</param>
+            </interceptor-ref>
+        </action>
+
+        <action name="TestInterceptorParamOverride" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="test">
+                <param name="foo">foo123</param>
+                <param name="expectedFoo">expectedFooValue</param>
+            </interceptor-ref>
+        </action>
+
+        <action name="BarWithoutClassName">
+            <param name="foo">17</param>
+            <param name="bar">23</param>
+        </action>
+
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowed-methods.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowed-methods.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowed-methods.xml
new file mode 100644
index 0000000..7851408
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowed-methods.xml
@@ -0,0 +1,48 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.3//EN"
+    "http://struts.apache.org/dtds/xwork-2.3.dtd"
+ >
+
+<xwork>
+    <package name="default">
+        <action name="Default">
+        </action>
+
+        <action name="Boring">
+            <allowed-methods> </allowed-methods>
+        </action>
+
+        <action name="Foo">
+            <allowed-methods>foo</allowed-methods>
+        </action>
+
+        <action name="Bar">
+            <allowed-methods>foo,bar</allowed-methods>
+        </action>
+
+        <action name="Baz" method="baz">
+            <allowed-methods>foo,bar</allowed-methods>
+        </action>
+    </package>
+
+    <package name="strict" strict-method-invocation="true">
+        <action name="Default">
+        </action>
+
+        <action name="Boring">
+            <allowed-methods></allowed-methods>
+        </action>
+
+        <action name="Foo">
+            <allowed-methods>foo</allowed-methods>
+        </action>
+
+        <action name="Bar">
+            <allowed-methods>foo,bar</allowed-methods>
+        </action>
+
+        <action name="Baz" method="baz">
+            <allowed-methods>foo,bar</allowed-methods>
+        </action>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-bad-inheritance.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-bad-inheritance.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-bad-inheritance.xml
new file mode 100644
index 0000000..591aa20
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-bad-inheritance.xml
@@ -0,0 +1,17 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default" />
+
+    <package name="badPackage" extends="nonexistentPackage"/>
+
+    <package name="circularPackage" extends="circularPackage"/>
+
+    <package name="anotherCircularPackage" extends="anotherCircularPackage2"/>
+    
+    <package name="anotherCircularPackage2" extends="anotherCircularPackage"/>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-basic-packages.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-basic-packages.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-basic-packages.xml
new file mode 100644
index 0000000..69b5cca
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-basic-packages.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default" />
+
+    <package name="namespacepkg" namespace="/namespace/set" />
+
+    <package name="abstractpkg" abstract="true" />
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-default-package.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-default-package.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-default-package.xml
new file mode 100644
index 0000000..a403f17
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-default-package.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default" />
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-defaultclassref-package.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-defaultclassref-package.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-defaultclassref-package.xml
new file mode 100644
index 0000000..650cc2b
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-defaultclassref-package.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ >
+
+<xwork>
+    <package name="hasDefaultClassRef">
+    	<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
+    </package>
+    <package name="noDefaultClassRef"/>
+</xwork>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-exception-mappings.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-exception-mappings.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-exception-mappings.xml
new file mode 100644
index 0000000..f6e2707
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-exception-mappings.xml
@@ -0,0 +1,33 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true"/>
+            <result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult"/>
+        </result-types>
+
+        <global-results>
+            <!-- should be chain type since it is the default -->
+            <result name="login">login</result>
+        </global-results>
+
+        <global-exception-mappings>
+            <exception-mapping exception="java.lang.RuntimeException" result="runForDeeHillz"/>
+            <exception-mapping exception="com.opensymphony.xwork2.XworkException" result="xworkNaughty"/>
+        </global-exception-mappings>
+
+        <action name="Bar" class="com.opensymphony.xwork2.SimpleAction">
+            <exception-mapping exception="com.opensymphony.xwork2.SpookyException" result="spooky-result"/>
+            <result name="spooky-result" type="mock"/>
+            <result name="specificLocationResult">
+                <param name="actionName">bar.vm</param>
+            </result>
+        </action>
+
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-global-result-inheritence.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-global-result-inheritence.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-global-result-inheritence.xml
new file mode 100644
index 0000000..f50d169
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-global-result-inheritence.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+	<package name="parent" namespace="/base">
+		<result-types>
+			<result-type name="mockResult" class="com.opensymphony.xwork2.mock.MockResult" />
+		</result-types>
+		<global-results>
+			<result name="mockResult1" type="mockResult">
+				<param name="identity">p1</param>
+			</result>
+			<result name="mockResult2" type="mockResult">
+				<param name="identity">p2</param>
+			</result>
+		</global-results>
+		<action name="parentAction" />
+	</package>
+
+
+	<package name="another" namespace="/base">
+		<result-types>
+			<result-type name="anotherMockResult" class="com.opensymphony.xwork2.mock.MockResult" />
+		</result-types>
+		<global-results>
+			<result name="mockResult1" type="anotherMockResult">
+				<param name="identity">a1</param>
+			</result>
+			<result name="mockResult2" type="anotherMockResult">
+				<param name="identity">a2</param>
+			</result>
+		</global-results>
+		<action name="anotherAction" />
+	</package>
+
+	<package name="child" extends="parent" namespace="/base">
+		<global-results>
+			<result name="mockResult1" type="mockResult">
+				<param name="identity">c1</param>
+			</result>
+		</global-results>
+		<action name="childAction" />
+	</package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-defaultref.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-defaultref.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-defaultref.xml
new file mode 100644
index 0000000..81481b2
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-defaultref.xml
@@ -0,0 +1,30 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+    <!-- this package has a default interceptor ref - so actions with no refs should have the default ref -->
+    <package name="default">
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+            <interceptor name="logging" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>
+        </interceptors>
+
+        <default-interceptor-ref name="timer" />
+        <action name="ActionWithOwnRef" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="logging"/>
+        </action>
+        <action name="ActionWithDefaultRef" class="com.opensymphony.xwork2.SimpleAction" />
+    </package>
+
+    <!-- this package has no default interceptor ref - so actions with no refs should inherit the default interceptor -->
+    <!-- this tests that default interceptor refs are inherited -->
+    <package name="subpackage" extends="default">
+        <action name="ActionWithNoRef" class="com.opensymphony.xwork2.SimpleAction" />
+
+        <action name="AnotherActionWithOwnRef" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="logging"/>
+        </action>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-inheritance.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-inheritance.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-inheritance.xml
new file mode 100644
index 0000000..13d50a4
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-inheritance.xml
@@ -0,0 +1,34 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+
+            <interceptor-stack name="defaultStack">
+                <interceptor-ref name="timer"/>
+            </interceptor-stack>
+        </interceptors>
+    </package>
+
+    <package name="subPackage" extends="default">
+        <interceptors>
+            <interceptor-stack name="subDefaultStack">
+                <interceptor-ref name="defaultStack"/>
+            </interceptor-stack>
+        </interceptors>
+    </package>
+
+    <package name="subSubPackage" extends="subPackage">
+        <interceptors>
+            <interceptor-stack name="subSubDefaultStack">
+                <interceptor-ref name="defaultStack"/>
+                <interceptor-ref name="subDefaultStack"/>
+            </interceptor-stack>
+        </interceptors>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-param-overriding.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-param-overriding.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-param-overriding.xml
new file mode 100644
index 0000000..e0d920b
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-param-overriding.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd">
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+	<package name="packageOne">
+		<result-types>
+			<result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult" />
+		</result-types>
+	
+		<interceptors>
+			<interceptor name="interceptorOne" class="com.opensymphony.xwork2.config.providers.InterceptorForTestPurpose" />
+			<interceptor name="interceptorTwo" class="com.opensymphony.xwork2.config.providers.InterceptorForTestPurpose" />
+			<interceptor name="interceptorThree" class="com.opensymphony.xwork2.config.providers.InterceptorForTestPurpose" />
+			
+			<interceptor-stack name="stackOne">
+				<interceptor-ref name="interceptorOne" />
+				<interceptor-ref name="interceptorTwo" />
+				<interceptor-ref name="interceptorThree" />
+			</interceptor-stack>
+		</interceptors>
+		
+		<action name="actionOne">
+			<interceptor-ref name="stackOne">
+				<param name="interceptorOne.paramOne">i1p1</param>
+				<param name="interceptorOne.paramTwo">i1p2</param>
+				<param name="interceptorTwo.paramOne">i2p1</param>
+			</interceptor-ref>
+			<result name="success" type="mock">test1</result>
+		</action>
+		
+		<action name="actionTwo">
+			<interceptor-ref name="stackOne">
+				<param name="interceptorThree.paramOne">i3p1</param>
+				<param name="interceptorThree.paramTwo">i3p2</param>
+				<param name="interceptorTwo.paramTwo">i2p2</param>
+			</interceptor-ref>
+			<result name="success" type="mock">test2</result>
+		</action>
+	</package>
+</xwork>    
+    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-params.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-params.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-params.xml
new file mode 100644
index 0000000..493320c
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-params.xml
@@ -0,0 +1,37 @@
+<!DOCTYPE xwork PUBLIC
+        "-//Apache Struts//XWork 1.1.1//EN"
+        "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+        >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+            <interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
+                <param name="foo">fooDefault</param>
+            </interceptor>
+
+            <interceptor-stack name="defaultStack">
+                <interceptor-ref name="timer"/>
+                <interceptor-ref name="test"/>
+            </interceptor-stack>
+        </interceptors>
+
+        <default-interceptor-ref name="defaultStack" />
+
+        <action name="TestInterceptorParam" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="defaultStack">
+                <param name="test.expectedFoo">expectedFooValue</param>
+            </interceptor-ref>
+        </action>
+
+        <action name="TestInterceptorParamOverride" class="com.opensymphony.xwork2.SimpleAction">
+            <interceptor-ref name="defaultStack">
+                <param name="test.foo">foo123</param>
+                <param name="test.expectedFoo">expectedFooValue2</param>
+            </interceptor-ref>
+        </action>
+    </package>
+
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-stack-param-overriding.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-stack-param-overriding.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-stack-param-overriding.xml
new file mode 100644
index 0000000..3ab77c1
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptor-stack-param-overriding.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 2.0//EN"
+    "http://struts.apache.org/dtds/xwork-2.0.dtd">
+
+<xwork>
+	<package name="packageOne">
+		<result-types>
+			<result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult" />
+		</result-types>
+
+		<interceptors>
+			<interceptor name="interceptorOne" class="com.opensymphony.xwork2.config.providers.InterceptorForTestPurpose" />
+			<interceptor name="interceptorTwo" class="com.opensymphony.xwork2.config.providers.InterceptorForTestPurpose" />
+			<interceptor name="interceptorThree" class="com.opensymphony.xwork2.config.providers.InterceptorForTestPurpose" />
+
+			<interceptor-stack name="stackOne">
+				<interceptor-ref name="interceptorOne" />
+				<interceptor-ref name="interceptorTwo" />
+				<interceptor-ref name="interceptorThree" />
+			</interceptor-stack>
+
+			<interceptor-stack name="stackTwo">
+				<interceptor-ref name="stackOne" />
+			</interceptor-stack>
+
+			<interceptor-stack name="stackThree">
+				<interceptor-ref name="stackTwo" />
+			</interceptor-stack>
+
+		</interceptors>
+
+		<action name="actionOne">
+			<interceptor-ref name="stackTwo">
+				<param name="stackOne.interceptorOne.paramOne">i1p1</param>
+				<param name="stackOne.interceptorOne.paramTwo">i1p2</param>
+				<param name="stackOne.interceptorTwo.paramOne">i2p1</param>
+			</interceptor-ref>
+			<result name="success" type="mock">test1</result>
+		</action>
+
+		<action name="actionTwo">
+			<interceptor-ref name="stackThree">
+				<param name="stackTwo.stackOne.interceptorThree.paramOne">i3p1</param>
+				<param name="stackTwo.stackOne.interceptorThree.paramTwo">i3p2</param>
+				<param name="stackTwo.stackOne.interceptorTwo.paramTwo">i2p2</param>
+			</interceptor-ref>
+			<result name="success" type="mock">test2</result>
+		</action>
+	</package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-basic.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-basic.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-basic.xml
new file mode 100644
index 0000000..41d98c8
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-basic.xml
@@ -0,0 +1,27 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <interceptors>
+            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
+            <interceptor name="logging" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>
+            <interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
+                <param name="foo">expectedFoo</param>
+            </interceptor>
+
+            <interceptor-stack name="defaultStack">
+                <interceptor-ref name="timer"/>
+                <interceptor-ref name="test"/>
+            </interceptor-stack>
+
+            <interceptor-stack name="derivativeStack">
+                <interceptor-ref name="defaultStack"/>
+                <interceptor-ref name="logging"/>
+            </interceptor-stack>
+        </interceptors>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-spring.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-spring.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-spring.xml
new file mode 100644
index 0000000..a44dc41
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-interceptors-spring.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <interceptors>
+            <interceptor name="timer" class="timer-interceptor"/>
+        </interceptors>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-invalid-file.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-invalid-file.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-invalid-file.xml
new file mode 100644
index 0000000..8831075
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-invalid-file.xml
@@ -0,0 +1,9 @@
+        <action name="Foo" class="com.opensymphony.xwork2.SimpleAction">
+            <param name="foo">17</param>
+            <param name="bar">23</param>
+            <result name="success" type="chain">
+                <param name="actionName">Bar</param>
+            </result>
+            <interceptor-ref name="debugStack"/>
+            <interceptor-ref name="defaultStack"/>
+        </action>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-multilevel.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-multilevel.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-multilevel.xml
new file mode 100644
index 0000000..0e270db
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-multilevel.xml
@@ -0,0 +1,45 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true"/>
+        </result-types>
+        <interceptors>
+            <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
+        </interceptors>
+    </package>
+
+    <package name="namespace1" extends="default" namespace="/namespace1">
+        <interceptors>
+            <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>
+        </interceptors>
+
+        <action name="action1" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+        </action>
+    </package>
+
+
+    <package name="namespace2" extends="namespace1" namespace="/namespace2">
+        <action name="action2" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+        </action>
+    </package>
+
+    <package name="namespace3" extends="namespace2" namespace="/namespace3">
+        <action name="action3" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="success" type="chain"/>
+            <interceptor-ref name="params"/>
+            <interceptor-ref name="staticParams"/>
+        </action>
+    </package>
+
+</xwork>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-package-inheritance.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-package-inheritance.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-package-inheritance.xml
new file mode 100644
index 0000000..ef4737a
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-package-inheritance.xml
@@ -0,0 +1,27 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default" namespace="/default">
+        <action name="default" class="com.opensymphony.xwork2.ActionSupport"/>
+    </package>
+
+    <package name="abstractPackage" abstract="true">
+        <action name="abstract" class="com.opensymphony.xwork2.ActionSupport"/>
+    </package>
+
+    <package name="singleInheritance" namespace="/single" extends="default">
+        <action name="single" class="com.opensymphony.xwork2.ActionSupport"/>
+    </package>
+    
+    <package name="testParentBelow" namespace="/parentBelow" extends="multipleInheritance">
+    	<action name="testParentBelowAction" class="com.opensymphony.xwork2.ActionSupport"/>
+    </package>
+
+    <package name="multipleInheritance" namespace="/multiple" extends="default,abstractPackage,singleInheritance">
+        <action name="multiple" class="com.opensymphony.xwork2.ActionSupport"/>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-inheritance.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-inheritance.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-inheritance.xml
new file mode 100644
index 0000000..25952a4
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-inheritance.xml
@@ -0,0 +1,26 @@
+<!DOCTYPE xwork PUBLIC
+    "-//Apache Struts//XWork 1.1.1//EN"
+    "http://struts.apache.org/dtds/xwork-1.1.1.dtd"
+ >
+
+<xwork>
+	<include file="xwork-test-beans.xml" />
+    <package name="default">
+        <result-types>
+            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="true" />
+            <result-type name="mock" class="com.opensymphony.xwork2.mock.MockResult"/>
+        </result-types>
+    </package>
+
+    <package name="subPackage" extends="default">
+        <result-types>
+            <result-type name="subMock" class="com.opensymphony.xwork2.mock.MockResult"/>
+        </result-types>
+
+        <action name="Bar" class="com.opensymphony.xwork2.SimpleAction">
+            <result name="chainDefaultTypedResult" />
+            <result name="mockTypedResult" type="mock" />
+            <result name="subMockTypedResult" type="subMock" />
+        </action>
+    </package>
+</xwork>

http://git-wip-us.apache.org/repos/asf/struts/blob/82cb1286/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-types.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-types.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-types.xml
new file mode 100644
index 0000000..ec226eb
--- /dev/null
+++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-result-types.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE xwork PUBLIC 
+	"-//Apache Struts//XWork 1.1.1//EN"
+	"http://struts.apache.org/dtds/xwork-1.1.1.dtd">
+ 
+<xwork>
+    <include file="xwork-test-beans.xml" />
+	<package name="xworkResultTypesTestPackage1">
+		<result-types>
+			<result-type name="result1" class="com.opensymphony.xwork2.mock.MockResult" >
+				<param name="param1">value1</param>
+				<param name="param2">value2</param>
+				<param name="param3">value3</param>
+			</result-type>
+			<result-type name="result2" class="com.opensymphony.xwork2.mock.MockResult">
+				<param name="paramA">valueA</param>
+				<param name="paramB">valueB</param>
+			</result-type>
+		</result-types>
+	</package>
+	
+	
+	<package name="xworkResultTypesTestPackage2">
+		<result-types>
+			<result-type name="result1" class="com.opensymphony.xwork2.mock.MockResult" >
+				<param name="param1">value1</param>
+				<param name="param2">value2</param>
+				<param name="param3">value3</param>
+			</result-type>
+			<result-type name="result2" class="com.opensymphony.xwork2.mock.MockResult">
+				<param name="paramA">valueA</param>
+				<param name="paramB">valueB</param>
+			</result-type>
+		</result-types>
+		
+		<action name="action1">
+			<result name="success" type="result1">
+				<param name="param1">newValue1</param>
+				<param name="param3">newValue3</param>
+				<param name="param10">value10</param>
+				<param name="param11">value11</param>
+			</result>
+		</action>
+		
+		<action name="action2">
+			<result name="success" type="result2">
+				<param name="paramB">newValueB</param>
+				<param name="paramZ">valueZ</param>
+			</result>
+		</action>
+	</package>
+	
+</xwork>