Adds more strict DMI logic

Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/0aaade64
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/0aaade64
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/0aaade64

Branch: refs/heads/master
Commit: 0aaade64cd332a7a5f45ae5068b8f7be1abb3817
Parents: 45af876
Author: Lukasz Lenart <lukasz.len...@gmail.com>
Authored: Fri Sep 4 11:35:23 2015 +0200
Committer: Lukasz Lenart <lukasz.len...@gmail.com>
Committed: Fri Sep 4 11:35:23 2015 +0200

----------------------------------------------------------------------
 .../xwork2/config/providers/XmlConfigurationProvider.java     | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/0aaade64/core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
----------------------------------------------------------------------
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 950d4a1..7d2e065 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
@@ -846,7 +846,8 @@ public class XmlConfigurationProvider implements 
ConfigurationProvider {
         NodeList allowedMethodsEls = 
element.getElementsByTagName("allowed-methods");
 
         Set<String> allowedMethods;
-        if (packageContext.isStrictMethodInvocation()) {
+        if (allowedMethodsEls.getLength() > 0) {
+            // user defined 'allowed-methods' so used them whatever Strict DMI 
was enabled or not
             allowedMethods = packageContext.getGlobalAllowedMethods();
 
             if (allowedMethodsEls.getLength() > 0) {
@@ -859,7 +860,11 @@ public class XmlConfigurationProvider implements 
ConfigurationProvider {
                     }
                 }
             }
+        } else if (packageContext.isStrictMethodInvocation()) {
+            // user enabled Strict DMI but didn't defined action specific 
'allowed-methods' so we use 'global-allowed-methods' only
+            allowedMethods = packageContext.getGlobalAllowedMethods();
         } else {
+            // Strict DMI is disabled to any method can be called
             allowedMethods = new HashSet<>();
             allowedMethods.add(ActionConfig.REGEX_WILDCARD);
         }

Reply via email to