SHIRO-564 lower-case wildcard string before building subparts so that the 
subparts list is not created twice for case-insensitive strings.

Fixes #18


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

Branch: refs/heads/master
Commit: dbd1d621ed33d992a36837e502396ed1e668beb8
Parents: da4c167
Author: Matt Bishop <[email protected]>
Authored: Sun May 29 12:12:31 2016 -0700
Committer: Brian Demers <[email protected]>
Committed: Wed Jun 29 14:15:50 2016 -0700

----------------------------------------------------------------------
 .../shiro/authz/permission/WildcardPermission.java  | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/dbd1d621/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java 
b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
index cb9d14e..54032a3 100644
--- 
a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
+++ 
b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
@@ -154,14 +154,16 @@ public class WildcardPermission implements Permission, 
Serializable {
             throw new IllegalArgumentException("Wildcard string cannot be null 
or empty. Make sure permission strings are properly formatted.");
         }
 
+        if (!caseSensitive) {
+            wildcardString = wildcardString.toLowerCase();
+        }
+
         List<String> parts = 
CollectionUtils.asList(wildcardString.split(PART_DIVIDER_TOKEN));
 
         this.parts = new ArrayList<Set<String>>();
         for (String part : parts) {
             Set<String> subparts = 
CollectionUtils.asSet(part.split(SUBPART_DIVIDER_TOKEN));
-            if (!caseSensitive) {
-                subparts = lowercase(subparts);
-            }
+
             if (subparts.isEmpty()) {
                 throw new IllegalArgumentException("Wildcard string cannot 
contain parts with only dividers. Make sure permission strings are properly 
formatted.");
             }
@@ -173,14 +175,6 @@ public class WildcardPermission implements Permission, 
Serializable {
         }
     }
 
-    private Set<String> lowercase(Set<String> subparts) {
-        Set<String> lowerCasedSubparts = new 
LinkedHashSet<String>(subparts.size());
-        for (String subpart : subparts) {
-            lowerCasedSubparts.add(subpart.toLowerCase());
-        }
-        return lowerCasedSubparts;
-    }
-
     /*--------------------------------------------
     |  A C C E S S O R S / M O D I F I E R S    |
     ============================================*/

Reply via email to