Author: elecharny Date: Fri Jul 16 15:27:19 2010 New Revision: 964837 URL: http://svn.apache.org/viewvc?rev=964837&view=rev Log: First step of refactoring : o The subentry cache now use the DN (and not the String DN) as a key, as it spares some useless DN normalizations o Some helper methods has been added and used in the add() operation, they will also be used in the other operations o Many other small cleanup and improvements done o Added some javadoc and comments Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryCache.java directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryCache.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryCache.java?rev=964837&r1=964836&r2=964837&view=diff ============================================================================== --- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryCache.java (original) +++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/subtree/SubentryCache.java Fri Jul 16 15:27:19 2010 @@ -36,7 +36,7 @@ import org.apache.directory.shared.ldap. * * @author Apache Directory Project */ -public class SubentryCache +public class SubentryCache implements Iterable { /** The default cache size limit */ private static final int DEFAULT_CACHE_MAX_SIZE = 1000; @@ -48,14 +48,14 @@ public class SubentryCache private AtomicInteger cacheSize; /** The Subentry cache */ - private final Map cache; + private final Map cache; /** * Creates a new instance of SubentryCache with a default maximum size. */ public SubentryCache() { - cache = new HashMap(); + cache = new HashMap(); cacheSize = new AtomicInteger( 0 ); } @@ -65,7 +65,7 @@ public class SubentryCache */ public SubentryCache( int maxSize ) { - cache = new HashMap(); + cache = new HashMap(); cacheSize = new AtomicInteger( 0 ); cacheMaxSize = maxSize; } @@ -79,7 +79,7 @@ public class SubentryCache */ final Subentry getSubentry( DN dn ) { - return cache.get( dn.getNormName() ); + return cache.get( dn ); } @@ -92,7 +92,8 @@ public class SubentryCache */ final Subentry removeSubentry( DN dn ) { - Subentry oldSubentry = cache.remove( dn.getNormName() ); + int k = dn.hashCode(); + Subentry oldSubentry = cache.remove( dn ); if ( oldSubentry != null ) { @@ -113,12 +114,13 @@ public class SubentryCache */ /* No qualifier */ Subentry addSubentry( DN dn, Subentry subentry ) { + int k = dn.hashCode(); if ( cacheSize.get() > cacheMaxSize ) { // TODO : Throw an exception here } - Subentry oldSubentry = cache.put( dn.getNormName(), subentry ); + Subentry oldSubentry = cache.put( dn, subentry ); if ( oldSubentry == null ) { @@ -136,14 +138,14 @@ public class SubentryCache */ /* No qualifier */ boolean hasSubentry( DN dn ) { - return cache.containsKey( dn.getNormName() ); + return cache.containsKey( dn ); } /** * @return An Iterator over the Subentry's DNs */ - final Iterator nameIterator() + public Iterator iterator() { return cache.keySet().iterator(); }