Simplifies checking of Strict DMI to simple getter

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

Branch: refs/heads/master
Commit: fdb6daec7859e0cf95a0da5482991b8342cf91ad
Parents: 86afcbe
Author: Lukasz Lenart <lukasz.len...@gmail.com>
Authored: Sat Sep 26 08:57:44 2015 +0200
Committer: Lukasz Lenart <lukasz.len...@gmail.com>
Committed: Sat Sep 26 08:57:44 2015 +0200

----------------------------------------------------------------------
 .../xwork2/config/entities/PackageConfig.java   | 14 +----
 .../config/entities/PackageConfigTest.java      | 62 +++++++++++++++++++-
 2 files changed, 62 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/fdb6daec/core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
----------------------------------------------------------------------
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 e297b49..1e7a4dd 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
@@ -600,22 +600,12 @@ public class PackageConfig extends Located implements 
Comparable, Serializable,
         }
 
         public Builder strictMethodInvocation(boolean strict) {
-            strictDMI = strict;
+            target.strictMethodInvocation = strict;
             return this;
         }
 
         public boolean isStrictMethodInvocation() {
-            // if Strict DMI was disabled in this package,
-            // return without evaluating parent packages
-            if (!strictDMI) {
-                return false;
-            }
-            for (PackageConfig parent : target.parents) {
-                if (parent.isStrictMethodInvocation()) {
-                    return true;
-                }
-            }
-            return true;
+            return target.strictMethodInvocation;
         }
 
         public PackageConfig build() {

http://git-wip-us.apache.org/repos/asf/struts/blob/fdb6daec/core/src/test/java/com/opensymphony/xwork2/config/entities/PackageConfigTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/config/entities/PackageConfigTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/config/entities/PackageConfigTest.java
index e2f2868..4a25ccb 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/config/entities/PackageConfigTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/config/entities/PackageConfigTest.java
@@ -30,5 +30,63 @@ public class PackageConfigTest extends XWorkTestCase {
         
         assertEquals("ref2", cfg.getFullDefaultInterceptorRef());
     }
-    
-}
\ No newline at end of file
+
+    public void testStrictDMIInheritance() {
+        // given
+        PackageConfig parent = new PackageConfig.Builder("parent").build();
+
+        // when
+        PackageConfig child = new PackageConfig.Builder("child")
+                .addParent(parent)
+                .build();
+
+        // then
+        assertTrue(child.isStrictMethodInvocation());
+    }
+
+    public void testStrictDMIInheritanceDisabledInParentPackage() {
+        // given
+        PackageConfig parent = new PackageConfig.Builder("parent")
+                .strictMethodInvocation(false)
+                .build();
+
+        // when
+        PackageConfig child = new PackageConfig.Builder("child")
+                .addParent(parent)
+                .build();
+
+        // then
+        assertTrue(child.isStrictMethodInvocation());
+    }
+
+    public void testStrictDMIInheritanceDisabledInBothPackage() {
+        // given
+        PackageConfig parent = new PackageConfig.Builder("parent")
+                .strictMethodInvocation(false)
+                .build();
+
+        // when
+        PackageConfig child = new PackageConfig.Builder("child")
+                .addParent(parent)
+                .strictMethodInvocation(false)
+                .build();
+
+        // then
+        assertFalse(child.isStrictMethodInvocation());
+    }
+
+    public void testStrictDMIInheritanceDisabledInChildPackage() {
+        // given
+        PackageConfig parent = new PackageConfig.Builder("parent").build();
+
+        // when
+        PackageConfig child = new PackageConfig.Builder("child")
+                .addParent(parent)
+                .strictMethodInvocation(false)
+                .build();
+
+        // then
+        assertFalse(child.isStrictMethodInvocation());
+    }
+
+}

Reply via email to