public class JdbcDaoImpl extends org.springframework.jdbc.core.support.JdbcDaoSupport implements BasicAclDao
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.
Modifier and Type | Class and Description |
---|---|
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.
|
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
JdbcDaoImpl() |
Modifier and Type | Method and Description |
---|---|
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) |
public static final String RECIPIENT_USED_FOR_INHERITENCE_MARKER
public static final String DEF_ACLS_BY_OBJECT_IDENTITY_QUERY
public static final String DEF_OBJECT_PROPERTIES_QUERY
protected org.springframework.jdbc.object.MappingSqlQuery aclsByObjectIdentity
protected org.springframework.jdbc.object.MappingSqlQuery objectProperties
protected String convertAclObjectIdentityToString(AclObjectIdentity aclObjectIdentity)
AclObjectIdentity
to a String
that can be located
in the RDBMS.aclObjectIdentity
- to locateString
public BasicAclEntry[] getAcls(AclObjectIdentity aclObjectIdentity)
AclObjectIdentity
.The BasicAclEntry
s 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.
getAcls
in interface BasicAclDao
aclObjectIdentity
- for which ACL information is required (cannot be null
and must be an
instance of NamedEntityObjectIdentity
)null
s inside the array), or null
if not found
or if an incompatible AclObjectIdentity
was requestedpublic org.springframework.jdbc.object.MappingSqlQuery getAclsByObjectIdentity()
public String getAclsByObjectIdentityQuery()
public String getObjectPropertiesQuery()
protected void initDao() throws org.springframework.context.ApplicationContextException
initDao
in class org.springframework.dao.support.DaoSupport
org.springframework.context.ApplicationContextException
protected void initMappingSqlQueries()
public void setAclsByObjectIdentity(org.springframework.jdbc.object.MappingSqlQuery aclsByObjectIdentityQuery)
public void setAclsByObjectIdentityQuery(String queryString)
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.queryString
- The query string to setpublic void setObjectProperties(org.springframework.jdbc.object.MappingSqlQuery objectPropertiesQuery)
public void setObjectPropertiesQuery(String queryString)
Copyright © 2016. All rights reserved.