From e4fc8528b874d5d4d454ec8d8976b696a8375f82 Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Fri, 4 Sep 2015 08:55:14 +0200 Subject: [PATCH] Puts back option to disable strict DMI --- .../xwork2/config/entities/PackageConfig.java | 10 ++++++++++ .../config/providers/XmlConfigurationProvider.java | 3 +++ core/src/main/resources/struts-2.5.dtd | 1 + core/src/main/resources/xwork-2.5.dtd | 1 + 4 files changed, 15 insertions(+) diff --git a/core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java b/core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java index 093985c54..aa53a1267 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java @@ -448,6 +448,7 @@ public class PackageConfig extends Located implements Comparable, Serializable, public static class Builder implements InterceptorLocator { protected PackageConfig target; + private boolean strictDMI; public Builder(String name) { target = new PackageConfig(name); @@ -613,6 +614,15 @@ public class PackageConfig extends Located implements Comparable, Serializable, return target.getAllInterceptorConfigs().get(name); } + public Builder strictMethodInvocation(boolean strict) { + strictDMI = strict; + return this; + } + + public boolean isStrictMethodInvocation() { + return strictDMI; + } + public PackageConfig build() { embalmTarget(); PackageConfig result = target; 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 0302a688e..3009dcbca 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 @@ -649,9 +649,12 @@ public class XmlConfigurationProvider implements ConfigurationProvider { String name = StringUtils.defaultString(packageElement.getAttribute("name")); String namespace = StringUtils.defaultString(packageElement.getAttribute("namespace")); + boolean strictDMI = Boolean.parseBoolean(packageElement.getAttribute("strict-method-invocation")); + PackageConfig.Builder cfg = new PackageConfig.Builder(name) .namespace(namespace) .isAbstract(isAbstract) + .strictMethodInvocation(strictDMI) .location(DomHelper.getLocationObject(packageElement)); if (StringUtils.isNotEmpty(StringUtils.defaultString(parent))) { // has parents, let's look it up diff --git a/core/src/main/resources/struts-2.5.dtd b/core/src/main/resources/struts-2.5.dtd index 0845eeee9..b426d29ad 100644 --- a/core/src/main/resources/struts-2.5.dtd +++ b/core/src/main/resources/struts-2.5.dtd @@ -43,6 +43,7 @@ extends CDATA #IMPLIED namespace CDATA #IMPLIED abstract CDATA #IMPLIED + strict-method-invocation (true|false) "true" > diff --git a/core/src/main/resources/xwork-2.5.dtd b/core/src/main/resources/xwork-2.5.dtd index 197d0c1b5..31c1167c5 100644 --- a/core/src/main/resources/xwork-2.5.dtd +++ b/core/src/main/resources/xwork-2.5.dtd @@ -22,6 +22,7 @@ extends CDATA #IMPLIED namespace CDATA #IMPLIED abstract CDATA #IMPLIED + strict-method-invocation (true|false) "true" >