You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by bd...@apache.org on 2016/07/01 22:23:41 UTC

shiro git commit: SHIRO-437 Corrected WildcardPermissions toString when permission contained a comma.

Repository: shiro
Updated Branches:
  refs/heads/master 7d6f53c5d -> 19006237f


SHIRO-437 Corrected WildcardPermissions toString when permission contained a comma.


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

Branch: refs/heads/master
Commit: 19006237f133d3036ee041c8f9369a610dc51220
Parents: 7d6f53c
Author: Brian Demers <bd...@apache.org>
Authored: Fri Jul 1 18:19:27 2016 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Fri Jul 1 18:19:27 2016 -0400

----------------------------------------------------------------------
 .../authz/permission/WildcardPermission.java    | 11 ++++++--
 .../permission/WildcardPermissionTest.java      | 29 ++++++++++++++++++++
 2 files changed, 38 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/19006237/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 4149771..484ed97 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
@@ -24,6 +24,7 @@ import org.apache.shiro.util.StringUtils;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -235,9 +236,15 @@ public class WildcardPermission implements Permission, Serializable {
         StringBuilder buffer = new StringBuilder();
         for (Set<String> part : parts) {
             if (buffer.length() > 0) {
-                buffer.append(":");
+                buffer.append(PART_DIVIDER_TOKEN);
+            }
+            Iterator<String> partIt = part.iterator();
+            while(partIt.hasNext()) {
+                buffer.append(partIt.next());
+                if (partIt.hasNext()) {
+                    buffer.append(SUBPART_DIVIDER_TOKEN);
+                }
             }
-            buffer.append(part);
         }
         return buffer.toString();
     }

http://git-wip-us.apache.org/repos/asf/shiro/blob/19006237/core/src/test/java/org/apache/shiro/authz/permission/WildcardPermissionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/shiro/authz/permission/WildcardPermissionTest.java b/core/src/test/java/org/apache/shiro/authz/permission/WildcardPermissionTest.java
index 56cea74..d1eb5a5 100644
--- a/core/src/test/java/org/apache/shiro/authz/permission/WildcardPermissionTest.java
+++ b/core/src/test/java/org/apache/shiro/authz/permission/WildcardPermissionTest.java
@@ -126,7 +126,17 @@ public class WildcardPermissionTest {
         assertFalse(p2.implies(p1));
         assertFalse(p3.implies(p1));
         assertTrue(p2.implies(p3));
+    }
+
+    /**
+     * Validates WildcardPermissions with that contain the same list parts are equal.
+     */
+    @Test
+    public void testListDifferentOrder() {
 
+        WildcardPermission p6 = new WildcardPermission("one,two:three,four");
+        WildcardPermission p6DiffOrder = new WildcardPermission("two,one:four,three");
+        assertTrue(p6.equals(p6DiffOrder));
     }
 
     @Test
@@ -196,4 +206,23 @@ public class WildcardPermissionTest {
 
     }
 
+    @Test
+    public void testToString() {
+        WildcardPermission p1 = new WildcardPermission("*");
+        WildcardPermission p2 = new WildcardPermission("one");
+        WildcardPermission p3 = new WildcardPermission("one:two");
+        WildcardPermission p4 = new WildcardPermission("one,two:three,four");
+        WildcardPermission p5 = new WildcardPermission("one,two:three,four,five:six:seven,eight");
+
+        assertTrue("*".equals(p1.toString()));
+        assertTrue(p1.equals(new WildcardPermission(p1.toString())));
+        assertTrue("one".equals(p2.toString()));
+        assertTrue(p2.equals(new WildcardPermission(p2.toString())));
+        assertTrue("one:two".equals(p3.toString()));
+        assertTrue(p3.equals(new WildcardPermission(p3.toString())));
+        assertTrue("one,two:three,four".equals(p4.toString()));
+        assertTrue(p4.equals(new WildcardPermission(p4.toString())));
+        assertTrue("one,two:three,four,five:six:seven,eight".equals(p5.toString()));
+        assertTrue(p5.equals(new WildcardPermission(p5.toString())));
+    }
 }
\ No newline at end of file