Browse Source

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

2.0.x
Ben Alex 18 years ago
parent
commit
833b76c011
  1. 4
      acl/src/main/java/org/springframework/security/acls/jdbc/JdbcAclService.java
  2. 9
      acl/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java

4
acl/src/main/java/org/springframework/security/acls/jdbc/JdbcAclService.java

@ -81,13 +81,13 @@ public class JdbcAclService implements AclService { @@ -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 {

9
acl/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java

@ -20,6 +20,7 @@ import org.springframework.security.Authentication; @@ -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 @@ -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 @@ -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 {

Loading…
Cancel
Save