org.acegisecurity.acl.basic.jdbc
Class JdbcDaoImpl

java.lang.Object
  extended by org.springframework.dao.support.DaoSupport
      extended by org.springframework.jdbc.core.support.JdbcDaoSupport
          extended by org.acegisecurity.acl.basic.jdbc.JdbcDaoImpl
All Implemented Interfaces:
BasicAclDao, org.springframework.beans.factory.InitializingBean
Direct Known Subclasses:
JdbcExtendedDaoImpl

public class JdbcDaoImpl
extends org.springframework.jdbc.core.support.JdbcDaoSupport
implements BasicAclDao

Retrieves ACL details from a JDBC location.

A default database structure is assumed. This may be overridden by setting the default query strings to use. If this does not provide enough flexibility, another strategy would be to subclass this class and override the MappingSqlQuery instance used, via the initMappingSqlQueries() extension point.


Nested Class Summary
protected  class JdbcDaoImpl.AclDetailsHolder
          Used to hold details of a domain object instance's properties, or an individual ACL entry.
protected  class JdbcDaoImpl.AclsByObjectIdentityMapping
          Query object to look up individual ACL entries.
protected  class JdbcDaoImpl.ObjectPropertiesMapping
          Query object to look up properties for an object identity.
 
Field Summary
protected  org.springframework.jdbc.object.MappingSqlQuery aclsByObjectIdentity
           
static String DEF_ACLS_BY_OBJECT_IDENTITY_QUERY
           
static String DEF_OBJECT_PROPERTIES_QUERY
           
protected  org.springframework.jdbc.object.MappingSqlQuery objectProperties
           
static String RECIPIENT_USED_FOR_INHERITENCE_MARKER
           
 
Constructor Summary
JdbcDaoImpl()
           
 
Method Summary
protected  String convertAclObjectIdentityToString(AclObjectIdentity aclObjectIdentity)
          Responsible for covering a AclObjectIdentity to a String that can be located in the RDBMS.
 BasicAclEntry[] getAcls(AclObjectIdentity aclObjectIdentity)
          Returns the ACLs associated with the requested AclObjectIdentity.
 org.springframework.jdbc.object.MappingSqlQuery getAclsByObjectIdentity()
           
 String getAclsByObjectIdentityQuery()
           
 String getObjectPropertiesQuery()
           
protected  void initDao()
           
protected  void initMappingSqlQueries()
          Extension point to allow other MappingSqlQuery objects to be substituted in a subclass
 void setAclsByObjectIdentity(org.springframework.jdbc.object.MappingSqlQuery aclsByObjectIdentityQuery)
           
 void setAclsByObjectIdentityQuery(String queryString)
          Allows the default query string used to retrieve ACLs based on object identity to be overriden, if default table or column names need to be changed.
 void setObjectProperties(org.springframework.jdbc.object.MappingSqlQuery objectPropertiesQuery)
           
 void setObjectPropertiesQuery(String queryString)
           
 
Methods inherited from class org.springframework.jdbc.core.support.JdbcDaoSupport
checkDaoConfig, closeConnectionIfNecessary, createJdbcTemplate, getConnection, getDataSource, getExceptionTranslator, getJdbcTemplate, releaseConnection, setDataSource, setJdbcTemplate
 
Methods inherited from class org.springframework.dao.support.DaoSupport
afterPropertiesSet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RECIPIENT_USED_FOR_INHERITENCE_MARKER

public static final String RECIPIENT_USED_FOR_INHERITENCE_MARKER
See Also:
Constant Field Values

DEF_ACLS_BY_OBJECT_IDENTITY_QUERY

public static final String DEF_ACLS_BY_OBJECT_IDENTITY_QUERY
See Also:
Constant Field Values

DEF_OBJECT_PROPERTIES_QUERY

public static final String DEF_OBJECT_PROPERTIES_QUERY
See Also:
Constant Field Values

aclsByObjectIdentity

protected org.springframework.jdbc.object.MappingSqlQuery aclsByObjectIdentity

objectProperties

protected org.springframework.jdbc.object.MappingSqlQuery objectProperties
Constructor Detail

JdbcDaoImpl

public JdbcDaoImpl()
Method Detail

convertAclObjectIdentityToString

protected String convertAclObjectIdentityToString(AclObjectIdentity aclObjectIdentity)
Responsible for covering a AclObjectIdentity to a String that can be located in the RDBMS.

Parameters:
aclObjectIdentity - to locate
Returns:
the object identity as a String

getAcls

public BasicAclEntry[] getAcls(AclObjectIdentity aclObjectIdentity)
Returns the ACLs associated with the requested AclObjectIdentity.

The BasicAclEntrys returned by this method will have String-based recipients. This will not be a problem if you are using the GrantedAuthorityEffectiveAclsResolver, which is the default configured against BasicAclProvider.

This method will only return ACLs for requests where the AclObjectIdentity is of type NamedEntityObjectIdentity. Of course, you can subclass or replace this class and support your own custom AclObjectIdentity types.

Specified by:
getAcls in interface BasicAclDao
Parameters:
aclObjectIdentity - for which ACL information is required (cannot be null and must be an instance of NamedEntityObjectIdentity)
Returns:
the ACLs that apply (without any nulls inside the array), or null if not found or if an incompatible AclObjectIdentity was requested

getAclsByObjectIdentity

public org.springframework.jdbc.object.MappingSqlQuery getAclsByObjectIdentity()

getAclsByObjectIdentityQuery

public String getAclsByObjectIdentityQuery()

getObjectPropertiesQuery

public String getObjectPropertiesQuery()

initDao

protected void initDao()
                throws org.springframework.context.ApplicationContextException
Overrides:
initDao in class org.springframework.dao.support.DaoSupport
Throws:
org.springframework.context.ApplicationContextException

initMappingSqlQueries

protected void initMappingSqlQueries()
Extension point to allow other MappingSqlQuery objects to be substituted in a subclass


setAclsByObjectIdentity

public void setAclsByObjectIdentity(org.springframework.jdbc.object.MappingSqlQuery aclsByObjectIdentityQuery)

setAclsByObjectIdentityQuery

public void setAclsByObjectIdentityQuery(String queryString)
Allows the default query string used to retrieve ACLs based on object identity to be overriden, if default table or column names need to be changed. The default query is DEF_ACLS_BY_OBJECT_IDENTITY_QUERY; when modifying this query, ensure that all returned columns are mapped back to the same column names as in the default query.

Parameters:
queryString - The query string to set

setObjectProperties

public void setObjectProperties(org.springframework.jdbc.object.MappingSqlQuery objectPropertiesQuery)

setObjectPropertiesQuery

public void setObjectPropertiesQuery(String queryString)


Copyright © 2004-2011 Interface21, Inc. All Rights Reserved.