From 0f8ea229c29f0902dedcf977410555af436f5d6a Mon Sep 17 00:00:00 2001 From: Ben Alex Date: Fri, 5 Sep 2008 04:33:52 +0000 Subject: [PATCH] SEC-908: Correct issue with BasePermission static initialization failure. --- .../domain/AbstractRegisteredPermission.java | 39 ------------------- .../security/acls/domain/BasePermission.java | 29 ++++++++++++-- .../security/acls/domain/PermissionTests.java | 6 +++ 3 files changed, 32 insertions(+), 42 deletions(-) delete mode 100644 acl/src/main/java/org/springframework/security/acls/domain/AbstractRegisteredPermission.java diff --git a/acl/src/main/java/org/springframework/security/acls/domain/AbstractRegisteredPermission.java b/acl/src/main/java/org/springframework/security/acls/domain/AbstractRegisteredPermission.java deleted file mode 100644 index 3dcab21e1d..0000000000 --- a/acl/src/main/java/org/springframework/security/acls/domain/AbstractRegisteredPermission.java +++ /dev/null @@ -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); - } -} diff --git a/acl/src/main/java/org/springframework/security/acls/domain/BasePermission.java b/acl/src/main/java/org/springframework/security/acls/domain/BasePermission.java index 592f32eed5..5f83cc9000 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/BasePermission.java +++ b/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); + } + +} \ No newline at end of file diff --git a/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java b/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java index c36bdfdf1d..48af0edb45 100644 --- a/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java +++ b/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());