ソースを参照

Relocated JdbcDaoExtendedImpl.convertAclObjectIdentityToString to superclass (pursuant to suggestion made by Tim Kettering on acegisecurity-developer).

Ben Alex 20 年 前
コミット
55f5c3397a

+ 32 - 10
core/src/main/java/org/acegisecurity/acl/basic/jdbc/JdbcDaoImpl.java

@@ -1,4 +1,4 @@
-/* Copyright 2004 Acegi Technology Pty Limited
+/* Copyright 2004, 2005 Acegi Technology Pty Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -106,16 +106,13 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements BasicAclDao {
      *         <code>AclObjectIdentity</code> was requested
      */
     public BasicAclEntry[] getAcls(AclObjectIdentity aclObjectIdentity) {
-        // Ensure we can process this type of AclObjectIdentity
-        if (!(aclObjectIdentity instanceof NamedEntityObjectIdentity)) {
-            return null;
-        }
-
-        NamedEntityObjectIdentity neoi = (NamedEntityObjectIdentity) aclObjectIdentity;
+        String aclObjectIdentityString;
 
-        // Compose the String we expect to find in the RDBMS
-        String aclObjectIdentityString = neoi.getClassname() + ":"
-            + neoi.getId();
+        try {
+            aclObjectIdentityString = convertAclObjectIdentityToString(aclObjectIdentity);
+        } catch (IllegalArgumentException unsupported) {
+            return null; // pursuant to contract described in JavaDocs above
+        }
 
         // Lookup the object's main properties from the RDBMS (guaranteed no nulls)
         List objects = objectProperties.execute(aclObjectIdentityString);
@@ -189,6 +186,31 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements BasicAclDao {
         return objectPropertiesQuery;
     }
 
+    /**
+     * Responsible for covering a <code>AclObjectIdentity</code> to a
+     * <code>String</code> that can be located in the RDBMS.
+     *
+     * @param aclObjectIdentity to locate
+     *
+     * @return the object identity as a <code>String</code>
+     *
+     * @throws IllegalArgumentException DOCUMENT ME!
+     */
+    protected String convertAclObjectIdentityToString(
+        AclObjectIdentity aclObjectIdentity) {
+        // Ensure we can process this type of AclObjectIdentity
+        if (!(aclObjectIdentity instanceof NamedEntityObjectIdentity)) {
+            throw new IllegalArgumentException(
+                "Only aclObjectIdentity of type NamedEntityObjectIdentity supported (was passed: "
+                + aclObjectIdentity + ")");
+        }
+
+        NamedEntityObjectIdentity neoi = (NamedEntityObjectIdentity) aclObjectIdentity;
+
+        // Compose the String we expect to find in the RDBMS
+        return neoi.getClassname() + ":" + neoi.getId();
+    }
+
     protected void initDao() throws ApplicationContextException {
         initMappingSqlQueries();
     }

+ 1 - 26
core/src/main/java/org/acegisecurity/acl/basic/jdbc/JdbcExtendedDaoImpl.java

@@ -1,4 +1,4 @@
-/* Copyright 2004 Acegi Technology Pty Limited
+/* Copyright 2004, 2005 Acegi Technology Pty Limited
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +18,6 @@ package net.sf.acegisecurity.acl.basic.jdbc;
 import net.sf.acegisecurity.acl.basic.AclObjectIdentity;
 import net.sf.acegisecurity.acl.basic.BasicAclEntry;
 import net.sf.acegisecurity.acl.basic.BasicAclExtendedDao;
-import net.sf.acegisecurity.acl.basic.NamedEntityObjectIdentity;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -295,30 +294,6 @@ public class JdbcExtendedDaoImpl extends JdbcDaoImpl
         aclPermissionUpdate = new AclPermissionUpdate(getDataSource());
     }
 
-    /**
-     * Responsible for covering a <code>AclObjectIdentity</code> to a
-     * <code>String</code> that can be located in the RDBMS.
-     *
-     * @param aclObjectIdentity to locate
-     *
-     * @return the object identity as a <code>String</code>
-     *
-     * @throws IllegalArgumentException DOCUMENT ME!
-     */
-    String convertAclObjectIdentityToString(AclObjectIdentity aclObjectIdentity) {
-        // Ensure we can process this type of AclObjectIdentity
-        if (!(aclObjectIdentity instanceof NamedEntityObjectIdentity)) {
-            throw new IllegalArgumentException(
-                "Only aclObjectIdentity of type NamedEntityObjectIdentity supported (was passed: "
-                + aclObjectIdentity + ")");
-        }
-
-        NamedEntityObjectIdentity neoi = (NamedEntityObjectIdentity) aclObjectIdentity;
-
-        // Compose the String we expect to find in the RDBMS
-        return neoi.getClassname() + ":" + neoi.getId();
-    }
-
     /**
      * Convenience method that creates an acl_object_identity record if
      * required.

+ 1 - 0
doc/xdocs/changes.xml

@@ -58,6 +58,7 @@
       <action dev="smccrory" type="update">Added debug statement to AbstractTicketValidator to help with Acegi+CAS+SSL setup (thanks Seth Ladd for the patch) (see http://opensource.atlassian.com/projects/spring/browse/SEC-34)</action>
       <action dev="smccrory" type="update">Added package.html files to empty resources dirs so CVS serves them to new developers</action>
       <action dev="smccrory" type="update">Added package.html files to reamining java packages (see http://opensource.atlassian.com/projects/spring/browse/SEC-41)</action>
+      <action dev="benalex" type="update">Relocated JdbcDaoExtendedImpl.convertAclObjectIdentityToString to superclass</action>
     </release>
     <release version="0.8.3" date="2005-05-12">
       <action dev="benalex" type="fix">HttpSessionContextIntegrationFilter elegantly handles IOExceptions and ServletExceptions within filter chain (see http://opensource.atlassian.com/projects/spring/browse/SEC-20)</action>