Răsfoiți Sursa

SEC-908: Correct issue with BasePermission static initialization failure.

Ben Alex 17 ani în urmă
părinte
comite
0f8ea229c2

+ 0 - 39
acl/src/main/java/org/springframework/security/acls/domain/AbstractRegisteredPermission.java

@@ -1,39 +0,0 @@
-package org.springframework.security.acls.domain;
-
-import org.springframework.security.acls.Permission;
-
-/**
- * Provides an abstract base for standard {@link Permission} instances that wish to offer static convenience
- * methods to callers via delegation to {@link DefaultPermissionFactory}.
- * 
- * @author Ben Alex
- * @since 2.0.3
- *
- */
-public abstract class AbstractRegisteredPermission extends AbstractPermission {
-	protected static DefaultPermissionFactory defaultPermissionFactory = new DefaultPermissionFactory();
-
-    protected AbstractRegisteredPermission(int mask, char code) {
-    	super(mask, code);
-    }
-	
-    protected final static void registerPermissionsFor(Class subClass) {
-    	defaultPermissionFactory.registerPublicPermissions(subClass);
-    }
-    
-    public final static Permission buildFromMask(int mask) {
-        return defaultPermissionFactory.buildFromMask(mask);
-    }
-
-    public final static Permission[] buildFromMask(int[] masks) {
-        return defaultPermissionFactory.buildFromMask(masks);
-    }
-
-    public final static Permission buildFromName(String name) {
-    	return defaultPermissionFactory.buildFromName(name);
-    }
-
-    public final static Permission[] buildFromName(String[] names) {
-        return defaultPermissionFactory.buildFromName(names);
-    }
-}

+ 26 - 3
acl/src/main/java/org/springframework/security/acls/domain/BasePermission.java

@@ -28,14 +28,16 @@ import org.springframework.security.acls.Permission;
  * @author Ben Alex
  * @version $Id$
  */
-public class BasePermission extends AbstractRegisteredPermission {
+public class BasePermission extends AbstractPermission {
     public static final Permission READ = new BasePermission(1 << 0, 'R'); // 1
     public static final Permission WRITE = new BasePermission(1 << 1, 'W'); // 2
     public static final Permission CREATE = new BasePermission(1 << 2, 'C'); // 4
     public static final Permission DELETE = new BasePermission(1 << 3, 'D'); // 8
     public static final Permission ADMINISTRATION = new BasePermission(1 << 4, 'A'); // 16
     
-    /**
+	protected static DefaultPermissionFactory defaultPermissionFactory = new DefaultPermissionFactory();
+
+	/**
      * Registers the public static permissions defined on this class. This is mandatory so
      * that the static methods will operate correctly.
      */
@@ -46,4 +48,25 @@ public class BasePermission extends AbstractRegisteredPermission {
     protected BasePermission(int mask, char code) {
     	super(mask, code);
     }
-}
+
+    protected final static void registerPermissionsFor(Class subClass) {
+    	defaultPermissionFactory.registerPublicPermissions(subClass);
+    }
+    
+    public final static Permission buildFromMask(int mask) {
+        return defaultPermissionFactory.buildFromMask(mask);
+    }
+
+    public final static Permission[] buildFromMask(int[] masks) {
+        return defaultPermissionFactory.buildFromMask(masks);
+    }
+
+    public final static Permission buildFromName(String name) {
+    	return defaultPermissionFactory.buildFromName(name);
+    }
+
+    public final static Permission[] buildFromName(String[] names) {
+        return defaultPermissionFactory.buildFromName(names);
+    }
+
+}

+ 6 - 0
acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java

@@ -32,6 +32,12 @@ public class PermissionTests {
 
     //~ Methods ========================================================================================================
 
+    @Test
+    public void basePermissionTest() {
+    	Permission p = BasePermission.buildFromName("WRITE");
+    	assertNotNull(p);
+    }
+
     @Test
     public void expectedIntegerValues() {
         assertEquals(1, BasePermission.READ.getMask());