You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2011/06/16 12:48:17 UTC

svn commit: r1136367 - /directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java

Author: elecharny
Date: Thu Jun 16 10:48:17 2011
New Revision: 1136367

URL: http://svn.apache.org/viewvc?rev=1136367&view=rev
Log:
Reverted the change made yesterday (http://svn.apache.org/viewvc?rev=1136242&view=rev)

Modified:
    directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java?rev=1136367&r1=1136366&r2=1136367&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java Thu Jun 16 10:48:17 2011
@@ -24,8 +24,6 @@ import static java.lang.Math.min;
 import static org.apache.directory.server.ldap.LdapServer.NO_SIZE_LIMIT;
 import static org.apache.directory.server.ldap.LdapServer.NO_TIME_LIMIT;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.lang.exception.ExceptionUtils;
@@ -360,11 +358,10 @@ public class SearchHandler extends LdapR
     }
 
 
-    private List<Dn> readResults( LdapSession session, SearchRequest req, LdapResult ldapResult,
+    private void readResults( LdapSession session, SearchRequest req, LdapResult ldapResult,
         EntryFilteringCursor cursor, long sizeLimit ) throws Exception
     {
         long count = 0;
-        List<Dn> aliasList = new ArrayList<Dn>();
 
         while ( ( count < sizeLimit ) && cursor.next() )
         {
@@ -383,14 +380,7 @@ public class SearchHandler extends LdapR
                 break;
             }
 
-            Entry entry = cursor.get();
-            
-            // Here, we have to check if the candidate is an alias or not
-            if ( entry.contains( OBJECT_CLASS_AT, SchemaConstants.ALIAS_OC ) )
-            {
-                aliasList.add( entry.getDn() );
-            }
-            
+            ClonedServerEntry entry = cursor.get();
             session.getIoSession().write( generateResponse( session, req, entry ) );
             LOG.debug( "Sending {}", entry.getDn() );
             count++;
@@ -408,8 +398,6 @@ public class SearchHandler extends LdapR
             // Special case if the user has requested more elements than the request size limit
             ldapResult.setResultCode( ResultCodeEnum.SIZE_LIMIT_EXCEEDED );
         }
-        
-        return aliasList;
     }
 
 
@@ -780,65 +768,44 @@ public class SearchHandler extends LdapR
         }
 
         // A normal search
-        // We have to process all the found aliases
-        List<Dn> searchDnList = new ArrayList<Dn>();
-        searchDnList.add( req.getBase() );
-        
-        int currentSearch = 0;
-        
-        while ( currentSearch < searchDnList.size() )
+        // Check that we have a cursor or not.
+        // No cursor : do a search.
+        EntryFilteringCursor cursor = session.getCoreSession().search( req );
+
+        // Position the cursor at the beginning
+        cursor.beforeFirst();
+
+        /*
+         * Iterate through all search results building and sending back responses
+         * for each search result returned.
+         */
+        try
         {
-            if ( req.getBase() == null )
-            {
-                req.setBase( searchDnList.get( currentSearch ) );
-            }
-    
-            EntryFilteringCursor cursor = session.getCoreSession().search( req );
+            // Get the size limits
+            // Don't bother setting size limits for administrators that don't ask for it
+            long serverLimit = getServerSizeLimit( session, req );
+
+            long requestLimit = req.getSizeLimit() == 0L ? Long.MAX_VALUE : req.getSizeLimit();
+
+            req.addAbandonListener( new SearchAbandonListener( ldapServer, cursor ) );
+            setTimeLimitsOnCursor( req, session, cursor );
+            LOG.debug( "using <{},{}> for size limit", requestLimit, serverLimit );
+            long sizeLimit = min( requestLimit, serverLimit );
 
-            // Position the cursor at the beginning
-            cursor.beforeFirst();
-    
-            /*
-             * Iterate through all search results building and sending back responses
-             * for each search result returned.
-             */
-            try
+            readResults( session, req, ldapResult, cursor, sizeLimit );
+        }
+        finally
+        {
+            if ( cursor != null )
             {
-                // Get the size limits
-                // Don't bother setting size limits for administrators that don't ask for it
-                long serverLimit = getServerSizeLimit( session, req );
-    
-                long requestLimit = req.getSizeLimit() == 0L ? Long.MAX_VALUE : req.getSizeLimit();
-    
-                req.addAbandonListener( new SearchAbandonListener( ldapServer, cursor ) );
-                setTimeLimitsOnCursor( req, session, cursor );
-                LOG.debug( "using <{},{}> for size limit", requestLimit, serverLimit );
-                long sizeLimit = min( requestLimit, serverLimit );
-    
-                List<Dn> aliasList = readResults( session, req, ldapResult, cursor, sizeLimit );
-                
-                currentSearch++;
-                
-                if ( aliasList.size() != 0 )
+                try
                 {
-                    searchDnList.addAll( aliasList );
+                    cursor.close();
                 }
-            }
-            finally
-            {
-                if ( cursor != null )
+                catch ( Exception e )
                 {
-                    try
-                    {
-                        cursor.close();
-                    }
-                    catch ( Exception e )
-                    {
-                        LOG.error( I18n.err( I18n.ERR_168 ), e );
-                    }
+                    LOG.error( I18n.err( I18n.ERR_168 ), e );
                 }
-                
-                req.setBase( null );
             }
         }
 
@@ -1204,6 +1171,7 @@ public class SearchHandler extends LdapR
             // if the entry is null we still have to check for a referral ancestor
             // also the referrals need to be adjusted based on the ancestor's ref
             // values to yield the correct path to the entry in the target DSAs
+
             else
             {
                 // The entry is null : it has a parent referral.