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 2014/11/13 10:31:28 UTC
svn commit: r1639276 -
/directory/apacheds/trunk/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
Author: elecharny
Date: Thu Nov 13 09:31:27 2014
New Revision: 1639276
URL: http://svn.apache.org/r1639276
Log:
Fixed a bug in the construction of cursorList
Modified:
directory/apacheds/trunk/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
Modified: directory/apacheds/trunk/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java?rev=1639276&r1=1639275&r2=1639276&view=diff
==============================================================================
--- directory/apacheds/trunk/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java (original)
+++ directory/apacheds/trunk/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java Thu Nov 13 09:31:27 2014
@@ -32,6 +32,7 @@ import java.util.Properties;
import java.util.Set;
import org.apache.directory.api.ldap.model.constants.SchemaConstants;
+import org.apache.directory.api.ldap.model.cursor.CursorException;
import org.apache.directory.api.ldap.model.cursor.EmptyCursor;
import org.apache.directory.api.ldap.model.cursor.SingletonCursor;
import org.apache.directory.api.ldap.model.entry.Attribute;
@@ -57,15 +58,14 @@ import org.apache.directory.api.ldap.mod
import org.apache.directory.api.ldap.model.schema.Normalizer;
import org.apache.directory.api.ldap.model.schema.UsageEnum;
import org.apache.directory.api.ldap.util.tree.DnNode;
-import org.apache.directory.api.util.DateUtils;
import org.apache.directory.api.util.exception.MultiException;
import org.apache.directory.server.constants.ServerDNConstants;
import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.api.InterceptorEnum;
import org.apache.directory.server.core.api.entry.ClonedServerEntry;
-import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
import org.apache.directory.server.core.api.filtering.CursorList;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
+import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
@@ -715,12 +715,33 @@ public class DefaultPartitionNexus exten
{
searchContext.setDn( contextDn );
EntryFilteringCursor cursor = partition.search( searchContext );
- cursors.add( cursor );
+
+ try
+ {
+ if ( cursor.first() )
+ {
+ cursor.beforeFirst();
+ cursors.add( cursor );
+ }
+ }
+ catch ( CursorException e )
+ {
+ // Do nothing
+ }
}
}
// don't feed the above Cursors' list to a BaseEntryFilteringCursor it is skipping the naming context entry of each partition
- return new CursorList( cursors, searchContext );
+ if ( cursors.size() == 0 )
+ {
+ // No candidate, return an emtpy cursor
+ return new EntryFilteringCursorImpl( new EmptyCursor<Entry>(), searchContext,
+ directoryService.getSchemaManager() );
+ }
+ else
+ {
+ return new CursorList( cursors, searchContext );
+ }
}
}
@@ -874,9 +895,9 @@ public class DefaultPartitionNexus exten
if ( !dn.isSchemaAware() )
{
- dn.apply( schemaManager );
+ dn.apply( schemaManager );
}
-
+
synchronized ( partitionLookupTree )
{
parent = partitionLookupTree.getElement( dn );