You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by ka...@apache.org on 2011/02/12 22:48:23 UTC

svn commit: r1070156 - /shiro/trunk/core/src/main/java/org/apache/shiro/realm/AuthorizingRealm.java

Author: kaosko
Date: Sat Feb 12 21:48:23 2011
New Revision: 1070156

URL: http://svn.apache.org/viewvc?rev=1070156&view=rev
Log:
FIXED - issue SHIRO-237: nullpointer error at permission check when no permissionresolver is set 
https://issues.apache.org/jira/browse/SHIRO-237
- refactor constructors to use best practices for overloading, consolidate initialization logic in the constructor with most arguments
- throw IllegalArgumentException from the permission resolver setter to indicate that its a required attribute 

Modified:
    shiro/trunk/core/src/main/java/org/apache/shiro/realm/AuthorizingRealm.java

Modified: shiro/trunk/core/src/main/java/org/apache/shiro/realm/AuthorizingRealm.java
URL: http://svn.apache.org/viewvc/shiro/trunk/core/src/main/java/org/apache/shiro/realm/AuthorizingRealm.java?rev=1070156&r1=1070155&r2=1070156&view=diff
==============================================================================
--- shiro/trunk/core/src/main/java/org/apache/shiro/realm/AuthorizingRealm.java (original)
+++ shiro/trunk/core/src/main/java/org/apache/shiro/realm/AuthorizingRealm.java Sat Feb 12 21:48:23 2011
@@ -92,26 +92,30 @@ public abstract class AuthorizingRealm e
     ============================================*/
 
     public AuthorizingRealm() {
-        this.authorizationCachingEnabled = true;
-        this.permissionResolver = new WildcardPermissionResolver();
-
-        int instanceNumber = INSTANCE_COUNT.getAndIncrement();
-        this.authorizationCacheName = getClass().getName() + DEFAULT_AUTHORIZATION_CACHE_SUFFIX;
-        if (instanceNumber > 0) {
-            this.authorizationCacheName = this.authorizationCacheName + "." + instanceNumber;
-        }
+        this(null, null);
     }
 
     public AuthorizingRealm(CacheManager cacheManager) {
-        super(cacheManager);
+        this(cacheManager, null);
     }
 
     public AuthorizingRealm(CredentialsMatcher matcher) {
-        super(matcher);
+        this(null, matcher);
     }
 
     public AuthorizingRealm(CacheManager cacheManager, CredentialsMatcher matcher) {
-        super(cacheManager, matcher);
+        super();
+        if (cacheManager != null) setCacheManager(cacheManager);
+        if (matcher != null) setCredentialsMatcher(matcher);
+        
+        this.authorizationCachingEnabled = true;
+        this.permissionResolver = new WildcardPermissionResolver();
+
+        int instanceNumber = INSTANCE_COUNT.getAndIncrement();
+        this.authorizationCacheName = getClass().getName() + DEFAULT_AUTHORIZATION_CACHE_SUFFIX;
+        if (instanceNumber > 0) {
+            this.authorizationCacheName = this.authorizationCacheName + "." + instanceNumber;
+        }
     }
 
     /*--------------------------------------------
@@ -178,6 +182,7 @@ public abstract class AuthorizingRealm e
     }
 
     public void setPermissionResolver(PermissionResolver permissionResolver) {
+        if (permissionResolver == null) throw new IllegalArgumentException("Null PermissionResolver is not allowed");
         this.permissionResolver = permissionResolver;
     }