diff --git a/acl/src/main/java/org/springframework/security/acls/AclDataAccessException.java b/acl/src/main/java/org/springframework/security/acls/AclDataAccessException.java
new file mode 100644
index 0000000000..7b489cb99d
--- /dev/null
+++ b/acl/src/main/java/org/springframework/security/acls/AclDataAccessException.java
@@ -0,0 +1,32 @@
+package org.springframework.security.acls;
+
+/**
+ * Abstract base class for Acl data operations.
+ *
+ * @author Luke Taylor
+ * @version $Id$
+ * @since 2.5
+ */
+public abstract class AclDataAccessException extends RuntimeException {
+
+ /**
+ * Constructs an AclDataAccessException with the specified
+ * message and root cause.
+ *
+ * @param msg the detail message
+ * @param t the root cause
+ */
+ public AclDataAccessException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+
+ /**
+ * Constructs an AclDataAccessException with the specified
+ * message and no root cause.
+ *
+ * @param msg the detail message
+ */
+ public AclDataAccessException(String msg) {
+ super(msg);
+ }
+}
diff --git a/acl/src/main/java/org/springframework/security/acls/AclException.java b/acl/src/main/java/org/springframework/security/acls/AclException.java
deleted file mode 100644
index 6b2c1dcd29..0000000000
--- a/acl/src/main/java/org/springframework/security/acls/AclException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.springframework.security.acls;
-
-import org.springframework.core.NestedRuntimeException;
-
-/**
- * Abstract superclass for all exceptions thrown in the acls package and subpackages.
- *
- * @author Luke Taylor
- * @version $Id$
- * @since 2.5
- */
-public abstract class AclException extends NestedRuntimeException {
-
- /**
- * Constructs an AclException with the specified
- * message and root cause.
- *
- * @param msg the detail message
- * @param t the root cause
- */
- public AclException(String msg, Throwable cause) {
- super(msg, cause);
- }
-
- /**
- * Constructs an AclException with the specified
- * message and no root cause.
- *
- * @param msg the detail message
- */
- public AclException(String msg) {
- super(msg);
- }
-}
diff --git a/acl/src/main/java/org/springframework/security/acls/AlreadyExistsException.java b/acl/src/main/java/org/springframework/security/acls/AlreadyExistsException.java
index 16a54afa65..d9ff17821c 100644
--- a/acl/src/main/java/org/springframework/security/acls/AlreadyExistsException.java
+++ b/acl/src/main/java/org/springframework/security/acls/AlreadyExistsException.java
@@ -20,7 +20,7 @@ package org.springframework.security.acls;
* @author Ben Alex
* @version $Id$
*/
-public class AlreadyExistsException extends AclException {
+public class AlreadyExistsException extends AclDataAccessException {
//~ Constructors ===================================================================================================
/**
diff --git a/acl/src/main/java/org/springframework/security/acls/ChildrenExistException.java b/acl/src/main/java/org/springframework/security/acls/ChildrenExistException.java
index 52bd9dd55f..8894173bc6 100644
--- a/acl/src/main/java/org/springframework/security/acls/ChildrenExistException.java
+++ b/acl/src/main/java/org/springframework/security/acls/ChildrenExistException.java
@@ -20,7 +20,7 @@ package org.springframework.security.acls;
* @author Ben Alex
* @version $Id$
*/
-public class ChildrenExistException extends AclException {
+public class ChildrenExistException extends AclDataAccessException {
//~ Constructors ===================================================================================================
/**
diff --git a/acl/src/main/java/org/springframework/security/acls/NotFoundException.java b/acl/src/main/java/org/springframework/security/acls/NotFoundException.java
index 20dc4b87d3..54b754ae32 100644
--- a/acl/src/main/java/org/springframework/security/acls/NotFoundException.java
+++ b/acl/src/main/java/org/springframework/security/acls/NotFoundException.java
@@ -20,7 +20,7 @@ package org.springframework.security.acls;
* @author Ben Alex
* @version $Id$
*/
-public class NotFoundException extends AclException {
+public class NotFoundException extends AclDataAccessException {
//~ Constructors ===================================================================================================
/**
diff --git a/acl/src/main/java/org/springframework/security/acls/UnloadedSidException.java b/acl/src/main/java/org/springframework/security/acls/UnloadedSidException.java
index 451a55dbc4..218b67c8c1 100644
--- a/acl/src/main/java/org/springframework/security/acls/UnloadedSidException.java
+++ b/acl/src/main/java/org/springframework/security/acls/UnloadedSidException.java
@@ -21,7 +21,7 @@ package org.springframework.security.acls;
* @author Ben Alex
* @version $Id$
*/
-public class UnloadedSidException extends AclException {
+public class UnloadedSidException extends AclDataAccessException {
//~ Constructors ===================================================================================================
/**
diff --git a/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java b/acl/src/main/java/org/springframework/security/acls/expression/AclPermissionEvaluator.java
similarity index 95%
rename from acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java
rename to acl/src/main/java/org/springframework/security/acls/expression/AclPermissionEvaluator.java
index 525bbe5134..bf0f912597 100644
--- a/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java
+++ b/acl/src/main/java/org/springframework/security/acls/expression/AclPermissionEvaluator.java
@@ -1,4 +1,4 @@
-package org.springframework.security.acls;
+package org.springframework.security.acls.expression;
import java.io.Serializable;
import java.util.Arrays;
@@ -7,6 +7,10 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.access.expression.PermissionEvaluator;
+import org.springframework.security.acls.Acl;
+import org.springframework.security.acls.AclService;
+import org.springframework.security.acls.NotFoundException;
+import org.springframework.security.acls.Permission;
import org.springframework.security.acls.domain.BasePermission;
import org.springframework.security.acls.objectidentity.ObjectIdentity;
import org.springframework.security.acls.objectidentity.ObjectIdentityGenerator;
diff --git a/acl/src/main/java/org/springframework/security/acls/IdentityUnavailableException.java b/acl/src/main/java/org/springframework/security/acls/objectidentity/IdentityUnavailableException.java
similarity index 91%
rename from acl/src/main/java/org/springframework/security/acls/IdentityUnavailableException.java
rename to acl/src/main/java/org/springframework/security/acls/objectidentity/IdentityUnavailableException.java
index 4c0cf4aeff..191a33b9dd 100644
--- a/acl/src/main/java/org/springframework/security/acls/IdentityUnavailableException.java
+++ b/acl/src/main/java/org/springframework/security/acls/objectidentity/IdentityUnavailableException.java
@@ -12,7 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.security.acls;
+package org.springframework.security.acls.objectidentity;
/**
* Thrown if an ACL identity could not be extracted from an object.
@@ -20,7 +20,7 @@ package org.springframework.security.acls;
* @author Ben Alex
* @version $Id$
*/
-public class IdentityUnavailableException extends AclException {
+public class IdentityUnavailableException extends RuntimeException {
//~ Constructors ===================================================================================================
/**
diff --git a/acl/src/main/java/org/springframework/security/acls/objectidentity/ObjectIdentityImpl.java b/acl/src/main/java/org/springframework/security/acls/objectidentity/ObjectIdentityImpl.java
index d12f4fe1c7..17a3268da0 100644
--- a/acl/src/main/java/org/springframework/security/acls/objectidentity/ObjectIdentityImpl.java
+++ b/acl/src/main/java/org/springframework/security/acls/objectidentity/ObjectIdentityImpl.java
@@ -14,7 +14,6 @@
*/
package org.springframework.security.acls.objectidentity;
-import org.springframework.security.acls.IdentityUnavailableException;
import org.springframework.security.acls.jdbc.LookupStrategy;
import org.springframework.util.Assert;
diff --git a/acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java b/acl/src/test/java/org/springframework/security/acls/expression/AclPermissionEvaluatorTests.java
similarity index 89%
rename from acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java
rename to acl/src/test/java/org/springframework/security/acls/expression/AclPermissionEvaluatorTests.java
index f32b2fa995..fa9a5e77d9 100644
--- a/acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/expression/AclPermissionEvaluatorTests.java
@@ -1,4 +1,4 @@
-package org.springframework.security.acls;
+package org.springframework.security.acls.expression;
import static org.junit.Assert.assertTrue;
@@ -9,6 +9,9 @@ import org.jmock.Mockery;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Before;
import org.junit.Test;
+import org.springframework.security.acls.Acl;
+import org.springframework.security.acls.AclService;
+import org.springframework.security.acls.expression.AclPermissionEvaluator;
import org.springframework.security.acls.objectidentity.ObjectIdentity;
import org.springframework.security.acls.objectidentity.ObjectIdentityRetrievalStrategy;
import org.springframework.security.acls.sid.SidRetrievalStrategy;
diff --git a/acl/src/test/java/org/springframework/security/acls/objectidentity/ObjectIdentityTests.java b/acl/src/test/java/org/springframework/security/acls/objectidentity/ObjectIdentityTests.java
index 5e1ea5396a..90e0a33f69 100644
--- a/acl/src/test/java/org/springframework/security/acls/objectidentity/ObjectIdentityTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/objectidentity/ObjectIdentityTests.java
@@ -3,7 +3,6 @@ package org.springframework.security.acls.objectidentity;
import static org.junit.Assert.*;
import org.junit.Test;
-import org.springframework.security.acls.IdentityUnavailableException;
/**
* Tests for {@link ObjectIdentityImpl}.