|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.security.acls.jdbc.JdbcAclService org.springframework.security.acls.jdbc.JdbcMutableAclService
public class JdbcMutableAclService
Provides a base JDBC implementation of MutableAclService
.
The default settings are for HSQLDB. If you are using a different database you
will probably need to set the sidIdentityQuery
and
classIdentityQuery
properties appropriately. The other queries,
SQL inserts and updates can also be customized to accomodate schema variations, but must produce results
consistent with those expected by the defaults.
See the appendix of the Spring Security reference manual for more information on the expected schema and how it is used. Information on using PostgreSQL is also included.
Field Summary |
---|
Fields inherited from class org.springframework.security.acls.jdbc.JdbcAclService |
---|
jdbcTemplate, log |
Constructor Summary | |
---|---|
JdbcMutableAclService(DataSource dataSource,
LookupStrategy lookupStrategy,
AclCache aclCache)
|
Method Summary | |
---|---|
MutableAcl |
createAcl(ObjectIdentity objectIdentity)
Creates an empty Acl object in the database. |
protected void |
createEntries(MutableAcl acl)
Creates a new row in acl_entry for every ACE defined in the passed MutableAcl object. |
protected void |
createObjectIdentity(ObjectIdentity object,
Sid owner)
Creates an entry in the acl_object_identity table for the passed ObjectIdentity. |
protected Long |
createOrRetrieveClassPrimaryKey(String type,
boolean allowCreate)
Retrieves the primary key from acl_class, creating a new row if needed and the allowCreate property is true. |
protected Long |
createOrRetrieveSidPrimaryKey(Sid sid,
boolean allowCreate)
Retrieves the primary key from acl_sid, creating a new row if needed and the allowCreate property is true. |
void |
deleteAcl(ObjectIdentity objectIdentity,
boolean deleteChildren)
Removes the specified entry from the database. |
protected void |
deleteEntries(Long oidPrimaryKey)
Deletes all ACEs defined in the acl_entry table belonging to the presented ObjectIdentity primary key. |
protected void |
deleteObjectIdentity(Long oidPrimaryKey)
Deletes a single row from acl_object_identity that is associated with the presented ObjectIdentity primary key. |
protected Long |
retrieveObjectIdentityPrimaryKey(ObjectIdentity oid)
Retrieves the primary key from the acl_object_identity table for the passed ObjectIdentity. |
void |
setClassIdentityQuery(String classIdentityQuery)
Sets the query that will be used to retrieve the identity of a newly created row in the acl_class table. |
void |
setClassPrimaryKeyQuery(String selectClassPrimaryKey)
|
void |
setDeleteEntryByObjectIdentityForeignKeySql(String deleteEntryByObjectIdentityForeignKey)
|
void |
setDeleteObjectIdentityByPrimaryKeySql(String deleteObjectIdentityByPrimaryKey)
|
void |
setForeignKeysInDatabase(boolean foreignKeysInDatabase)
|
void |
setInsertClassSql(String insertClass)
|
void |
setInsertEntrySql(String insertEntry)
|
void |
setInsertObjectIdentitySql(String insertObjectIdentity)
|
void |
setInsertSidSql(String insertSid)
|
void |
setObjectIdentityPrimaryKeyQuery(String selectObjectIdentityPrimaryKey)
|
void |
setSidIdentityQuery(String sidIdentityQuery)
Sets the query that will be used to retrieve the identity of a newly created row in the acl_sid table. |
void |
setSidPrimaryKeyQuery(String selectSidPrimaryKey)
|
void |
setUpdateObjectIdentity(String updateObjectIdentity)
|
MutableAcl |
updateAcl(MutableAcl acl)
This implementation will simply delete all ACEs in the database and recreate them on each invocation of this method. |
protected void |
updateObjectIdentity(MutableAcl acl)
Updates an existing acl_object_identity row, with new information presented in the passed MutableAcl object. |
Methods inherited from class org.springframework.security.acls.jdbc.JdbcAclService |
---|
findChildren, readAclById, readAclById, readAclsById, readAclsById, setFindChildrenQuery |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.springframework.security.acls.model.AclService |
---|
findChildren, readAclById, readAclById, readAclsById, readAclsById |
Constructor Detail |
---|
public JdbcMutableAclService(DataSource dataSource, LookupStrategy lookupStrategy, AclCache aclCache)
Method Detail |
---|
public MutableAcl createAcl(ObjectIdentity objectIdentity) throws AlreadyExistsException
MutableAclService
Acl
object in the database. It will have no entries. The returned object
will then be used to add entries.
createAcl
in interface MutableAclService
objectIdentity
- the object identity to create
AlreadyExistsException
- if the passed object identity already has a recordprotected void createEntries(MutableAcl acl)
acl
- containing the ACEs to insertprotected void createObjectIdentity(ObjectIdentity object, Sid owner)
object
- to represent an acl_object_identity forowner
- for the SID column (will be created if there is no acl_sid entry for this particular Sid already)protected Long createOrRetrieveClassPrimaryKey(String type, boolean allowCreate)
clazz
- to find or create an entry for (this implementation uses the fully-qualified class name String)allowCreate
- true if creation is permitted if not found
protected Long createOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate)
sid
- to find or createallowCreate
- true if creation is permitted if not found
IllegalArgumentException
- if the Sid is not a recognized implementation.public void deleteAcl(ObjectIdentity objectIdentity, boolean deleteChildren) throws ChildrenExistException
MutableAclService
deleteAcl
in interface MutableAclService
objectIdentity
- the object identity to removedeleteChildren
- whether to cascade the delete to children
ChildrenExistException
- if the deleteChildren argument was false
but children existprotected void deleteEntries(Long oidPrimaryKey)
oidPrimaryKey
- the rows in acl_entry to deleteprotected void deleteObjectIdentity(Long oidPrimaryKey)
We do not delete any entries from acl_class, even if no classes are using that class any longer. This is a deadlock avoidance approach.
oidPrimaryKey
- to delete the acl_object_identityprotected Long retrieveObjectIdentityPrimaryKey(ObjectIdentity oid)
createObjectIdentity(ObjectIdentity, Sid)
instead).
oid
- to find
public MutableAcl updateAcl(MutableAcl acl) throws NotFoundException
MutableAcl
.
updateAcl
in interface MutableAclService
acl
- to modify
NotFoundException
- if the relevant record could not be found (did you remember to use MutableAclService.createAcl(ObjectIdentity)
to create the object, rather than creating it with the new
keyword?)protected void updateObjectIdentity(MutableAcl acl)
acl
- to modify (a row must already exist in acl_object_identity)
NotFoundException
- if the ACL could not be found to update.public void setClassIdentityQuery(String classIdentityQuery)
classIdentityQuery
- the query, which should return the identifier. Defaults to call identity()public void setSidIdentityQuery(String sidIdentityQuery)
sidIdentityQuery
- the query, which should return the identifier. Defaults to call identity()public void setDeleteEntryByObjectIdentityForeignKeySql(String deleteEntryByObjectIdentityForeignKey)
public void setDeleteObjectIdentityByPrimaryKeySql(String deleteObjectIdentityByPrimaryKey)
public void setInsertClassSql(String insertClass)
public void setInsertEntrySql(String insertEntry)
public void setInsertObjectIdentitySql(String insertObjectIdentity)
public void setInsertSidSql(String insertSid)
public void setClassPrimaryKeyQuery(String selectClassPrimaryKey)
public void setObjectIdentityPrimaryKeyQuery(String selectObjectIdentityPrimaryKey)
public void setSidPrimaryKeyQuery(String selectSidPrimaryKey)
public void setUpdateObjectIdentity(String updateObjectIdentity)
public void setForeignKeysInDatabase(boolean foreignKeysInDatabase)
foreignKeysInDatabase
- if false this class will perform additional FK constrain checking, which may
cause deadlocks (the default is true, so deadlocks are avoided but the database is expected to enforce FKs)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |