You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2008/05/10 18:30:51 UTC

svn commit: r655126 [4/9] - in /directory/sandbox/akarasulu/bigbang: apacheds/ apacheds/apacheds-jdbm/ apacheds/apacheds-jdbm/src/ apacheds/apacheds-jdbm/src/etc/ apacheds/apacheds-jdbm/src/examples/ apacheds/apacheds-jdbm/src/main/ apacheds/apacheds-j...

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/PartitionNexusProxy.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/PartitionNexusProxy.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/PartitionNexusProxy.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/PartitionNexusProxy.java Sat May 10 09:30:45 2008
@@ -31,7 +31,6 @@
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.ServiceUnavailableException;
-import javax.naming.directory.Attributes;
 import javax.naming.directory.SearchControls;
 import javax.naming.event.EventContext;
 import javax.naming.event.NamingListener;
@@ -41,11 +40,14 @@
 import org.apache.directory.server.core.authn.AuthenticationInterceptor;
 import org.apache.directory.server.core.authz.AciAuthorizationInterceptor;
 import org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor;
+import org.apache.directory.server.core.changelog.ChangeLogInterceptor;
+import org.apache.directory.server.core.collective.CollectiveAttributeInterceptor;
 import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.enumeration.SearchResultFilter;
 import org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration;
 import org.apache.directory.server.core.event.EventInterceptor;
+import org.apache.directory.server.core.exception.ExceptionInterceptor;
 import org.apache.directory.server.core.interceptor.InterceptorChain;
 import org.apache.directory.server.core.interceptor.context.AddContextPartitionOperationContext;
 import org.apache.directory.server.core.interceptor.context.AddOperationContext;
@@ -80,7 +82,6 @@
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.name.LdapDN;
 
-
 /**
  * A decorator that wraps other {@link PartitionNexus} to enable
  * {@link InterceptorChain} and {@link InvocationStack} support.
@@ -107,6 +108,8 @@
      * safe to use set of bypass instructions to lookup raw entries excluding operational attributes
      */
     public static final Collection<String> LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS;
+    
+    public static final Collection<String> GET_ROOT_DSE_BYPASS;
 
     /**
      * Bypass String to use when ALL interceptors should be skipped
@@ -187,6 +190,24 @@
         c.add( EventInterceptor.class.getName() );
         c.add( TriggerInterceptor.class.getName() );
         LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS = Collections.unmodifiableCollection( c );
+        
+        
+        c = new HashSet<String>();
+        c.add( NormalizationInterceptor.class.getName() );
+        //c.add( AuthenticationInterceptor.class.getName() );
+        c.add( ChangeLogInterceptor.class.getName() );
+        c.add( ReferralInterceptor.class.getName() );
+        c.add( AciAuthorizationInterceptor.class.getName() );
+        c.add( DefaultAuthorizationInterceptor.class.getName() );
+        c.add( ExceptionInterceptor.class.getName() );
+        c.add( OperationalAttributeInterceptor.class.getName() );
+        c.add( SchemaInterceptor.class.getName() );
+        c.add( SubentryInterceptor.class.getName() );
+        c.add( CollectiveAttributeInterceptor.class.getName() );
+        c.add( EventInterceptor.class.getName() );
+        c.add( TriggerInterceptor.class.getName() );
+        GET_ROOT_DSE_BYPASS = Collections.unmodifiableCollection( c );
+
     }
 
 
@@ -227,12 +248,6 @@
     }
 
 
-    public Attributes getContextEntryAttr()
-    {
-        throw new UnsupportedOperationException( "Not supported by PartitionNexusProxy" );
-    }
-
-
     public void setContextEntry( ServerEntry contextEntry )
     {
         throw new UnsupportedOperationException( "Not supported by PartitionNexusProxy" );
@@ -323,17 +338,15 @@
     public LdapDN getMatchedName( GetMatchedNameOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[] {opContext};
-        stack.push( new Invocation( this, caller, "getMatchedName", args, bypass ) );
-
+        opContext.push( new Invocation( this, caller, "getMatchedName", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().getMatchedName( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -347,16 +360,15 @@
     public LdapDN getSuffix( GetSuffixOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[] {opContext};
-        stack.push( new Invocation( this, caller, "getSuffixDn", args, bypass ) );
+        opContext.push( new Invocation( this, caller, "getSuffixDn", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().getSuffix( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -370,16 +382,15 @@
     public Iterator<String> listSuffixes( ListSuffixOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[] {};
-        stack.push( new Invocation( this, caller, "listSuffixes", args, bypass ) );
+        opContext.push( new Invocation( this, caller, "listSuffices", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().listSuffixes( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -393,16 +404,15 @@
     public boolean compare( CompareOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "compare", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "compare", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().compare( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -416,16 +426,15 @@
     public void delete( DeleteOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "delete", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "delete", bypass ) );
+        
         try
         {
             service.getInterceptorChain().delete( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -439,16 +448,15 @@
     public void add( AddOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "add", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "add", bypass ) );
+        
         try
         {
             service.getInterceptorChain().add( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -462,17 +470,15 @@
     public void modify( ModifyOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "modify", new Object[]
-                {opContext}, bypass ) );
-
+        opContext.push( new Invocation( this, caller, "modify", bypass ) );
+        
         try
         {
             service.getInterceptorChain().modify( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -487,16 +493,15 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "list", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "list", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().list( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -557,16 +562,15 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "search", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "search", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().search( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -611,16 +615,15 @@
     public ServerEntry lookup( LookupOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "lookup", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "lookup", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().lookup( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -633,16 +636,15 @@
     public boolean hasEntry( EntryOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "hasEntry", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "hasEntry", bypass ) );
+        
         try
         {
             return service.getInterceptorChain().hasEntry( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -656,17 +658,15 @@
     public void rename( RenameOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[]
-                {opContext};
-        stack.push( new Invocation( this, caller, "rename", args, bypass ) );
+        opContext.push( new Invocation( this, caller, "rename", bypass ) );
+        
         try
         {
             service.getInterceptorChain().rename( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -680,16 +680,15 @@
     public void move( MoveOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "move", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "move", bypass ) );
+        
         try
         {
             service.getInterceptorChain().move( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -704,17 +703,15 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[]
-                {opContext};
-        stack.push( new Invocation( this, caller, "moveAndRename", args, bypass ) );
+        opContext.push( new Invocation( this, caller, "moveAndRename", bypass ) );
+        
         try
         {
             service.getInterceptorChain().moveAndRename( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -729,36 +726,31 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[]
-                {opContext};
-
-        stack.push( new Invocation( this, caller, "bind", args, bypass ) );
-
+        opContext.push( new Invocation( this, caller, "bind", bypass ) );
+        
         try
         {
             service.getInterceptorChain().bind( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
+
     public void unbind( UnbindOperationContext opContext, Collection<String> bypass ) throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        Object[] args = new Object[]
-                {opContext};
-        stack.push( new Invocation( this, caller, "unbind", args, bypass ) );
+        opContext.push( new Invocation( this, caller, "unbind", bypass ) );
+        
         try
         {
             service.getInterceptorChain().unbind( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -783,14 +775,14 @@
             {
                 if ( ROOT_DSE_ALL == null )
                 {
-                    ROOT_DSE_ALL = getRootDSE( null, null );
+                    ROOT_DSE_ALL = getRootDSE( opContext, null );
                 }
             }
 
             return ROOT_DSE_ALL;
         }
 
-        return getRootDSE( null, null );
+        return getRootDSE( opContext, null );
     }
 
 
@@ -798,15 +790,15 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "getRootDSE", null, bypass ) );
+        opContext.push( new Invocation( this, caller, "getRootDSE", GET_ROOT_DSE_BYPASS ) );
+        
         try
         {
             return service.getInterceptorChain().getRootDSE( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -821,16 +813,15 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "addContextPartition", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "addContextPartition", bypass ) );
+        
         try
         {
             service.getInterceptorChain().addContextPartition( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -845,16 +836,15 @@
             throws NamingException
     {
         ensureStarted();
-        InvocationStack stack = InvocationStack.getInstance();
-        stack.push( new Invocation( this, caller, "removeContextPartition", new Object[]
-                {opContext}, bypass ) );
+        opContext.push( new Invocation( this, caller, "removeContextPartition", bypass ) );
+        
         try
         {
             service.getInterceptorChain().removeContextPartition( opContext );
         }
         finally
         {
-            stack.pop();
+            opContext.pop();
         }
     }
 
@@ -873,6 +863,13 @@
         service.getPartitionNexus().registerSupportedExtensions( extensionOids );
     }
 
+
+    public void registerSupportedSaslMechanisms( Set<String> supportedSaslMechanisms ) throws NamingException
+    {
+        service.getPartitionNexus().registerSupportedSaslMechanisms( supportedSaslMechanisms );
+    }
+
+
     // -----------------------------------------------------------------------
     // EventContext and EventDirContext notification methods
     // -----------------------------------------------------------------------

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java Sat May 10 09:30:45 2008
@@ -22,7 +22,6 @@
 
 import org.apache.directory.server.core.entry.DefaultServerEntry;
 import org.apache.directory.server.core.entry.ServerEntry;
-import org.apache.directory.server.core.entry.ServerEntryUtils;
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.enumeration.SearchResultEnumeration;
 import org.apache.directory.server.core.interceptor.context.AddOperationContext;
@@ -45,12 +44,10 @@
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.exception.LdapContextNotEmptyException;
 import org.apache.directory.shared.ldap.exception.LdapNameNotFoundException;
-import org.apache.directory.shared.ldap.message.AttributesImpl;
 import org.apache.directory.shared.ldap.name.LdapDN;
 
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
 import javax.naming.directory.SearchControls;
 import java.util.Collections;
 import java.util.HashSet;
@@ -96,9 +93,6 @@
     /** The rootDSE context */
     protected ServerEntry contextEntry;
 
-    /** The rootDSE context */
-    protected Attributes contextEntryAttr;
-
 
     // ------------------------------------------------------------------------
     // C O N S T R U C T O R S
@@ -161,24 +155,6 @@
 
 
     /**
-     * Returns root entry for this BTreePartition.
-     *
-     * @return the root suffix entry for this BTreePartition
-     */
-    public Attributes getContextEntryAttr()
-    {
-        if ( contextEntryAttr != null )
-        {
-            return ( Attributes ) contextEntryAttr.clone();
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-
-    /**
      * Sets root entry for this BTreePartition.
      *
      * @param rootEntry the root suffix entry of this BTreePartition
@@ -201,17 +177,6 @@
 
     
     /**
-     * Sets root entry for this BTreePartition.
-     *
-     * @param rootEntryAttr the root suffix entry of this BTreePartition
-     */
-    public void setContextEntry( Attributes rootEntryAttr )
-    {
-        this.contextEntryAttr = ( AttributesImpl ) rootEntryAttr.clone();
-    }
-
-    
-    /**
      * Gets the unique identifier for this partition.
      *
      * @return the unique identifier for this partition
@@ -331,10 +296,7 @@
 
     public ServerEntry lookup( LookupOperationContext opContext ) throws NamingException
     {
-        ServerEntry entry = ServerEntryUtils.toServerEntry( 
-            lookup( getEntryId( opContext.getDn().getNormName() ) ),
-                opContext.getDn(),
-                opContext.getRegistries() );
+        ServerEntry entry = lookup( getEntryId( opContext.getDn().getNormName() ) );
 
         if ( ( opContext.getAttrsId() == null ) || ( opContext.getAttrsId().size() == 0 ) )
         {
@@ -384,7 +346,7 @@
 
     public void inspect() throws Exception
     {
-        PartitionViewer viewer = new PartitionViewer( this );
+        PartitionViewer viewer = new PartitionViewer( this, registries );
         viewer.execute();
     }
 
@@ -570,7 +532,7 @@
     public abstract String getEntryUpdn( String dn ) throws NamingException;
 
 
-    public abstract Attributes lookup( Long id ) throws NamingException;
+    public abstract ServerEntry lookup( Long id ) throws NamingException;
 
 
     public abstract void delete( Long id ) throws NamingException;
@@ -582,7 +544,7 @@
     public abstract int getChildCount( Long id ) throws NamingException;
 
 
-    public abstract Attributes getSuffixEntry() throws NamingException;
+    public abstract ServerEntry getSuffixEntry() throws NamingException;
 
 
     public abstract void setProperty( String key, String value ) throws NamingException;
@@ -597,7 +559,7 @@
     public abstract Iterator<String> getSystemIndices();
 
 
-    public abstract Attributes getIndices( Long id ) throws NamingException;
+    public abstract ServerEntry getIndices( Long id ) throws NamingException;
 
 
     /**

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreeSearchResultEnumeration.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreeSearchResultEnumeration.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreeSearchResultEnumeration.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreeSearchResultEnumeration.java Sat May 10 09:30:45 2008
@@ -20,18 +20,17 @@
 package org.apache.directory.server.core.partition.impl.btree;
 
 
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
+import java.util.Set;
 
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
 
 import org.apache.directory.server.core.entry.DefaultServerEntry;
 import org.apache.directory.server.core.entry.ServerAttribute;
 import org.apache.directory.server.core.entry.ServerEntry;
-import org.apache.directory.server.core.entry.ServerEntryUtils;
 import org.apache.directory.server.core.entry.ServerSearchResult;
 import org.apache.directory.server.core.enumeration.SearchResultEnumeration;
 import org.apache.directory.server.schema.registries.Registries;
@@ -112,16 +111,20 @@
     public ServerSearchResult next() throws NamingException
     {
         IndexEntry rec = underlying.next();
-        ServerEntry entry;
-        String name = partition.getEntryUpdn( (Long)rec.getId() );
+        ServerEntry entry = rec.getEntry();
+        String name = partition.getEntryUpdn( ( Long )rec.getId() );
         LdapDN dn = new LdapDN( name );
 
-        if ( null == rec.getObject() )
+        if ( null == entry )
         {
-            rec.setObject( partition.lookup( (Long)rec.getId() ) );
+            rec.setObject( partition.lookup( ( Long ) rec.getId() ) );
+            rec.setEntry( entry );
+            entry = ( ServerEntry ) entry.clone();
         }
+        
+        LdapDN dn = entry.getDn();
 
-        if ( attrIds == null )
+        if ( ( attrIds == null ) || ( attrIdsHasPlus && attrIdsHasStar ) )
         {
             entry = ServerEntryUtils.toServerEntry( ( Attributes ) rec.getObject().clone(), dn, registries );
         }
@@ -146,26 +149,21 @@
                     continue;
                 }
 
-            	ServerAttribute attr = ServerEntryUtils.toServerAttribute( ( Attribute ) rec.getObject().get( attrId ).clone(), 
-            			registries.getAttributeTypeRegistry().lookup( attrId ) ); 
-                entry.put( attr );
+            	ServerAttribute attr =  ( ServerAttribute ) rec.getObject().get( attrId ).clone(); 
+            	entry.put( attr );
             }
 
             // add all operational attributes
-            NamingEnumeration<String> list = rec.getObject().getIDs();
-            
-            while ( list.hasMore() )
+            for ( EntryAttribute attribute:rec.getObject() )
             {
-                String attrId = list.next();
-                AttributeType attrType = registries.getAttributeTypeRegistry().lookup( attrId );
+                AttributeType attrType = ( ( ServerAttribute ) attribute ).getAttributeType();
                 
                 if ( attrType.getUsage() == UsageEnum.USER_APPLICATIONS )
                 {
                     continue;
                 }
 
-            	ServerAttribute attr = ServerEntryUtils.toServerAttribute( ( Attribute ) rec.getObject().get( attrId ).clone(), 
-            			registries.getAttributeTypeRegistry().lookup( attrId ) ); 
+            	ServerAttribute attr = ( ServerAttribute ) attribute.clone(); 
                 entry.put( attr );
             }
         }
@@ -187,31 +185,31 @@
                 }
 
                 // clone attribute to stuff into the new resultant entry
-            	ServerAttribute attr = ServerEntryUtils.toServerAttribute( ( Attribute ) rec.getObject().get( attrId ).clone(), 
-            			registries.getAttributeTypeRegistry().lookup( attrId ) ); 
+            	ServerAttribute attr = ( ServerAttribute ) rec.getObject().get( attrId ).clone(); 
                 entry.put( attr );
             }
 
             // add all user attributes
-            NamingEnumeration<String> list = rec.getObject().getIDs();
-            
-            while ( list.hasMore() )
+            for ( EntryAttribute attribute:rec.getObject() )
             {
-                String attrId = list.next();
-                AttributeType attrType = registries.getAttributeTypeRegistry().lookup( attrId );
+                AttributeType attrType = ((ServerAttribute)attribute).getAttributeType();
                 
                 if ( attrType.getUsage() == UsageEnum.USER_APPLICATIONS )
                 {
-                	ServerAttribute attr = ServerEntryUtils.toServerAttribute( ( Attribute ) rec.getObject().get( attrId ).clone(), 
-                			registries.getAttributeTypeRegistry().lookup( attrId ) ); 
+                    ServerAttribute attr = ( ServerAttribute ) rec.getEntry().get( attrType ).clone(); 
                     entry.put( attr );
                 }
             }
         }
         else
         {
-            entry = new DefaultServerEntry( registries, dn );
-            ServerEntry attrs = ServerEntryUtils.toServerEntry( rec.getObject(), dn, registries );
+        	Set<EntryAttribute> entryAttrs = new HashSet<EntryAttribute>(); 
+        	
+        	for ( EntryAttribute entryAttribute:entry )
+        	{
+        		entryAttrs.add( entryAttribute );
+        	}
+            //entry = new DefaultServerEntry( registries, dn );
             
             for ( String attrId:attrIds )
             {
@@ -220,7 +218,7 @@
                     break;
                 }
                 
-                EntryAttribute attr = attrs.get( registries.getAttributeTypeRegistry().lookup( attrId ) );
+                EntryAttribute attr = entry.get( registries.getAttributeTypeRegistry().lookup( attrId ) );
                 
                 // there is no attribute by that name in the entry so we continue
                 if ( null == attr )
@@ -232,22 +230,29 @@
                     {
                         AttributeType atype = descendants.next();
                         
-                        attr = attrs.get( atype );
+                        attr = entry.get( atype );
                         
                         if ( attr != null )
                         {
                             // we may have more than one descendant, like sn and cn
                             // for name, so add all of them
-                            entry.put( (ServerAttribute)attr.clone() );
+                            //entry.put( (ServerAttribute)attr.clone() );
+                        	entryAttrs.remove( attr );
                         }
                     }
                 }
                 else
                 {
                     // clone attribute to stuff into the new resultant entry
-                    entry.put( (ServerAttribute)attr.clone() );
+                    //entry.put( (ServerAttribute)attr.clone() );
+                	entryAttrs.remove( attr );
                 }
             }
+            
+            for ( EntryAttribute entryAttribute:entryAttrs )
+            {
+            	entry.remove( entryAttribute );
+            }
         }
 
         BTreeSearchResult result = new BTreeSearchResult( (Long)rec.getId(), dn, null, entry );

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AddEntryDialog.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AddEntryDialog.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AddEntryDialog.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AddEntryDialog.java Sat May 10 09:30:45 2008
@@ -26,7 +26,6 @@
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 
-import javax.naming.directory.Attributes;
 import javax.swing.DefaultCellEditor;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
@@ -40,8 +39,10 @@
 import javax.swing.JTable;
 import javax.swing.JTextField;
 
+import org.apache.directory.server.core.entry.DefaultServerEntry;
+import org.apache.directory.server.core.entry.ServerEntry;
+import org.apache.directory.server.schema.registries.Registries;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
-import org.apache.directory.shared.ldap.message.AttributesImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,7 +73,7 @@
     private JButton m_cancelBut = new JButton();
     private JPopupMenu m_popup;
 
-    private Attributes m_childEntry = new AttributesImpl();
+    private ServerEntry childEntry = null;
 
 
     /**
@@ -81,10 +82,11 @@
      * @param parent the parent frame
      * @param modal whether or not to go modal on the dialog
      */
-    public AddEntryDialog(Frame parent, boolean modal)
+    public AddEntryDialog(Frame parent, boolean modal, Registries registries )
     {
         super( parent, modal );
-        m_childEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC );
+        childEntry = new DefaultServerEntry( registries );
+        childEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC );
         initGUI();
     }
 
@@ -168,7 +170,7 @@
             javax.swing.border.TitledBorder.LEADING, javax.swing.border.TitledBorder.TOP, new java.awt.Font(
                 "SansSerif", 0, 14 ), new java.awt.Color( 60, 60, 60 ) ) );
 
-        m_attrTbl.setModel( new AttributesTableModel( m_childEntry, null, null, true ) );
+        m_attrTbl.setModel( new AttributesTableModel( childEntry, null, null, true ) );
 
         //
         // Build the table's popup menu
@@ -279,9 +281,9 @@
     }
 
 
-    public Attributes getChildEntry()
+    public ServerEntry getChildEntry()
     {
-        return m_childEntry;
+        return childEntry;
     }
 
 

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AttributesTableModel.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AttributesTableModel.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AttributesTableModel.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/AttributesTableModel.java Sat May 10 09:30:45 2008
@@ -22,12 +22,12 @@
 
 import java.util.ArrayList;
 
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
 import javax.swing.table.AbstractTableModel;
 
+import org.apache.directory.server.core.entry.ServerEntry;
+import org.apache.directory.shared.ldap.entry.EntryAttribute;
+import org.apache.directory.shared.ldap.entry.Value;
+
 
 /**
  * A general purpose table model for entry attributes.
@@ -49,7 +49,7 @@
     private final transient ArrayList<Object> valList;
 
     /** the attributes for the entry */
-    private final Attributes entry;
+    private final ServerEntry entry;
     /** the unique id of the entry  */
     private final Long id;
     /** the distinguished name of the entry */
@@ -66,42 +66,32 @@
      * @param dn the distinguished name of the entry
      * @param isMutable whether or not the model can be changed
      */
-    public AttributesTableModel(Attributes entry, Long id, String dn, boolean isMutable)
+    public AttributesTableModel( ServerEntry entry, Long id, String dn, boolean isMutable)
     {
         this.dn = dn;
         this.id = id;
         this.entry = entry;
         this.isMutable = isMutable;
 
-        NamingEnumeration<String> list = entry.getIDs();
         int rowCount = 0;
 
-        while ( list.hasMoreElements() )
+        for ( EntryAttribute attribute:entry )
         {
-            String attrId = list.nextElement();
+            String attrId = attribute.getId();
             rowCount = rowCount + entry.get( attrId ).size();
         }
 
         keyList = new ArrayList<Object>( rowCount );
         valList = new ArrayList<Object>( rowCount );
 
-        list = this.entry.getIDs();
-        while ( list.hasMoreElements() )
+        for ( EntryAttribute attribute:entry )
         {
-            String l_key = ( String ) list.nextElement();
-            Attribute l_attr = this.entry.get( l_key );
+            String key = attribute.getId();
 
-            for ( int ii = 0; ii < l_attr.size(); ii++ )
+            for ( Value<?> value:attribute )
             {
-                try
-                {
-                    keyList.add( l_attr.getID() );
-                    valList.add( l_attr.get( ii ) );
-                }
-                catch ( NamingException e )
-                {
-                    e.printStackTrace();
-                }
+                keyList.add( attribute.getId() );
+                valList.add( value.get() );
             }
         }
     }

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java Sat May 10 09:30:45 2008
@@ -29,9 +29,9 @@
 
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
 import javax.swing.tree.TreeNode;
 
+import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.partition.impl.btree.BTreePartition;
 import org.apache.directory.server.xdbm.ForwardIndexEntry;
 import org.apache.directory.server.xdbm.IndexEntry;
@@ -50,18 +50,18 @@
 {
     private final BTreePartition partition;
     private final EntryNode parent;
-    private final Attributes entry;
+    private final ServerEntry entry;
     private final ArrayList<TreeNode> children;
     private final Long id;
 
 
-    public EntryNode(Long id, EntryNode parent, BTreePartition partition, Attributes entry, Map<Long, EntryNode> map)
+    public EntryNode(Long id, EntryNode parent, BTreePartition partition, ServerEntry entry, Map<Long, EntryNode> map)
     {
         this( id, parent, partition, entry, map, null, null );
     }
 
 
-    public EntryNode( Long id, EntryNode parent, BTreePartition db, Attributes entry, Map<Long, EntryNode> map,
+    public EntryNode( Long id, EntryNode parent, BTreePartition db, ServerEntry entry, Map<Long, EntryNode> map,
         ExprNode exprNode, SearchEngine engine )
     {
         this.partition = db;
@@ -105,9 +105,8 @@
                     {
                         if ( engine.evaluate( exprNode, (Long)rec.getId() ) )
                         {
-                            Attributes newEntry = db.lookup( (Long)rec.getId() );
-                            EntryNode child = new EntryNode( (Long)rec.getId(), this, db, newEntry, map, exprNode,
-                                engine );
+                            ServerEntry newEntry = db.lookup( (Long)rec.getEntryId() );
+                            EntryNode child = new EntryNode( (Long)rec.getEntryId(), this, db, newEntry, map, exprNode, engine );
                             children.add( child );
                         }
                         else
@@ -117,15 +116,15 @@
                     }
                     else
                     {
-                        Attributes newEntry = db.lookup( (Long)rec.getId() );
-                        EntryNode child = new EntryNode( (Long)rec.getId(), this, db, newEntry, map, exprNode, engine );
+                        ServerEntry newEntry = db.lookup( (Long)rec.getEntryId() );
+                        EntryNode child = new EntryNode( (Long)rec.getEntryId(), this, db, newEntry, map, exprNode, engine );
                         children.add( child );
                     }
                 }
                 else
                 {
-                    Attributes newEntry = db.lookup( (Long)rec.getId() );
-                    EntryNode child = new EntryNode( (Long)rec.getId(), this, db, newEntry, map );
+                    ServerEntry newEntry = db.lookup( (Long)rec.getEntryId() );
+                    EntryNode child = new EntryNode( (Long)rec.getEntryId(), this, db, newEntry, map );
                     children.add( child );
                 }
             }
@@ -211,7 +210,7 @@
     }
 
 
-    public Attributes getLdapEntry()
+    public ServerEntry getLdapEntry()
     {
         return entry;
     }

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java Sat May 10 09:30:45 2008
@@ -36,7 +36,6 @@
 
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
 import javax.naming.directory.SearchControls;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
@@ -67,6 +66,7 @@
 import org.apache.directory.server.core.partition.impl.btree.BTreePartition;
 import org.apache.directory.server.xdbm.Index;
 import org.apache.directory.server.xdbm.IndexEntry;
+import org.apache.directory.server.schema.registries.Registries;
 
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.filter.FilterParser;
@@ -117,6 +117,9 @@
     private Map<Long, EntryNode> nodes;
     private EntryNode root;
 
+    
+    /** A handle on the global registries */
+    private Registries registries;
 
     /**
      * Creates new form JFrame
@@ -124,9 +127,10 @@
      * @param db the partition to view
      * @throws NamingException if there are problems accessing the partition
      */
-    public PartitionFrame( BTreePartition db ) throws NamingException
+    public PartitionFrame( BTreePartition db, Registries registries ) throws NamingException
     {
         partition = db;
+        this.registries = registries;
 
         initialize();
         buildIndicesMenu( partition );
@@ -377,7 +381,7 @@
                 return;
             }
 
-            AddEntryDialog dialog = new AddEntryDialog( this, false );
+            AddEntryDialog dialog = new AddEntryDialog( this, false, registries );
             dialog.setParentDn( parentDn );
 
             centerOnScreen( dialog );
@@ -451,14 +455,14 @@
             {
                 LdifEntry entry = ( LdifEntry ) list.next();
                 String updn = entry.getDn();
-                Attributes attrs = entry.getAttributes();
                 
                 LdapDN ndn = new LdapDN( StringTools.deepTrimToLower( updn ) );
 
+                ServerEntry attrs = ServerEntryUtils.toServerEntry( entry.getAttributes(), ndn, null );
+
                 if ( null == partition.getEntryId( ndn.toString() ) )
                 {
-                    ServerEntry serverEntry = ServerEntryUtils.toServerEntry( attrs, ndn, null );
-                    partition.add( new AddOperationContext( null, ndn, serverEntry ) );
+                    partition.add( new AddOperationContext( null, attrs ) );
                     load();
                 }
             }
@@ -852,7 +856,7 @@
     }
 
 
-    void displayEntry( Long id, Attributes entry ) throws Exception
+    void displayEntry( Long id, ServerEntry entry ) throws Exception
     {
         String dn = partition.getEntryUpdn( id );
         AttributesTableModel model = new AttributesTableModel( entry, id, dn, false );
@@ -870,7 +874,7 @@
         // boolean doFiltered = false;
         nodes = new HashMap<Long, EntryNode>();
 
-        Attributes suffix = partition.getSuffixEntry();
+        ServerEntry suffix = partition.getSuffixEntry();
         Long id = partition.getEntryId( partition.getSuffixDn().toString() );
         root = new EntryNode( id, null, partition, suffix, nodes );
 

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionViewer.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionViewer.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionViewer.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionViewer.java Sat May 10 09:30:45 2008
@@ -24,6 +24,7 @@
 import java.awt.Toolkit;
 
 import org.apache.directory.server.core.partition.impl.btree.BTreePartition;
+import org.apache.directory.server.schema.registries.Registries;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -42,11 +43,15 @@
 
     /** A handle on the atomic partition */
     private BTreePartition partition;
+    
+    /** A handle on the global registries */
+    private Registries registries;
 
 
-    public PartitionViewer( BTreePartition db )
+    public PartitionViewer( BTreePartition db, Registries registries )
     {
         this.partition = db;
+        this.registries = registries;
     }
 
 
@@ -59,7 +64,7 @@
                 PartitionFrame frame = null;
                 try
                 {
-                    frame = new PartitionFrame( PartitionViewer.this.partition );
+                    frame = new PartitionFrame( PartitionViewer.this.partition, registries );
                 }
                 catch ( NamingException e )
                 {

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java Sat May 10 09:30:45 2008
@@ -21,7 +21,7 @@
 
 
 import org.apache.directory.server.core.DirectoryService;
-import org.apache.directory.server.core.entry.ServerEntryUtils;
+import org.apache.directory.server.core.entry.ServerEntry;
 import org.apache.directory.server.core.interceptor.context.AddOperationContext;
 import org.apache.directory.server.core.interceptor.context.BindOperationContext;
 import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
@@ -41,7 +41,6 @@
 
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
 
 import java.io.File;
 import java.util.HashSet;
@@ -236,7 +235,7 @@
             store.setEnableOptimizer( isOptimizerEnabled() );
         }
 
-        store.init( registries.getOidRegistry(), registries.getAttributeTypeRegistry() );
+        store.init( registries );
     }
 
 
@@ -463,11 +462,11 @@
     
     public final void add( AddOperationContext addContext ) throws NamingException
     {
-        store.add( addContext.getDn(), ServerEntryUtils.toAttributesImpl( addContext.getEntry() ) );
+        store.add( addContext.getDn(), addContext.getEntry() );
     }
 
 
-    public final Attributes lookup( Long id ) throws NamingException
+    public final ServerEntry lookup( Long id ) throws NamingException
     {
         return store.lookup( id );
     }
@@ -502,7 +501,7 @@
     }
 
 
-    public final Attributes getSuffixEntry() throws NamingException
+    public final ServerEntry getSuffixEntry() throws NamingException
     {
         return store.getSuffixEntry();
     }
@@ -520,7 +519,7 @@
     }
 
 
-    public final Attributes getIndices( Long id ) throws NamingException
+    public final ServerEntry getIndices( Long id ) throws NamingException
     {
         return store.getIndices( id );
     }
@@ -539,8 +538,10 @@
 
     public final void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws NamingException
     {
-        store.move( moveAndRenameContext.getDn(), moveAndRenameContext.getParent(), 
-        		moveAndRenameContext.getNewRdn(), moveAndRenameContext.getDelOldDn() );
+        store.move( moveAndRenameContext.getDn(), 
+            moveAndRenameContext.getParent(), 
+            moveAndRenameContext.getNewRdn(), 
+            moveAndRenameContext.getDelOldDn() );
     }
 
 

Modified: directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java?rev=655126&r1=655125&r2=655126&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java (original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/core/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java Sat May 10 09:30:45 2008
@@ -73,6 +73,7 @@
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Modification;
 import org.apache.directory.shared.ldap.entry.Value;
+import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
 import org.apache.directory.shared.ldap.exception.LdapNamingException;
 import org.apache.directory.shared.ldap.exception.LdapReferralException;
 import org.apache.directory.shared.ldap.filter.EqualityNode;
@@ -112,17 +113,16 @@
 
     private ReferralLut lut = new ReferralLut();
     private PartitionNexus nexus;
-    
+
     /** The attributeType registry */
     private AttributeTypeRegistry atRegistry;
-    
+
     /** Thre global registries */
     private Registries registries;
-    
+
     /** The OID registry */
     private OidRegistry oidRegistry;
 
-    
     static
     {
         /*
@@ -135,11 +135,11 @@
         c.add( ReferralInterceptor.class.getName() );
         c.add( AciAuthorizationInterceptor.class.getName() );
         c.add( DefaultAuthorizationInterceptor.class.getName() );
-//        c.add( ExceptionInterceptor.class.getName() );
+        //        c.add( ExceptionInterceptor.class.getName() );
         c.add( OperationalAttributeInterceptor.class.getName() );
         c.add( SchemaInterceptor.class.getName() );
         c.add( SubentryInterceptor.class.getName() );
-//        c.add( CollectiveAttributeInterceptor.class.getName() );
+        //        c.add( CollectiveAttributeInterceptor.class.getName() );
         c.add( EventInterceptor.class.getName() );
         c.add( TriggerInterceptor.class.getName() );
         SEARCH_BYPASS = Collections.unmodifiableCollection( c );
@@ -149,21 +149,21 @@
     static boolean isReferral( ServerEntry entry ) throws NamingException
     {
         EntryAttribute oc = entry.get( SchemaConstants.OBJECT_CLASS_AT );
-        
+
         if ( oc == null )
         {
             LOG.warn( "could not find objectClass attribute in entry: " + entry );
             return false;
         }
-        
+
         if ( oc.contains( SchemaConstants.REFERRAL_OC ) )
         {
             //We have a referral ObjectClass, let's check that the ref is
             // valid, accordingly to the RFC
-            
+
             // Get the 'ref' attributeType
             EntryAttribute refAttr = entry.get( SchemaConstants.REF_AT );
-            
+
             if ( refAttr == null )
             {
                 // very unlikely, as we have already checked the entry in SchemaInterceptor
@@ -171,24 +171,24 @@
                 LOG.error( message );
                 throw new NamingException( message );
             }
-            
-            for ( Value<?> value:refAttr )
+
+            for ( Value<?> value : refAttr )
             {
-                ServerStringValue ref = (ServerStringValue)value; 
-                
+                ServerStringValue ref = ( ServerStringValue ) value;
+
                 String refVal = ref.get();
-                
+
                 try
                 {
                     LdapURL ldapUrl = new LdapURL( refVal );
-                    
+
                     // We have a LDAP URL, we have to check that :
                     // - we don't have scope specifier
                     // - we don't have filters
                     // - we don't have attribute description list
                     // - we don't have extensions
                     // - the DN is not empty
-                    
+
                     if ( ldapUrl.getScope() != SearchControls.OBJECT_SCOPE )
                     {
                         // This is the default value if we don't have any scope
@@ -198,37 +198,37 @@
                         LOG.error( message );
                         throw new NamingException( message );
                     }
-                    
+
                     if ( !StringTools.isEmpty( ldapUrl.getFilter() ) )
                     {
                         String message = "An LDAPURL should not contains filters";
                         LOG.error( message );
                         throw new NamingException( message );
                     }
-                    
+
                     if ( ( ldapUrl.getAttributes() != null ) && ( ldapUrl.getAttributes().size() != 0 ) )
                     {
                         String message = "An LDAPURL should not contains any description attribute list";
                         LOG.error( message );
                         throw new NamingException( message );
                     }
-                    
+
                     if ( ( ldapUrl.getExtensions() != null ) && ( ldapUrl.getExtensions().size() != 0 ) )
                     {
                         String message = "An LDAPURL should not contains any extension";
                         LOG.error( message );
                         throw new NamingException( message );
                     }
-                    
+
                     if ( ( ldapUrl.getCriticalExtensions() != null ) && ( ldapUrl.getCriticalExtensions().size() != 0 ) )
                     {
                         String message = "An LDAPURL should not contains any critical extension";
                         LOG.error( message );
                         throw new NamingException( message );
                     }
-                    
+
                     LdapDN dn = ldapUrl.getDn();
-                    
+
                     if ( ( dn == null ) || dn.isEmpty() )
                     {
                         String message = "An LDAPURL should contains a non-empty DN";
@@ -242,10 +242,10 @@
                     // we will just ignore this LdapURL.
                 }
             }
-            
+
             return true;
         }
-        
+
         return false;
     }
 
@@ -258,12 +258,12 @@
         oidRegistry = registries.getOidRegistry();
 
         Iterator<String> suffixes = nexus.listSuffixes( null );
-        
+
         while ( suffixes.hasNext() )
         {
             LdapDN suffix = new LdapDN( suffixes.next() );
-            addReferrals( nexus.search( new SearchOperationContext(
-                    registries, suffix, AliasDerefMode.DEREF_ALWAYS, getReferralFilter(), getControls() ) ), suffix );
+            addReferrals( nexus.search( new SearchOperationContext( registries, suffix, AliasDerefMode.DEREF_ALWAYS,
+                getReferralFilter(), getControls() ) ), suffix );
         }
     }
 
@@ -272,10 +272,10 @@
     {
         // handle referral here
         List<String> list = new ArrayList<String>( refs.size() );
-        
-        for ( Value<?> value:refs )
+
+        for ( Value<?> value : refs )
         {
-            String val = (String)value.get();
+            String val = ( String ) value.get();
 
             // need to add non-ldap URLs as-is
             if ( !val.startsWith( "ldap" ) )
@@ -297,14 +297,14 @@
 
             LdapDN urlDn = new LdapDN( ldapUrl.getDn().toNormName() );
             urlDn.normalize( atRegistry.getNormalizerMapping() );
-            
+
             if ( urlDn.equals( farthest ) )
             {
                 // according to the protocol there is no need for the dn since it is the same as this request
-            	StringBuilder buf = new StringBuilder();
+                StringBuilder buf = new StringBuilder();
                 buf.append( ldapUrl.getScheme() );
                 buf.append( ldapUrl.getHost() );
-            
+
                 if ( ldapUrl.getPort() > 0 )
                 {
                     buf.append( ":" );
@@ -322,24 +322,24 @@
              */
             int diff = targetUpdn.size() - farthest.size();
             LdapDN extra = new LdapDN();
-            
+
             for ( int jj = 0; jj < diff; jj++ )
             {
                 extra.add( targetUpdn.get( farthest.size() + jj ) );
             }
 
             urlDn.addAll( extra );
-            
+
             StringBuilder buf = new StringBuilder();
             buf.append( ldapUrl.getScheme() );
             buf.append( ldapUrl.getHost() );
-            
+
             if ( ldapUrl.getPort() > 0 )
             {
                 buf.append( ":" );
                 buf.append( ldapUrl.getPort() );
             }
-            
+
             buf.append( "/" );
             buf.append( LdapURL.urlEncode( urlDn.getUpName(), false ) );
             list.add( buf.toString() );
@@ -349,7 +349,7 @@
     }
 
 
-    public void add(NextInterceptor next, AddOperationContext opContext ) throws NamingException
+    public void add( NextInterceptor next, AddOperationContext opContext ) throws NamingException
     {
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext caller = ( ServerLdapContext ) invocation.getCaller();
@@ -361,7 +361,7 @@
         if ( ( refval == null ) || refval.equals( IGNORE ) )
         {
             next.add( opContext );
-            
+
             if ( isReferral( entry ) )
             {
                 lut.referralAdded( name );
@@ -370,11 +370,11 @@
         else if ( refval.equals( THROW ) )
         {
             LdapDN farthest = lut.getFarthestReferralAncestor( name );
-        
+
             if ( farthest == null )
             {
                 next.add( opContext );
-                
+
                 if ( isReferral( entry ) )
                 {
                     lut.referralAdded( name );
@@ -382,10 +382,9 @@
                 return;
             }
 
-            ServerEntry referral = invocation.getProxy().lookup( 
-                    new LookupOperationContext( registries, farthest ), 
-                    PartitionNexusProxy.LOOKUP_BYPASS );
-            
+            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ),
+                PartitionNexusProxy.LOOKUP_BYPASS );
+
             AttributeType refsType = atRegistry.lookup( oidRegistry.getOid( SchemaConstants.REF_AT ) );
             EntryAttribute refs = referral.get( refsType );
             doReferralException( farthest, new LdapDN( name.getUpName() ), refs );
@@ -404,8 +403,8 @@
 
     public boolean compare( NextInterceptor next, CompareOperationContext opContext ) throws NamingException
     {
-    	LdapDN name = opContext.getDn();
-    	
+        LdapDN name = opContext.getDn();
+
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext caller = ( ServerLdapContext ) invocation.getCaller();
         String refval = ( String ) caller.getEnvironment().get( Context.REFERRAL );
@@ -419,16 +418,15 @@
         if ( refval.equals( THROW ) )
         {
             LdapDN farthest = lut.getFarthestReferralAncestor( name );
-            
+
             if ( farthest == null )
             {
                 return next.compare( opContext );
             }
 
-            ServerEntry referral = invocation.getProxy().lookup( 
-                    new LookupOperationContext( registries, farthest ), 
-                    PartitionNexusProxy.LOOKUP_BYPASS );
-            
+            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ),
+                PartitionNexusProxy.LOOKUP_BYPASS );
+
             EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
             doReferralException( farthest, new LdapDN( name.getUpName() ), refs );
 
@@ -449,7 +447,7 @@
 
     public void delete( NextInterceptor next, DeleteOperationContext opContext ) throws NamingException
     {
-    	LdapDN name = opContext.getDn();
+        LdapDN name = opContext.getDn();
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext caller = ( ServerLdapContext ) invocation.getCaller();
         String refval = ( String ) caller.getEnvironment().get( Context.REFERRAL );
@@ -458,38 +456,37 @@
         if ( refval == null || refval.equals( IGNORE ) )
         {
             next.delete( opContext );
-            
+
             if ( lut.isReferral( name ) )
             {
                 lut.referralDeleted( name );
             }
-            
+
             return;
         }
 
         if ( refval.equals( THROW ) )
         {
             LdapDN farthest = lut.getFarthestReferralAncestor( name );
-            
+
             if ( farthest == null )
             {
                 next.delete( opContext );
-                
+
                 if ( lut.isReferral( name ) )
                 {
                     lut.referralDeleted( name );
                 }
-                
+
                 return;
             }
 
-            ServerEntry referral = invocation.getProxy().lookup( 
-                    new LookupOperationContext( registries, farthest ), 
-                    PartitionNexusProxy.LOOKUP_BYPASS );
-            
+            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ),
+                PartitionNexusProxy.LOOKUP_BYPASS );
+
             EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
             doReferralException( farthest, new LdapDN( name.getUpName() ), refs );
-            
+
         }
         else if ( refval.equals( FOLLOW ) )
         {
@@ -521,7 +518,7 @@
     public void move( NextInterceptor next, MoveOperationContext opContext ) throws NamingException
     {
         LdapDN oldName = opContext.getDn();
-        
+
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext caller = ( ServerLdapContext ) invocation.getCaller();
         String refval = ( String ) caller.getEnvironment().get( Context.REFERRAL );
@@ -532,12 +529,12 @@
         if ( refval == null || refval.equals( IGNORE ) )
         {
             next.move( opContext );
-            
+
             if ( lut.isReferral( oldName ) )
             {
                 lut.referralChanged( oldName, newName );
             }
-            
+
             return;
         }
 
@@ -545,24 +542,23 @@
         {
             LdapDN farthestSrc = lut.getFarthestReferralAncestor( oldName );
             LdapDN farthestDst = lut.getFarthestReferralAncestor( newName ); // note will not return newName so safe
-            
+
             if ( farthestSrc == null && farthestDst == null && !lut.isReferral( newName ) )
             {
                 next.move( opContext );
-                
+
                 if ( lut.isReferral( oldName ) )
                 {
                     lut.referralChanged( oldName, newName );
                 }
-                
+
                 return;
             }
             else if ( farthestSrc != null )
             {
-                ServerEntry referral = invocation.getProxy().lookup( 
-                        new LookupOperationContext( registries, farthestSrc ), 
-                        PartitionNexusProxy.LOOKUP_BYPASS );
-                
+                ServerEntry referral = invocation.getProxy().lookup(
+                    new LookupOperationContext( registries, farthestSrc ), PartitionNexusProxy.LOOKUP_BYPASS );
+
                 EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
                 doReferralException( farthestSrc, new LdapDN( oldName.getUpName() ), refs );
             }
@@ -593,11 +589,10 @@
     }
 
 
-    public void moveAndRename( NextInterceptor next, MoveAndRenameOperationContext opContext )
-        throws NamingException
+    public void moveAndRename( NextInterceptor next, MoveAndRenameOperationContext opContext ) throws NamingException
     {
         LdapDN oldName = opContext.getDn();
-        
+
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext caller = ( ServerLdapContext ) invocation.getCaller();
         String refval = ( String ) caller.getEnvironment().get( Context.REFERRAL );
@@ -608,7 +603,7 @@
         if ( refval == null || refval.equals( IGNORE ) )
         {
             next.moveAndRename( opContext );
-            
+
             if ( lut.isReferral( oldName ) )
             {
                 lut.referralChanged( oldName, newName );
@@ -620,11 +615,11 @@
         {
             LdapDN farthestSrc = lut.getFarthestReferralAncestor( oldName );
             LdapDN farthestDst = lut.getFarthestReferralAncestor( newName ); // safe to use - does not return newName
-            
+
             if ( farthestSrc == null && farthestDst == null && !lut.isReferral( newName ) )
             {
                 next.moveAndRename( opContext );
-                
+
                 if ( lut.isReferral( oldName ) )
                 {
                     lut.referralChanged( oldName, newName );
@@ -633,13 +628,12 @@
             }
             else if ( farthestSrc != null )
             {
-                ServerEntry referral = invocation.getProxy().lookup( 
-                        new LookupOperationContext( registries, farthestSrc ), 
-                        PartitionNexusProxy.LOOKUP_BYPASS );
-                
+                ServerEntry referral = invocation.getProxy().lookup(
+                    new LookupOperationContext( registries, farthestSrc ), PartitionNexusProxy.LOOKUP_BYPASS );
+
                 EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
                 doReferralException( farthestSrc, new LdapDN( oldName.getUpName() ), refs );
-                
+
             }
             else if ( farthestDst != null )
             {
@@ -668,11 +662,10 @@
     }
 
 
-    public void rename( NextInterceptor next, RenameOperationContext opContext )
-        throws NamingException
+    public void rename( NextInterceptor next, RenameOperationContext opContext ) throws NamingException
     {
         LdapDN oldName = opContext.getDn();
-        
+
         Invocation invocation = InvocationStack.getInstance().peek();
         ServerLdapContext caller = ( ServerLdapContext ) invocation.getCaller();
         String refval = ( String ) caller.getEnvironment().get( Context.REFERRAL );
@@ -685,12 +678,12 @@
         if ( refval == null || refval.equals( IGNORE ) )
         {
             next.rename( opContext );
-            
+
             if ( lut.isReferral( oldName ) )
             {
                 lut.referralChanged( oldName, newName );
             }
-            
+
             return;
         }
 
@@ -698,28 +691,27 @@
         {
             LdapDN farthestSrc = lut.getFarthestReferralAncestor( oldName );
             LdapDN farthestDst = lut.getFarthestReferralAncestor( newName );
-            
+
             if ( farthestSrc == null && farthestDst == null && !lut.isReferral( newName ) )
             {
                 next.rename( opContext );
-                
+
                 if ( lut.isReferral( oldName ) )
                 {
                     lut.referralChanged( oldName, newName );
                 }
-                
+
                 return;
             }
-            
+
             if ( farthestSrc != null )
             {
-                ServerEntry referral = invocation.getProxy().lookup( 
-                        new LookupOperationContext( registries, farthestSrc ), 
-                        PartitionNexusProxy.LOOKUP_BYPASS );
-                
+                ServerEntry referral = invocation.getProxy().lookup(
+                    new LookupOperationContext( registries, farthestSrc ), PartitionNexusProxy.LOOKUP_BYPASS );
+
                 EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
                 doReferralException( farthestSrc, new LdapDN( oldName.getUpName() ), refs );
-                
+
             }
             else if ( farthestDst != null )
             {
@@ -760,7 +752,8 @@
         {
             if ( mod.getAttribute().getId().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) )
             {
-                boolean modsOcHasReferral = ((ServerAttribute)mod.getAttribute()).contains( SchemaConstants.REFERRAL_OC );
+                boolean modsOcHasReferral = ( ( ServerAttribute ) mod.getAttribute() )
+                    .contains( SchemaConstants.REFERRAL_OC );
 
                 switch ( mod.getOperation() )
                 {
@@ -768,35 +761,35 @@
                      * if ADD op where refferal is added to objectClass of a
                      * non-referral entry then we add a new referral to lut
                      */
-                    case ADD_ATTRIBUTE :
+                    case ADD_ATTRIBUTE:
                         if ( modsOcHasReferral && !isTargetReferral )
                         {
                             lut.referralAdded( name );
                         }
-                    
+
                         break;
 
-                        /*
-                        * if REMOVE op where refferal is removed from objectClass of a
-                        * referral entry then we remove the referral from lut
-                        */
-                    case REMOVE_ATTRIBUTE :
+                    /*
+                    * if REMOVE op where refferal is removed from objectClass of a
+                    * referral entry then we remove the referral from lut
+                    */
+                    case REMOVE_ATTRIBUTE:
                         if ( modsOcHasReferral && isTargetReferral )
                         {
                             lut.referralDeleted( name );
                         }
-                    
+
                         break;
 
-                        /*
-                        * if REPLACE op on referral has new set of OC values which does
-                        * not contain a referral value then we remove the referral from
-                        * the lut
-                        *
-                        * if REPLACE op on non-referral has new set of OC values with
-                        * referral value then we add the new referral to the lut
-                        */
-                    case REPLACE_ATTRIBUTE :
+                    /*
+                    * if REPLACE op on referral has new set of OC values which does
+                    * not contain a referral value then we remove the referral from
+                    * the lut
+                    *
+                    * if REPLACE op on non-referral has new set of OC values with
+                    * referral value then we add the new referral to the lut
+                    */
+                    case REPLACE_ATTRIBUTE:
                         if ( isTargetReferral && !modsOcHasReferral )
                         {
                             lut.referralDeleted( name );
@@ -805,7 +798,7 @@
                         {
                             lut.referralAdded( name );
                         }
-                    
+
                         break;
 
                     default:
@@ -837,7 +830,7 @@
         if ( refval.equals( THROW ) )
         {
             LdapDN farthest = lut.getFarthestReferralAncestor( name );
-            
+
             if ( farthest == null )
             {
                 next.modify( opContext );
@@ -845,10 +838,9 @@
                 return;
             }
 
-            ServerEntry referral = invocation.getProxy().lookup( 
-                    new LookupOperationContext( registries, farthest ), 
-                    PartitionNexusProxy.LOOKUP_BYPASS );
-            
+            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ),
+                PartitionNexusProxy.LOOKUP_BYPASS );
+
             EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
             doReferralException( farthest, new LdapDN( name.getUpName() ), refs );
         }
@@ -866,7 +858,7 @@
 
     static ExprNode getReferralFilter()
     {
-        return new EqualityNode( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.REFERRAL_OC );
+        return new EqualityNode( SchemaConstants.OBJECT_CLASS_AT, new ClientStringValue( SchemaConstants.REFERRAL_OC ) );
     }
 
 
@@ -879,7 +871,8 @@
     }
 
 
-    public void addContextPartition( NextInterceptor next, AddContextPartitionOperationContext opContext ) throws NamingException
+    public void addContextPartition( NextInterceptor next, AddContextPartitionOperationContext opContext )
+        throws NamingException
     {
         next.addContextPartition( opContext );
 
@@ -887,20 +880,22 @@
         Partition partition = opContext.getPartition();
         LdapDN suffix = partition.getSuffixDn();
         Invocation invocation = InvocationStack.getInstance().peek();
-        NamingEnumeration<ServerSearchResult> list = invocation.getProxy().search( new SearchOperationContext( registries, suffix,
-                AliasDerefMode.DEREF_ALWAYS, getReferralFilter(), getControls() ), SEARCH_BYPASS );
+        NamingEnumeration<ServerSearchResult> list = invocation.getProxy().search(
+            new SearchOperationContext( registries, suffix, AliasDerefMode.DEREF_ALWAYS, getReferralFilter(),
+                getControls() ), SEARCH_BYPASS );
         addReferrals( list, suffix );
     }
 
 
-    public void removeContextPartition( NextInterceptor next, RemoveContextPartitionOperationContext opContext ) throws NamingException
+    public void removeContextPartition( NextInterceptor next, RemoveContextPartitionOperationContext opContext )
+        throws NamingException
     {
         // remove referrals immediately before removing the partition
         Invocation invocation = InvocationStack.getInstance().peek();
-        NamingEnumeration<ServerSearchResult> list = invocation.getProxy().search( 
+        NamingEnumeration<ServerSearchResult> list = invocation.getProxy().search(
             new SearchOperationContext( registries, opContext.getDn(), AliasDerefMode.DEREF_ALWAYS,
-                    getReferralFilter(), getControls() ), SEARCH_BYPASS );
-        
+                getReferralFilter(), getControls() ), SEARCH_BYPASS );
+
         deleteReferrals( list, opContext.getDn() );
         next.removeContextPartition( opContext );
     }
@@ -909,12 +904,12 @@
     private void addReferrals( NamingEnumeration<ServerSearchResult> referrals, LdapDN base ) throws NamingException
     {
         while ( referrals.hasMore() )
-        {   
-        	ServerSearchResult r = referrals.next();
+        {
+            ServerSearchResult r = referrals.next();
             LdapDN referral;
             LdapDN result = new LdapDN( r.getDn() );
             result.normalize( atRegistry.getNormalizerMapping() );
-            
+
             if ( r.isRelative() )
             {
                 referral = ( LdapDN ) base.clone();
@@ -931,7 +926,7 @@
     {
         while ( referrals.hasMore() )
         {
-        	ServerSearchResult r = referrals.next();
+            ServerSearchResult r = referrals.next();
             LdapDN referral;
             LdapDN result = new LdapDN( r.getDn() );
             result.normalize( atRegistry.getNormalizerMapping() );
@@ -941,7 +936,7 @@
                 referral = ( LdapDN ) base.clone();
                 referral.addAll( result );
             }
-            
+
             // Now, remove the referral from the cache
             lut.referralDeleted( result );
         }
@@ -960,10 +955,9 @@
         {
             return next.search( opContext );
         }
-        
+
         LdapDN base = opContext.getDn();
         SearchControls controls = opContext.getSearchControls();
-        
 
         /**
          * THROW_FINDING_BASE is a special setting which allows for finding base to 
@@ -974,43 +968,47 @@
         {
             if ( lut.isReferral( base ) )
             {
-                ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, base ), PartitionNexusProxy.LOOKUP_BYPASS );
+                ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, base ),
+                    PartitionNexusProxy.LOOKUP_BYPASS );
                 EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
                 doReferralExceptionOnSearchBase( base, refs, controls.getSearchScope() );
             }
 
             LdapDN farthest = lut.getFarthestReferralAncestor( base );
-            
+
             if ( farthest == null )
             {
                 return next.search( opContext );
             }
 
-            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ), PartitionNexusProxy.LOOKUP_BYPASS );
+            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ),
+                PartitionNexusProxy.LOOKUP_BYPASS );
             EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
             doReferralExceptionOnSearchBase( farthest, new LdapDN( base.getUpName() ), refs, controls.getSearchScope() );
             throw new IllegalStateException( "Should never get here: shutting up compiler" );
         }
-        
+
         if ( refval.equals( THROW ) )
         {
             if ( lut.isReferral( base ) )
             {
-                ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, base ), PartitionNexusProxy.LOOKUP_BYPASS );
+                ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, base ),
+                    PartitionNexusProxy.LOOKUP_BYPASS );
                 EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
                 doReferralExceptionOnSearchBase( base, refs, controls.getSearchScope() );
             }
 
             LdapDN farthest = lut.getFarthestReferralAncestor( base );
-            
+
             if ( farthest == null )
             {
-                SearchResultFilteringEnumeration srfe = 
-                    ( SearchResultFilteringEnumeration ) next.search( opContext );
-                return new ReferralHandlingEnumeration( srfe, lut, opContext.getRegistries(), nexus, controls.getSearchScope(), true );
+                SearchResultFilteringEnumeration srfe = ( SearchResultFilteringEnumeration ) next.search( opContext );
+                return new ReferralHandlingEnumeration( srfe, lut, opContext.getRegistries(), nexus, controls
+                    .getSearchScope(), true );
             }
 
-            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ), PartitionNexusProxy.LOOKUP_BYPASS );
+            ServerEntry referral = invocation.getProxy().lookup( new LookupOperationContext( registries, farthest ),
+                PartitionNexusProxy.LOOKUP_BYPASS );
             EntryAttribute refs = referral.get( SchemaConstants.REF_AT );
             doReferralExceptionOnSearchBase( farthest, new LdapDN( base.getUpName() ), refs, controls.getSearchScope() );
             throw new IllegalStateException( "Should never get here: shutting up compiler" );
@@ -1040,8 +1038,8 @@
     {
         // handle referral here
         List<String> list = new ArrayList<String>( refs.size() );
-        
-        for ( Value<?> value:refs )
+
+        for ( Value<?> value : refs )
         {
             String val = ( String ) value.get();
 
@@ -1066,31 +1064,31 @@
             StringBuilder buf = new StringBuilder();
             buf.append( ldapUrl.getScheme() );
             buf.append( ldapUrl.getHost() );
-            
+
             if ( ldapUrl.getPort() > 0 )
             {
                 buf.append( ":" );
                 buf.append( ldapUrl.getPort() );
             }
-            
+
             buf.append( "/" );
             buf.append( LdapURL.urlEncode( ldapUrl.getDn().getUpName(), false ) );
             buf.append( "??" );
 
             switch ( scope )
             {
-                case ( SearchControls.SUBTREE_SCOPE  ):
+                case ( SearchControls.SUBTREE_SCOPE   ):
                     buf.append( "sub" );
                     break;
-                    
-                case ( SearchControls.ONELEVEL_SCOPE  ):
+
+                case ( SearchControls.ONELEVEL_SCOPE   ):
                     buf.append( "one" );
                     break;
-                    
-                case ( SearchControls.OBJECT_SCOPE  ):
+
+                case ( SearchControls.OBJECT_SCOPE   ):
                     buf.append( "base" );
                     break;
-                    
+
                 default:
                     throw new IllegalStateException( "Unknown recognized search scope: " + scope );
             }
@@ -1107,8 +1105,8 @@
     {
         // handle referral here
         List<String> list = new ArrayList<String>( refs.size() );
-        
-        for ( Value<?> value:refs )
+
+        for ( Value<?> value : refs )
         {
             String val = ( String ) value.get();
 
@@ -1121,7 +1119,7 @@
 
             // parse the ref value and normalize the DN according to schema 
             LdapURL ldapUrl = new LdapURL();
-            
+
             try
             {
                 ldapUrl.parse( val.toCharArray() );
@@ -1135,52 +1133,53 @@
             urlDn.normalize( atRegistry.getNormalizerMapping() );
             int diff = targetUpdn.size() - farthest.size();
             LdapDN extra = new LdapDN();
-            
+
             for ( int jj = 0; jj < diff; jj++ )
             {
                 extra.add( targetUpdn.get( farthest.size() + jj ) );
             }
 
             urlDn.addAll( extra );
-            
+
             StringBuilder buf = new StringBuilder();
             buf.append( ldapUrl.getScheme() );
             buf.append( ldapUrl.getHost() );
-            
+
             if ( ldapUrl.getPort() > 0 )
             {
                 buf.append( ":" );
                 buf.append( ldapUrl.getPort() );
             }
-            
+
             buf.append( "/" );
             buf.append( LdapURL.urlEncode( urlDn.getUpName(), false ) );
             buf.append( "??" );
 
             switch ( scope )
             {
-                case ( SearchControls.SUBTREE_SCOPE  ):
+                case ( SearchControls.SUBTREE_SCOPE   ):
                     buf.append( "sub" );
                     break;
-                    
-                case ( SearchControls.ONELEVEL_SCOPE  ):
+
+                case ( SearchControls.ONELEVEL_SCOPE   ):
                     buf.append( "one" );
                     break;
-                    
-                case ( SearchControls.OBJECT_SCOPE  ):
+
+                case ( SearchControls.OBJECT_SCOPE   ):
                     buf.append( "base" );
                     break;
-                    
+
                 default:
                     throw new IllegalStateException( "Unknown recognized search scope: " + scope );
             }
-            
+
             list.add( buf.toString() );
         }
 
         throw new LdapReferralException( list );
     }
 
+
     /**
      * Check if the given name is a referral or not.
      * 
@@ -1201,6 +1200,7 @@
         return lut.isReferral( dn );
     }
 
+
     /**
      * Check if the given name is a referral or not.
      * 
@@ -1210,6 +1210,7 @@
      */
     public boolean isReferral( LdapDN name ) throws NamingException
     {
-  		return lut.isReferral( name.isNormalized() ? name :  LdapDN.normalize( name, atRegistry.getNormalizerMapping() ) );
+        return lut
+            .isReferral( name.isNormalized() ? name : LdapDN.normalize( name, atRegistry.getNormalizerMapping() ) );
     }
 }