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/06/29 22:06:15 UTC

[1/5] shiro git commit: SHIRO-566 Use Collections wrappers to save memory and cpu.

Repository: shiro
Updated Branches:
  refs/heads/master cc77f33d1 -> 01b35626a


SHIRO-566 Use Collections wrappers to save memory and cpu.

Fixes #19


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

Branch: refs/heads/master
Commit: da4c167b924af4440e033b42a3b8e691f0e5d8cd
Parents: cc77f33
Author: Matt Bishop <ma...@elasticpath.com>
Authored: Mon May 30 10:47:28 2016 -0700
Committer: Brian Demers <bd...@stormpath.com>
Committed: Wed Jun 29 14:11:44 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/shiro/util/CollectionUtils.java  | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/da4c167b/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java
----------------------------------------------------------------------
diff --git a/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java b/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java
index 4b9c8e4..67e9901 100644
--- a/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java
+++ b/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java
@@ -18,7 +18,7 @@
  */
 package org.apache.shiro.util;
 
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashSet;
@@ -39,6 +39,11 @@ public class CollectionUtils {
         if (elements == null || elements.length == 0) {
             return Collections.emptySet();
         }
+
+        if (elements.length == 1) {
+            return Collections.singleton(elements[0]);
+        }
+
         LinkedHashSet<E> set = new LinkedHashSet<E>(elements.length * 4 / 3 + 1);
         Collections.addAll(set, elements);
         return set;
@@ -97,11 +102,9 @@ public class CollectionUtils {
         if (elements == null || elements.length == 0) {
             return Collections.emptyList();
         }
-        // Avoid integer overflow when a large array is passed in
-        int capacity = computeListCapacity(elements.length);
-        ArrayList<E> list = new ArrayList<E>(capacity);
-        Collections.addAll(list, elements);
-        return list;
+
+        // Integer overflow does not occur when a large array is passed in because the list array already exists
+        return Arrays.asList(elements);
     }
 
     /*public static <E> Deque<E> asDeque(E... elements) {


[5/5] shiro git commit: Fix the calculation for the hash iterations

Posted by bd...@apache.org.
Fix the calculation for the hash iterations

We really need to subtract 1 here, not DEFAULT_ITERATIONS (which could
change, breaking the calculation then)

Fixes #14, SHIRO-568


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

Branch: refs/heads/master
Commit: 01b35626ac7cf9bb3c4f584c2c649ef5c190ac4b
Parents: 50393a2
Author: Andreas Kohn <an...@gmail.com>
Authored: Thu Apr 21 10:26:44 2016 +0200
Committer: Brian Demers <bd...@stormpath.com>
Committed: Wed Jun 29 14:22:32 2016 -0700

----------------------------------------------------------------------
 .../src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/01b35626/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
----------------------------------------------------------------------
diff --git a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
index 7ee3c40..b3c8a33 100644
--- a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
+++ b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
@@ -346,7 +346,7 @@ public class SimpleHash extends AbstractHash {
             digest.update(salt);
         }
         byte[] hashed = digest.digest(bytes);
-        int iterations = hashIterations - DEFAULT_ITERATIONS; //already hashed once above
+        int iterations = hashIterations - 1; //already hashed once above
         //iterate remaining number:
         for (int i = 0; i < iterations; i++) {
             digest.reset();


[3/5] shiro git commit: SHIRO-300 Add protected setParts(list) method to WildcardPermission so subclasses can create their own parts/subparts list.

Posted by bd...@apache.org.
SHIRO-300 Add protected setParts(list) method to WildcardPermission so subclasses can create their own parts/subparts list.

Fixes #17


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

Branch: refs/heads/master
Commit: a862620bec0618d763ebe42b22bef8660b34dfdf
Parents: dbd1d62
Author: Matt Bishop <ma...@elasticpath.com>
Authored: Sun May 29 12:06:01 2016 -0700
Committer: Brian Demers <bd...@stormpath.com>
Committed: Wed Jun 29 14:16:40 2016 -0700

----------------------------------------------------------------------
 .../apache/shiro/authz/permission/WildcardPermission.java   | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/a862620b/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 54032a3..4149771 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
@@ -182,6 +182,15 @@ public class WildcardPermission implements Permission, Serializable {
         return this.parts;
     }
 
+    /**
+     * Sets the pre-split String parts of this <code>WildcardPermission</code>.
+     * @since 1.3.0
+     * @param parts pre-split String parts.
+     */
+    protected void setParts(List<Set<String>> parts) {
+        this.parts = parts;
+    }
+
     /*--------------------------------------------
     |               M E T H O D S               |
     ============================================*/


[4/5] shiro git commit: SHIRO-435: Fix the double SecurityManager singleton. Also prevent the same issue on Environment. Update test cases of ShiroWebModule accordingly. (Patch from https://issues.apache.org/jira/browse/SHIRO-435)

Posted by bd...@apache.org.
SHIRO-435: Fix the double SecurityManager singleton. Also prevent the same issue on Environment. Update test cases of ShiroWebModule accordingly. (Patch from https://issues.apache.org/jira/browse/SHIRO-435)

Fixes #16


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

Branch: refs/heads/master
Commit: 50393a2d1154ad73dccab6aa6078232e7803e169
Parents: a862620
Author: Johannes Schnatterer <jo...@triology.de>
Authored: Wed May 25 14:29:41 2016 +0200
Committer: Brian Demers <bd...@stormpath.com>
Committed: Wed Jun 29 14:16:57 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/shiro/guice/web/ShiroWebModule.java     | 4 ++--
 .../java/org/apache/shiro/guice/web/ShiroWebModuleTest.java | 9 ++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/50393a2d/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
----------------------------------------------------------------------
diff --git a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
index 316958e..45bc916 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
@@ -179,7 +179,7 @@ public abstract class ShiroWebModule extends ShiroModule {
     @SuppressWarnings({"unchecked"})
     @Override
     protected final void bindSecurityManager(AnnotatedBindingBuilder<? super SecurityManager> bind) {
-        bindWebSecurityManager(bind);
+        bind.to(WebSecurityManager.class); // SHIRO-435
     }
 
     /**
@@ -211,7 +211,7 @@ public abstract class ShiroWebModule extends ShiroModule {
 
     @Override
     protected final void bindEnvironment(AnnotatedBindingBuilder<Environment> bind) {
-        bindWebEnvironment(bind);
+        bind.to(WebEnvironment.class); // SHIRO-435
     }
 
     protected void bindWebEnvironment(AnnotatedBindingBuilder<? super WebEnvironment> bind) {

http://git-wip-us.apache.org/repos/asf/shiro/blob/50393a2d/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
----------------------------------------------------------------------
diff --git a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
index 908f322..a3a3f76 100644
--- a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
+++ b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
@@ -100,7 +100,7 @@ public class ShiroWebModuleTest {
 
             @Override
             protected void bindWebSecurityManager(AnnotatedBindingBuilder<? super WebSecurityManager> bind) {
-                bind.to(MyDefaultWebSecurityManager.class);
+                bind.to(MyDefaultWebSecurityManager.class).asEagerSingleton();
             }
         });
         SecurityManager securityManager = injector.getInstance(SecurityManager.class);
@@ -109,7 +109,8 @@ public class ShiroWebModuleTest {
         WebSecurityManager webSecurityManager = injector.getInstance(WebSecurityManager.class);
         assertNotNull(webSecurityManager);
         assertTrue(webSecurityManager instanceof MyDefaultWebSecurityManager);
-
+        // SHIRO-435: Check both keys SecurityManager and WebSecurityManager are bound to the same instance
+        assertTrue( securityManager == webSecurityManager );
     }
 
     @Test
@@ -132,7 +133,7 @@ public class ShiroWebModuleTest {
 
             @Override
             protected void bindWebEnvironment(AnnotatedBindingBuilder<? super WebEnvironment> bind) {
-                bind.to(MyWebEnvironment.class);
+                bind.to(MyWebEnvironment.class).asEagerSingleton();
             }
         });
         Environment environment = injector.getInstance(Environment.class);
@@ -141,6 +142,8 @@ public class ShiroWebModuleTest {
         WebEnvironment webEnvironment = injector.getInstance(WebEnvironment.class);
         assertNotNull(webEnvironment);
         assertTrue(webEnvironment instanceof MyWebEnvironment);
+        // SHIRO-435: Check both keys Environment and WebEnvironment are bound to the same instance
+        assertTrue( environment == webEnvironment );
     }
 
     public static class MyDefaultWebSecurityManager extends DefaultWebSecurityManager {


[2/5] shiro git commit: SHIRO-564 lower-case wildcard string before building subparts so that the subparts list is not created twice for case-insensitive strings.

Posted by bd...@apache.org.
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 <ma...@elasticpath.com>
Authored: Sun May 29 12:12:31 2016 -0700
Committer: Brian Demers <bd...@stormpath.com>
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    |
     ============================================*/