mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-29 15:22:15 +00:00
Performance optimisations thanks to Paulo Neves.
This commit is contained in:
parent
71b8f3e515
commit
4e55780e7c
@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -30,6 +30,7 @@ import org.apache.commons.logging.Log;
|
|||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
@ -98,6 +99,7 @@ import java.util.Set;
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author Ben Alex
|
* @author Ben Alex
|
||||||
|
* @author Paulo Neves
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class BasicAclEntryAfterInvocationCollectionFilteringProvider
|
public class BasicAclEntryAfterInvocationCollectionFilteringProvider
|
||||||
@ -139,11 +141,13 @@ public class BasicAclEntryAfterInvocationCollectionFilteringProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
Assert.notNull(processConfigAttribute, "A processConfigAttribute is mandatory");
|
Assert.notNull(processConfigAttribute,
|
||||||
|
"A processConfigAttribute is mandatory");
|
||||||
Assert.notNull(aclManager, "An aclManager is mandatory");
|
Assert.notNull(aclManager, "An aclManager is mandatory");
|
||||||
|
|
||||||
if ((requirePermission == null) || (requirePermission.length == 0)) {
|
if ((requirePermission == null) || (requirePermission.length == 0)) {
|
||||||
throw new IllegalArgumentException("One or more requirePermission entries is mandatory");
|
throw new IllegalArgumentException(
|
||||||
|
"One or more requirePermission entries is mandatory");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,6 +306,10 @@ class CollectionFilterer implements Filterer {
|
|||||||
//~ Instance fields ========================================================
|
//~ Instance fields ========================================================
|
||||||
|
|
||||||
private Collection collection;
|
private Collection collection;
|
||||||
|
|
||||||
|
// collectionIter offers significant performance optimisations (as
|
||||||
|
// per acegisecurity-developer mailing list conversation 19/5/05)
|
||||||
|
private Iterator collectionIter;
|
||||||
private Set removeList;
|
private Set removeList;
|
||||||
|
|
||||||
//~ Constructors ===========================================================
|
//~ Constructors ===========================================================
|
||||||
@ -346,14 +354,16 @@ class CollectionFilterer implements Filterer {
|
|||||||
* @see net.sf.acegisecurity.afterinvocation.Filterer#iterator()
|
* @see net.sf.acegisecurity.afterinvocation.Filterer#iterator()
|
||||||
*/
|
*/
|
||||||
public Iterator iterator() {
|
public Iterator iterator() {
|
||||||
return collection.iterator();
|
collectionIter = collection.iterator();
|
||||||
|
|
||||||
|
return collectionIter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see net.sf.acegisecurity.afterinvocation.Filterer#remove(java.lang.Object)
|
* @see net.sf.acegisecurity.afterinvocation.Filterer#remove(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public void remove(Object object) {
|
public void remove(Object object) {
|
||||||
removeList.add(object);
|
collectionIter.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
</properties>
|
</properties>
|
||||||
<body>
|
<body>
|
||||||
<release version="0.9.0" date="In CVS">
|
<release version="0.9.0" date="In CVS">
|
||||||
|
<action dev="benalex" type="update">Greatly improve BasicAclEntryAfterInvocationCollectionFilteringProvider performance with large collections (if the principal has access to relatively few collection elements)</action>
|
||||||
<action dev="benalex" type="update">Reorder DaoAuthenticationProvider exception logic as per developer list discussion</action>
|
<action dev="benalex" type="update">Reorder DaoAuthenticationProvider exception logic as per developer list discussion</action>
|
||||||
<action dev="benalex" type="update">ContextHolder refactored and replaced by SecurityContextHolder</action>
|
<action dev="benalex" type="update">ContextHolder refactored and replaced by SecurityContextHolder</action>
|
||||||
<action dev="benalex" type="fix">Made AclEntry Serializable (correct issue with BasicAclEntryCache)</action>
|
<action dev="benalex" type="fix">Made AclEntry Serializable (correct issue with BasicAclEntryCache)</action>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user