WW-5049 Sets proper order of configuration elements
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java b/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
index 745f908..a314149 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
@@ -22,6 +22,7 @@
import com.opensymphony.xwork2.FileManager;
import com.opensymphony.xwork2.FileManagerFactory;
import com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.config.BeanSelectionProvider;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationException;
import com.opensymphony.xwork2.config.ConfigurationProvider;
@@ -225,11 +226,11 @@
String impl = child.getAttribute("class");
try {
Class classImpl = ClassLoaderUtil.loadClass(impl, getClass());
- if (ConfigurationProvider.class.isAssignableFrom(classImpl)) {
- ConfigurationProvider provider = (ConfigurationProvider) classImpl.newInstance();
+ if (BeanSelectionProvider.class.isAssignableFrom(classImpl)) {
+ BeanSelectionProvider provider = (BeanSelectionProvider) classImpl.newInstance();
provider.register(containerBuilder, props);
} else {
- throw new ConfigurationException("The bean-provider: name:" + name + " class:" + impl + " doesnt implement " + ConfigurationProvider.class.getName(), childNode);
+ throw new ConfigurationException("The bean-provider: name:" + name + " class:" + impl + " does not implement " + BeanSelectionProvider.class.getName(), childNode);
}
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
throw new ConfigurationException("Unable to load bean-provider: name:" + name + " class:" + impl, e, childNode);
diff --git a/core/src/main/resources/struts-2.6.dtd b/core/src/main/resources/struts-2.6.dtd
index 6eb5654..84714cc 100644
--- a/core/src/main/resources/struts-2.6.dtd
+++ b/core/src/main/resources/struts-2.6.dtd
@@ -30,7 +30,7 @@
"http://struts.apache.org/dtds/struts-2.6.dtd">
-->
-<!ELEMENT struts ((package|include|bean-provider|bean|constant)*, unknown-handler-stack?)>
+<!ELEMENT struts ((package|include|bean|constant)*,bean-provider?, unknown-handler-stack?)>
<!ATTLIST struts
order CDATA #IMPLIED
>
@@ -125,12 +125,6 @@
file CDATA #REQUIRED
>
-<!ELEMENT bean-provider (#PCDATA)>
-<!ATTLIST bean-provider
- name CDATA #IMPLIED
- class CDATA #IMPLIED
->
-
<!ELEMENT bean (#PCDATA)>
<!ATTLIST bean
type CDATA #IMPLIED
@@ -141,6 +135,12 @@
optional CDATA #IMPLIED
>
+<!ELEMENT bean-provider (#PCDATA)>
+<!ATTLIST bean-provider
+ name CDATA #IMPLIED
+ class CDATA #IMPLIED
+>
+
<!ELEMENT constant (#PCDATA)>
<!ATTLIST constant
name CDATA #REQUIRED
diff --git a/core/src/main/resources/xwork-2.6.dtd b/core/src/main/resources/xwork-2.6.dtd
index 6f0e319..8c70840 100644
--- a/core/src/main/resources/xwork-2.6.dtd
+++ b/core/src/main/resources/xwork-2.6.dtd
@@ -30,7 +30,7 @@
"http://struts.apache.org/dtds/xwork-2.6.dtd">
-->
-<!ELEMENT xwork ((package|include|bean-provider|bean|constant)*, unknown-handler-stack?)>
+<!ELEMENT xwork ((package|include|bean|constant)*, bean-provider?, unknown-handler-stack?)>
<!ATTLIST xwork
order CDATA #IMPLIED
>
@@ -125,12 +125,6 @@
file CDATA #REQUIRED
>
-<!ELEMENT bean-provider (#PCDATA)>
-<!ATTLIST bean-provider
- name CDATA #IMPLIED
- class CDATA #IMPLIED
->
-
<!ELEMENT bean (#PCDATA)>
<!ATTLIST bean
type CDATA #IMPLIED
@@ -141,6 +135,12 @@
optional CDATA #IMPLIED
>
+<!ELEMENT bean-provider (#PCDATA)>
+<!ATTLIST bean-provider
+ name CDATA #IMPLIED
+ class CDATA #IMPLIED
+>
+
<!ELEMENT constant (#PCDATA)>
<!ATTLIST constant
name CDATA #REQUIRED
diff --git a/plugins/velocity/src/main/resources/struts-plugin.xml b/plugins/velocity/src/main/resources/struts-plugin.xml
index 435fab9..b4fabf5 100644
--- a/plugins/velocity/src/main/resources/struts-plugin.xml
+++ b/plugins/velocity/src/main/resources/struts-plugin.xml
@@ -25,9 +25,7 @@
<struts>
- <bean-provider name="velocityBeans" class="org.apache.struts2.views.velocity.VelocityBeanSelectionProvider"/>
-
- <bean class="org.apache.struts2.views.velocity.VelocityManager" />
+ <bean name="struts" class="org.apache.struts2.views.velocity.VelocityManager" />
<bean type="org.apache.struts2.components.template.TemplateEngine" name="vm"
class="org.apache.struts2.views.velocity.template.VelocityTemplateEngine" />
@@ -41,4 +39,6 @@
</result-types>
</package>
+ <bean-provider name="velocityBeans" class="org.apache.struts2.views.velocity.VelocityBeanSelectionProvider"/>
+
</struts>