SEC-676: Remove child ACLs from cache during delete.

This commit is contained in:
Ben Alex 2008-04-05 03:42:16 +00:00
parent 1036074d26
commit 833b76c011
2 changed files with 9 additions and 4 deletions

View File

@ -81,13 +81,13 @@ public class JdbcAclService implements AclService {
public Object mapRow(ResultSet rs, int rowNum)
throws SQLException {
String javaType = rs.getString("class");
String identifier = rs.getString("obj_id");
Long identifier = rs.getLong("obj_id");
return new ObjectIdentityImpl(javaType, identifier);
}
});
return (ObjectIdentityImpl[]) objects.toArray(new ObjectIdentityImpl[] {});
return (ObjectIdentityImpl[]) objects.toArray(new ObjectIdentityImpl[objects.size()]);
}
public Acl readAclById(ObjectIdentity object, Sid[] sids) throws NotFoundException {

View File

@ -20,6 +20,7 @@ import org.springframework.security.Authentication;
import org.springframework.security.GrantedAuthority;
import org.springframework.security.GrantedAuthorityImpl;
import org.springframework.security.acls.AccessControlEntry;
import org.springframework.security.acls.Acl;
import org.springframework.security.acls.AlreadyExistsException;
import org.springframework.security.acls.ChildrenExistException;
import org.springframework.security.acls.MutableAcl;
@ -225,11 +226,15 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo
/**
* Test method that demonstrates eviction failure from cache - SEC-676
*/
/* public void testDeleteAclAlsoDeletesChildren() throws Exception {
public void testDeleteAclAlsoDeletesChildren() throws Exception {
ObjectIdentity topParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
ObjectIdentity middleParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(101));
ObjectIdentity childOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(102));
// Check the childOid really is a child of middleParentOid
Acl childAcl = jdbcMutableAclService.readAclById(childOid);
assertEquals(middleParentOid, childAcl.getParentAcl().getObjectIdentity());
// Delete the mid-parent and test if the child was deleted, as well
jdbcMutableAclService.deleteAcl(middleParentOid, true);
@ -251,7 +256,7 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo
Acl acl = jdbcMutableAclService.readAclById(topParentOid);
assertNotNull(acl);
assertEquals(((MutableAcl) acl).getObjectIdentity(), topParentOid);
}*/
}
public void testConstructorRejectsNullParameters() throws Exception {
try {