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 2012/04/03 03:16:17 UTC
svn commit: r1308644 - in /directory/apacheds/trunk:
core-avl/src/main/java/org/apache/directory/server/core/avltree/
jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/
xdbm-partition/src/main/java/org/apache/direc...
Author: elecharny
Date: Tue Apr 3 01:16:16 2012
New Revision: 1308644
URL: http://svn.apache.org/viewvc?rev=1308644&view=rev
Log:
o Fixed some compilation error
o Added a parameter for indexes to configure them to use the reverse table, or not
Modified:
directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java
directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java
directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmRdnIndex.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java
directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndex.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndexCursor.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/Index.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlIndex.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlRdnIndex.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultSearchEngine.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringCursor.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java
directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/PartitionTest.java
directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlPartitionTest.java
Modified: directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java (original)
+++ directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java Tue Apr 3 01:16:16 2012
@@ -22,7 +22,7 @@ package org.apache.directory.server.core
import java.util.Comparator;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -32,7 +32,7 @@ import org.apache.directory.shared.ldap.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class AvlSingletonOrOrderedSetCursor<K, V> extends AbstractTupleCursor<K, SingletonOrOrderedSet<V>>
+public class AvlSingletonOrOrderedSetCursor<K, V> extends AbstractCursor<Tuple<K, SingletonOrOrderedSet<V>>>
{
/** The underlying AVL tree map */
private AvlTreeMap<K, V> tree;
Modified: directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java (original)
+++ directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java Tue Apr 3 01:16:16 2012
@@ -20,7 +20,7 @@
package org.apache.directory.server.core.avltree;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -28,11 +28,11 @@ import org.apache.directory.shared.ldap.
/**
* A cursor that converts SingletonOrOrderedSet objects in the value from a
* AvlTreeMap into Tuples with just K and V presuming that all the keys have
- * no duplicates.
+ * no duplicates.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class AvlTreeMapNoDupsWrapperCursor<K, V> extends AbstractTupleCursor<K, V>
+public class AvlTreeMapNoDupsWrapperCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private final AvlSingletonOrOrderedSetCursor<K, V> wrapped;
private final Tuple<K, V> returnedTuple = new Tuple<K, V>();
Modified: directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java (original)
+++ directory/apacheds/trunk/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java Tue Apr 3 01:16:16 2012
@@ -20,7 +20,7 @@ package org.apache.directory.server.core
import org.apache.directory.server.i18n.I18n;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -32,7 +32,7 @@ import org.apache.directory.shared.ldap.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class KeyTupleAvlCursor<K, V> extends AbstractTupleCursor<K, V>
+public class KeyTupleAvlCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private final AvlTreeCursor<V> wrapped;
private final K key;
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.core.partition.impl.btree.jdbm;
@@ -26,7 +26,7 @@ import jdbm.btree.BTree;
import jdbm.helper.TupleBrowser;
import org.apache.directory.server.i18n.I18n;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -39,7 +39,7 @@ import org.apache.directory.shared.ldap.
* @param K The Key
* @param V The associated value
*/
-public class DupsContainerCursor<K, V> extends AbstractTupleCursor<K, DupsContainer<V>>
+public class DupsContainerCursor<K, V> extends AbstractCursor<Tuple<K, DupsContainer<V>>>
{
/** The JDBM table we are building a cursor over */
private final JdbmTable<K, V> table;
@@ -135,7 +135,7 @@ public class DupsContainerCursor<K, V> e
while ( browser.getNext( jdbmTuple ) )
{
checkNotClosed( "afterKey()" );
- K next = ( K ) jdbmTuple.getKey();
+ K next = jdbmTuple.getKey();
int nextCompared = table.getKeyComparator().compare( next, key );
@@ -286,7 +286,7 @@ public class DupsContainerCursor<K, V> e
if ( valueAvailable )
{
- returnedTuple.setKey( ( K ) jdbmTuple.getKey() );
+ returnedTuple.setKey( jdbmTuple.getKey() );
returnedTuple.setValue( table.getDupsContainer( ( byte[] ) jdbmTuple.getValue() ) );
}
else
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.core.partition.impl.btree.jdbm;
@@ -24,7 +24,7 @@ import jdbm.btree.BTree;
import org.apache.directory.server.core.avltree.ArrayTree;
import org.apache.directory.server.core.avltree.ArrayTreeCursor;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.Cursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-class DupsCursor<K, V> extends AbstractTupleCursor<K, V>
+class DupsCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private static final Logger LOG = LoggerFactory.getLogger( DupsCursor.class.getSimpleName() );
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java Tue Apr 3 01:16:16 2012
@@ -33,9 +33,11 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.partition.impl.btree.LongComparator;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.server.xdbm.AbstractIndex;
+import org.apache.directory.server.xdbm.EmptyIndexCursor;
import org.apache.directory.server.xdbm.Index;
import org.apache.directory.server.xdbm.IndexCursor;
import org.apache.directory.shared.ldap.model.cursor.Cursor;
+import org.apache.directory.shared.ldap.model.cursor.EmptyCursor;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.apache.directory.shared.ldap.model.schema.MatchingRule;
@@ -120,7 +122,7 @@ public class JdbmIndex<K, O> extends Abs
*/
public JdbmIndex()
{
- super();
+ super( true );
initialized = false;
}
@@ -130,7 +132,17 @@ public class JdbmIndex<K, O> extends Abs
*/
public JdbmIndex( String attributeId )
{
- super( attributeId );
+ super( attributeId, true );
+ initialized = false;
+ }
+
+
+ /**
+ * Creates a JdbmIndex instance for a give AttributeId
+ */
+ public JdbmIndex( String attributeId, boolean withReverse )
+ {
+ super( attributeId, withReverse );
initialized = false;
}
@@ -225,16 +237,19 @@ public class JdbmIndex<K, O> extends Abs
* is single valued according to its specification based on a schema
* then duplicate keys should not be allowed within the reverse table.
*/
- if ( attributeType.isSingleValued() )
+ if ( withReverse )
{
- reverse = new JdbmTable<Long, K>( schemaManager, attributeType.getOid() + REVERSE_BTREE, recMan,
- LongComparator.INSTANCE, LongSerializer.INSTANCE, null );
- }
- else
- {
- reverse = new JdbmTable<Long, K>( schemaManager, attributeType.getOid() + REVERSE_BTREE, numDupLimit,
- recMan,
- LongComparator.INSTANCE, comp, LongSerializer.INSTANCE, null );
+ if ( attributeType.isSingleValued() )
+ {
+ reverse = new JdbmTable<Long, K>( schemaManager, attributeType.getOid() + REVERSE_BTREE, recMan,
+ LongComparator.INSTANCE, LongSerializer.INSTANCE, null );
+ }
+ else
+ {
+ reverse = new JdbmTable<Long, K>( schemaManager, attributeType.getOid() + REVERSE_BTREE, numDupLimit,
+ recMan,
+ LongComparator.INSTANCE, comp, LongSerializer.INSTANCE, null );
+ }
}
}
@@ -347,7 +362,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public K reverseLookup( Long id ) throws Exception
{
- return reverse.get( id );
+ if ( withReverse )
+ {
+ return reverse.get( id );
+ }
+ else
+ {
+ return null;
+ }
}
@@ -362,7 +384,11 @@ public class JdbmIndex<K, O> extends Abs
{
// The pair to be removed must exists
forward.put( attrVal, id );
- reverse.put( id, attrVal );
+
+ if ( withReverse )
+ {
+ reverse.put( id, attrVal );
+ }
}
@@ -375,7 +401,11 @@ public class JdbmIndex<K, O> extends Abs
if ( forward.has( attrVal, id ) )
{
forward.remove( attrVal, id );
- reverse.remove( id, attrVal );
+
+ if ( withReverse )
+ {
+ reverse.remove( id, attrVal );
+ }
}
}
@@ -396,7 +426,10 @@ public class JdbmIndex<K, O> extends Abs
}
// Remove the id -> key from the reverse index
- reverse.remove( entryId );
+ if ( withReverse )
+ {
+ reverse.remove( entryId );
+ }
}
@@ -406,7 +439,14 @@ public class JdbmIndex<K, O> extends Abs
@SuppressWarnings("unchecked")
public IndexCursor<K, O, Long> reverseCursor() throws Exception
{
- return new IndexCursorAdaptor<K, O, Long>( ( Cursor ) reverse.cursor(), false );
+ if ( withReverse )
+ {
+ return new IndexCursorAdaptor<K, O, Long>( ( Cursor ) reverse.cursor(), false );
+ }
+ else
+ {
+ return new EmptyIndexCursor<K, O, Long>();
+ }
}
@@ -420,7 +460,14 @@ public class JdbmIndex<K, O> extends Abs
@SuppressWarnings("unchecked")
public IndexCursor<K, O, Long> reverseCursor( Long id ) throws Exception
{
- return new IndexCursorAdaptor<K, O, Long>( ( Cursor ) reverse.cursor( id ), false );
+ if ( withReverse )
+ {
+ return new IndexCursorAdaptor<K, O, Long>( ( Cursor ) reverse.cursor( id ), false );
+ }
+ else
+ {
+ return new EmptyIndexCursor<K, O, Long>();
+ }
}
@@ -433,7 +480,14 @@ public class JdbmIndex<K, O> extends Abs
public Cursor<K> reverseValueCursor( Long id ) throws Exception
{
- return reverse.valueCursor( id );
+ if ( withReverse )
+ {
+ return reverse.valueCursor( id );
+ }
+ else
+ {
+ return new EmptyCursor<K>();
+ }
}
@@ -469,7 +523,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public boolean reverse( Long id ) throws Exception
{
- return reverse.has( id );
+ if ( withReverse )
+ {
+ return reverse.has( id );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -523,7 +584,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public boolean reverseGreaterOrEq( Long id ) throws Exception
{
- return reverse.hasGreaterOrEqual( id );
+ if ( withReverse )
+ {
+ return reverse.hasGreaterOrEqual( id );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -532,7 +600,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public boolean reverseGreaterOrEq( Long id, K attrVal ) throws Exception
{
- return reverse.hasGreaterOrEqual( id, attrVal );
+ if ( withReverse )
+ {
+ return reverse.hasGreaterOrEqual( id, attrVal );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -541,7 +616,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public boolean reverseLessOrEq( Long id ) throws Exception
{
- return reverse.hasLessOrEqual( id );
+ if ( withReverse )
+ {
+ return reverse.hasLessOrEqual( id );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -550,7 +632,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public boolean reverseLessOrEq( Long id, K attrVal ) throws Exception
{
- return reverse.hasLessOrEqual( id, attrVal );
+ if ( withReverse )
+ {
+ return reverse.hasLessOrEqual( id, attrVal );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -591,7 +680,14 @@ public class JdbmIndex<K, O> extends Abs
*/
public boolean isDupsEnabled()
{
- return reverse.isDupsEnabled();
+ if ( withReverse )
+ {
+ return reverse.isDupsEnabled();
+ }
+ else
+ {
+ return false;
+ }
}
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java Tue Apr 3 01:16:16 2012
@@ -358,7 +358,7 @@ public class JdbmPartition extends Abstr
{
LOG.debug( "Supplied index {} is not a JdbmIndex. "
+ "Will create new JdbmIndex using copied configuration parameters.", index );
- jdbmIndex = new JdbmIndex( index.getAttributeId() );
+ jdbmIndex = new JdbmIndex( index.getAttributeId(), true );
jdbmIndex.setCacheSize( index.getCacheSize() );
jdbmIndex.setNumDupLimit( JdbmIndex.DEFAULT_DUPLICATE_LIMIT );
jdbmIndex.setWkDirPath( index.getWkDirPath() );
@@ -413,7 +413,7 @@ public class JdbmPartition extends Abstr
/**
* {@inheritDoc}
*/
- protected final Index createSystemIndex( String oid, URI path ) throws Exception
+ protected final Index createSystemIndex( String oid, URI path, boolean withReverse ) throws Exception
{
LOG.debug( "Supplied index {} is not a JdbmIndex. " +
"Will create new JdbmIndex using copied configuration parameters." );
@@ -427,7 +427,7 @@ public class JdbmPartition extends Abstr
}
else
{
- jdbmIndex = new JdbmIndex( oid );
+ jdbmIndex = new JdbmIndex( oid, withReverse );
jdbmIndex.setNumDupLimit( JdbmIndex.DEFAULT_DUPLICATE_LIMIT );
}
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmRdnIndex.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmRdnIndex.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmRdnIndex.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmRdnIndex.java Tue Apr 3 01:16:16 2012
@@ -55,6 +55,7 @@ public class JdbmRdnIndex<E> extends Jdb
public JdbmRdnIndex()
{
+ super();
initialized = false;
}
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java Tue Apr 3 01:16:16 2012
@@ -22,7 +22,7 @@ package org.apache.directory.server.core
import org.apache.directory.server.core.avltree.ArrayTree;
import org.apache.directory.server.core.avltree.ArrayTreeCursor;
import org.apache.directory.server.i18n.I18n;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -34,7 +34,7 @@ import org.apache.directory.shared.ldap.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class KeyTupleArrayCursor<K, V> extends AbstractTupleCursor<K, V>
+public class KeyTupleArrayCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private final ArrayTreeCursor<V> wrapped;
private final K key;
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java Tue Apr 3 01:16:16 2012
@@ -25,7 +25,7 @@ import jdbm.btree.BTree;
import jdbm.helper.TupleBrowser;
import org.apache.directory.server.i18n.I18n;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -37,7 +37,7 @@ import org.apache.directory.shared.ldap.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class KeyTupleBTreeCursor<K, V> extends AbstractTupleCursor<K, V>
+public class KeyTupleBTreeCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private final Comparator<V> comparator;
private final BTree btree;
Modified: directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java (original)
+++ directory/apacheds/trunk/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java Tue Apr 3 01:16:16 2012
@@ -24,7 +24,7 @@ import java.io.IOException;
import jdbm.helper.TupleBrowser;
import org.apache.directory.server.i18n.I18n;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
@@ -37,7 +37,7 @@ import org.apache.directory.shared.ldap.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-class NoDupsCursor<K, V> extends AbstractTupleCursor<K, V>
+class NoDupsCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private final JdbmTable<K, V> table;
@@ -190,7 +190,7 @@ class NoDupsCursor<K, V> extends Abstrac
if ( browser.getPrevious( jdbmTuple ) )
{
if ( returnedTuple.getKey() != null && table.getKeyComparator().compare(
- ( K ) jdbmTuple.getKey(), ( K ) returnedTuple.getKey() ) == 0 )
+ ( K ) jdbmTuple.getKey(), returnedTuple.getKey() ) == 0 )
{
browser.getPrevious( jdbmTuple );
}
@@ -211,6 +211,7 @@ class NoDupsCursor<K, V> extends Abstrac
public boolean next() throws Exception
{
checkNotClosed( "previous()" );
+
if ( browser == null )
{
beforeFirst();
@@ -219,7 +220,7 @@ class NoDupsCursor<K, V> extends Abstrac
if ( browser.getNext( jdbmTuple ) )
{
if ( returnedTuple.getKey() != null && table.getKeyComparator().compare(
- ( K ) jdbmTuple.getKey(), ( K ) returnedTuple.getKey() ) == 0 )
+ ( K ) jdbmTuple.getKey(), returnedTuple.getKey() ) == 0 )
{
browser.getNext( jdbmTuple );
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java Tue Apr 3 01:16:16 2012
@@ -159,7 +159,7 @@ public class AvlPartition extends Abstra
{
LOG.debug( "Supplied index {} is not a AvlIndex. "
+ "Will create new AvlIndex using copied configuration parameters.", index );
- avlIndex = new AvlIndex( index.getAttributeId() );
+ avlIndex = new AvlIndex( index.getAttributeId(), true );
}
avlIndex.init( schemaManager, schemaManager.lookupAttributeTypeRegistry( index.getAttributeId() ) );
@@ -171,7 +171,7 @@ public class AvlPartition extends Abstra
/**
* {@inheritDoc}
*/
- protected final Index createSystemIndex( String oid, URI path ) throws Exception
+ protected final Index createSystemIndex( String oid, URI path, boolean withReverse ) throws Exception
{
LOG.debug( "Supplied index {} is not a JdbmIndex. "
+ "Will create new JdbmIndex using copied configuration parameters." );
@@ -186,7 +186,7 @@ public class AvlPartition extends Abstra
{
LOG.debug( "Supplied index {} is not a AvlIndex. "
+ "Will create new AvlIndex using copied configuration parameters." );
- avlIndex = new AvlIndex( oid );
+ avlIndex = new AvlIndex( oid, withReverse );
}
return avlIndex;
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java Tue Apr 3 01:16:16 2012
@@ -175,6 +175,8 @@ public abstract class AbstractBTreeParti
protected AttributeType ENTRY_UUID_AT;
protected AttributeType ALIASED_OBJECT_NAME_AT;
+ private static final boolean NO_REVERSE = Boolean.FALSE;
+ private static final boolean WITH_REVERSE = Boolean.TRUE;
// ------------------------------------------------------------------------
// C O N S T R U C T O R S
@@ -285,61 +287,61 @@ public abstract class AbstractBTreeParti
// add missing system indices
if ( getPresenceIndex() == null )
{
- Index<String, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_PRESENCE_AT_OID, partitionPath );
+ Index<String, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_PRESENCE_AT_OID, partitionPath, NO_REVERSE );
addIndex( index );
}
if ( getOneLevelIndex() == null )
{
- Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_ONE_LEVEL_AT_OID, partitionPath );
+ Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_ONE_LEVEL_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getSubLevelIndex() == null )
{
- Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_SUB_LEVEL_AT_OID, partitionPath );
+ Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_SUB_LEVEL_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getRdnIndex() == null )
{
- Index<ParentIdAndRdn<ID>, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_RDN_AT_OID, partitionPath );
+ Index<ParentIdAndRdn<ID>, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_RDN_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getAliasIndex() == null )
{
- Index<String, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_ALIAS_AT_OID, partitionPath );
+ Index<String, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_ALIAS_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getOneAliasIndex() == null )
{
- Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_ONE_ALIAS_AT_OID, partitionPath );
+ Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_ONE_ALIAS_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getSubAliasIndex() == null )
{
- Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_SUB_ALIAS_AT_OID, partitionPath );
+ Index<ID, Entry, ID> index = createSystemIndex( ApacheSchemaConstants.APACHE_SUB_ALIAS_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getObjectClassIndex() == null )
{
- Index<String, Entry, ID> index = createSystemIndex( SchemaConstants.OBJECT_CLASS_AT_OID, partitionPath );
+ Index<String, Entry, ID> index = createSystemIndex( SchemaConstants.OBJECT_CLASS_AT_OID, partitionPath, NO_REVERSE );
addIndex( index );
}
if ( getEntryUuidIndex() == null )
{
- Index<String, Entry, ID> index = createSystemIndex( SchemaConstants.ENTRY_UUID_AT_OID, partitionPath );
+ Index<String, Entry, ID> index = createSystemIndex( SchemaConstants.ENTRY_UUID_AT_OID, partitionPath, WITH_REVERSE );
addIndex( index );
}
if ( getEntryCsnIndex() == null )
{
- Index<String, Entry, ID> index = createSystemIndex( SchemaConstants.ENTRY_CSN_AT_OID, partitionPath );
+ Index<String, Entry, ID> index = createSystemIndex( SchemaConstants.ENTRY_CSN_AT_OID, partitionPath, NO_REVERSE );
addIndex( index );
}
@@ -756,8 +758,8 @@ public abstract class AbstractBTreeParti
rdnIdx.drop( id );
oneLevelIdx.drop( id );
subLevelIdx.drop( id );
- entryCsnIdx.drop( id );
- entryUuidIdx.drop( id );
+ entryCsnIdx.drop( entry.get( ENTRY_CSN_AT ).getString(), id );
+ entryUuidIdx.drop( entry.get( ENTRY_UUID_AT ).getString(), id );
// Update the user indexes
for ( Attribute attribute : entry )
@@ -1148,11 +1150,11 @@ public abstract class AbstractBTreeParti
{
// if the id exists in the index drop all existing attribute
// value index entries and add new ones
- if ( objectClassIdx.reverse( id ) )
+ for ( Value<?> value : entry.get( OBJECT_CLASS_AT ) )
{
- objectClassIdx.drop( id );
+ objectClassIdx.drop( value.getString(), id );
}
-
+
for ( Value<?> value : mods )
{
objectClassIdx.add( value.getString(), id );
@@ -1245,7 +1247,10 @@ public abstract class AbstractBTreeParti
*/
if ( mods.size() == 0 )
{
- objectClassIdx.drop( id );
+ for ( Value<?> objectClass : entry.get( OBJECT_CLASS_AT ) )
+ {
+ objectClassIdx.drop( objectClass.getString(), id );
+ }
}
else
{
@@ -1818,8 +1823,9 @@ public abstract class AbstractBTreeParti
*/
private void updateCsnIndex( Entry entry, ID id ) throws Exception
{
- entryCsnIdx.drop( id );
- entryCsnIdx.add( entry.get( SchemaConstants.ENTRY_CSN_AT ).getString(), id );
+ String entryCsn = entry.get( SchemaConstants.ENTRY_CSN_AT ).getString();
+ entryCsnIdx.drop( entryCsn, id );
+ entryCsnIdx.add( entryCsn, id );
}
@@ -2624,5 +2630,5 @@ public abstract class AbstractBTreeParti
* @return The created index
* @throws Exception If the index can't be created
*/
- protected abstract Index createSystemIndex( String indexOid, URI path ) throws Exception;
+ protected abstract Index createSystemIndex( String indexOid, URI path, boolean withReverse ) throws Exception;
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java Tue Apr 3 01:16:16 2012
@@ -6,22 +6,23 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.core.partition.impl.btree;
import java.util.Iterator;
+import org.apache.directory.server.xdbm.AbstractIndexCursor;
import org.apache.directory.server.xdbm.ForwardIndexEntry;
import org.apache.directory.server.xdbm.IndexCursor;
import org.apache.directory.server.xdbm.IndexEntry;
@@ -31,7 +32,6 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.model.cursor.Cursor;
import org.apache.directory.shared.ldap.model.cursor.CursorIterator;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
-import org.apache.directory.shared.ldap.model.cursor.TupleCursor;
/**
@@ -40,7 +40,7 @@ import org.apache.directory.shared.ldap.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class IndexCursorAdaptor<K, O, ID> implements IndexCursor<K, O, ID>
+public class IndexCursorAdaptor<K, O, ID> extends AbstractIndexCursor<K, O, ID>
{
@SuppressWarnings("unchecked")
final Cursor<Tuple> wrappedCursor;
@@ -83,9 +83,9 @@ public class IndexCursorAdaptor<K, O, ID
@SuppressWarnings("unchecked")
public void beforeValue( ID id, K key ) throws Exception
{
- if ( wrappedCursor instanceof TupleCursor )
+ if ( wrappedCursor instanceof IndexCursor )
{
- ( ( TupleCursor ) wrappedCursor ).beforeValue( key, id );
+ ( ( IndexCursor ) wrappedCursor ).beforeValue( key, id );
}
}
@@ -93,9 +93,9 @@ public class IndexCursorAdaptor<K, O, ID
@SuppressWarnings("unchecked")
public void afterValue( ID id, K key ) throws Exception
{
- if ( wrappedCursor instanceof TupleCursor )
+ if ( wrappedCursor instanceof IndexCursor )
{
- ( ( TupleCursor ) wrappedCursor ).afterValue( key, id );
+ ( ( IndexCursor ) wrappedCursor ).afterValue( key, id );
}
}
@@ -234,4 +234,12 @@ public class IndexCursorAdaptor<K, O, ID
throw new UnsupportedOperationException( I18n.err( I18n.ERR_02014_UNSUPPORTED_OPERATION, getClass().getName()
.concat( "." ).concat( "isLast()" ) ) );
}
+
+ /**
+ * {@inheritDoc}
+ */
+ protected String getUnsupportedMessage()
+ {
+ return UNSUPPORTED_MSG;
+ }
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndex.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndex.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndex.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndex.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.xdbm;
@@ -44,6 +44,8 @@ public abstract class AbstractIndex<K, O
/** whether or not this index has been initialized */
protected boolean initialized;
+ /** Tells if this index has a Reverse table */
+ protected boolean withReverse;
/**
* Creates a new instance of AbstractIndex.
@@ -52,6 +54,18 @@ public abstract class AbstractIndex<K, O
*/
protected AbstractIndex()
{
+ this.withReverse = true;
+ }
+
+
+ /**
+ * Creates a new instance of AbstractIndex.
+ *
+ * @param attributeId the attribute ID
+ */
+ protected AbstractIndex( boolean withReverse )
+ {
+ this.withReverse = withReverse;
}
@@ -60,9 +74,10 @@ public abstract class AbstractIndex<K, O
*
* @param attributeId the attribute ID
*/
- protected AbstractIndex( String attributeId )
+ protected AbstractIndex( String attributeId, boolean withReverse )
{
this.attributeId = attributeId;
+ this.withReverse = withReverse;
}
@@ -132,4 +147,13 @@ public abstract class AbstractIndex<K, O
throw new IllegalStateException( I18n.err( I18n.ERR_575, property ) );
}
}
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean hasReverse()
+ {
+ return withReverse;
+ }
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndexCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndexCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndexCursor.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractIndexCursor.java Tue Apr 3 01:16:16 2012
@@ -102,53 +102,4 @@ public abstract class AbstractIndexCurso
{
return this.available = available;
}
-
-
- /**
- * {@inheritDoc}
- */
- public Iterator<IndexEntry<V, ID>> iterator()
- {
- return new CursorIterator<IndexEntry<V, ID>>( this );
- }
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isAfterLast() throws Exception
- {
- throw new UnsupportedOperationException( I18n.err( I18n.ERR_02014_UNSUPPORTED_OPERATION, getClass().getName()
- .concat( "." ).concat( "isAfterLast()" ) ) );
- }
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isBeforeFirst() throws Exception
- {
- throw new UnsupportedOperationException( I18n.err( I18n.ERR_02014_UNSUPPORTED_OPERATION, getClass().getName()
- .concat( "." ).concat( "isBeforeFirst()" ) ) );
- }
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isFirst() throws Exception
- {
- throw new UnsupportedOperationException( I18n.err( I18n.ERR_02014_UNSUPPORTED_OPERATION, getClass().getName()
- .concat( "." ).concat( "isFirst()" ) ) );
- }
-
-
- /**
- * {@inheritDoc}
- */
- public boolean isLast() throws Exception
- {
- throw new UnsupportedOperationException( I18n.err( I18n.ERR_02014_UNSUPPORTED_OPERATION, getClass().getName()
- .concat( "." ).concat( "isLast()" ) ) );
- }
}
\ No newline at end of file
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/Index.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/Index.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/Index.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/Index.java Tue Apr 3 01:16:16 2012
@@ -261,4 +261,11 @@ public interface Index<K, O, ID>
* @return true if duplicate keys are allowed false otherwise
*/
boolean isDupsEnabled();
+
+
+ /**
+ * Tells if the index has a reverse table or not
+ * @return true if the index has a reverse table
+ */
+ boolean hasReverse();
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlIndex.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlIndex.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlIndex.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlIndex.java Tue Apr 3 01:16:16 2012
@@ -26,8 +26,10 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.partition.impl.btree.LongComparator;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.server.xdbm.AbstractIndex;
+import org.apache.directory.server.xdbm.EmptyIndexCursor;
import org.apache.directory.server.xdbm.IndexCursor;
import org.apache.directory.shared.ldap.model.cursor.Cursor;
+import org.apache.directory.shared.ldap.model.cursor.EmptyCursor;
import org.apache.directory.shared.ldap.model.cursor.Tuple;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.apache.directory.shared.ldap.model.schema.LdapComparator;
@@ -50,13 +52,19 @@ public class AvlIndex<K, O> extends Abst
public AvlIndex()
{
- super();
+ super( true );
}
public AvlIndex( String attributeId )
{
- super( attributeId );
+ super( attributeId, true );
+ }
+
+
+ public AvlIndex( String attributeId, boolean withReverse )
+ {
+ super( attributeId, withReverse );
}
@@ -98,13 +106,16 @@ public class AvlIndex<K, O> extends Abst
* is single valued according to its specification based on a schema
* then duplicate keys should not be allowed within the reverse table.
*/
- if ( attributeType.isSingleValued() )
+ if ( withReverse )
{
- reverse = new AvlTable<Long, K>( attributeType.getName(), LongComparator.INSTANCE, comp, false );
- }
- else
- {
- reverse = new AvlTable<Long, K>( attributeType.getName(), LongComparator.INSTANCE, comp, true );
+ if ( attributeType.isSingleValued() )
+ {
+ reverse = new AvlTable<Long, K>( attributeType.getName(), LongComparator.INSTANCE, comp, false );
+ }
+ else
+ {
+ reverse = new AvlTable<Long, K>( attributeType.getName(), LongComparator.INSTANCE, comp, true );
+ }
}
}
@@ -112,7 +123,11 @@ public class AvlIndex<K, O> extends Abst
public void add( K attrVal, Long id ) throws Exception
{
forward.put( attrVal, id );
- reverse.put( id, attrVal );
+
+ if ( withReverse )
+ {
+ reverse.put( id, attrVal );
+ }
}
@@ -156,15 +171,18 @@ public class AvlIndex<K, O> extends Abst
*/
public void drop( Long id ) throws Exception
{
- Cursor<Tuple<Long, K>> cursor = reverse.cursor( id );
-
- while ( cursor.next() )
+ if ( withReverse )
{
- Tuple<Long, K> tuple = cursor.get();
- forward.remove( tuple.getValue(), id );
+ Cursor<Tuple<Long, K>> cursor = reverse.cursor( id );
+
+ while ( cursor.next() )
+ {
+ Tuple<Long, K> tuple = cursor.get();
+ forward.remove( tuple.getValue(), id );
+ }
+
+ reverse.remove( id );
}
-
- reverse.remove( id );
}
@@ -174,7 +192,11 @@ public class AvlIndex<K, O> extends Abst
public void drop( K attrVal, Long id ) throws Exception
{
forward.remove( attrVal, id );
- reverse.remove( id, attrVal );
+
+ if ( withReverse )
+ {
+ reverse.remove( id, attrVal );
+ }
}
@@ -293,7 +315,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean reverse( Long id ) throws Exception
{
- return reverse.has( id );
+ if ( withReverse )
+ {
+ return reverse.has( id );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -302,7 +331,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean reverse( Long id, K attrVal ) throws Exception
{
- return reverse.has( id, attrVal );
+ if ( withReverse )
+ {
+ return reverse.has( id, attrVal );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -312,7 +348,14 @@ public class AvlIndex<K, O> extends Abst
@SuppressWarnings("unchecked")
public IndexCursor<K, O, Long> reverseCursor() throws Exception
{
- return new IndexCursorAdaptor( reverse.cursor(), false );
+ if ( withReverse )
+ {
+ return new IndexCursorAdaptor( reverse.cursor(), false );
+ }
+ else
+ {
+ return new EmptyIndexCursor<K, O, Long>();
+ }
}
@@ -322,7 +365,14 @@ public class AvlIndex<K, O> extends Abst
@SuppressWarnings("unchecked")
public IndexCursor<K, O, Long> reverseCursor( Long id ) throws Exception
{
- return new IndexCursorAdaptor( reverse.cursor( id ), false );
+ if ( withReverse )
+ {
+ return new IndexCursorAdaptor( reverse.cursor( id ), false );
+ }
+ else
+ {
+ return new EmptyIndexCursor<K, O, Long>();
+ }
}
@@ -331,7 +381,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean reverseGreaterOrEq( Long id ) throws Exception
{
- return reverse.hasGreaterOrEqual( id );
+ if ( withReverse )
+ {
+ return reverse.hasGreaterOrEqual( id );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -340,7 +397,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean reverseGreaterOrEq( Long id, K attrVal ) throws Exception
{
- return reverse.hasGreaterOrEqual( id, attrVal );
+ if ( withReverse )
+ {
+ return reverse.hasGreaterOrEqual( id, attrVal );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -349,7 +413,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean reverseLessOrEq( Long id ) throws Exception
{
- return reverse.hasLessOrEqual( id );
+ if ( withReverse )
+ {
+ return reverse.hasLessOrEqual( id );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -358,7 +429,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean reverseLessOrEq( Long id, K attrVal ) throws Exception
{
- return reverse.hasLessOrEqual( id, attrVal );
+ if ( withReverse )
+ {
+ return reverse.hasLessOrEqual( id, attrVal );
+ }
+ else
+ {
+ return false;
+ }
}
@@ -367,7 +445,14 @@ public class AvlIndex<K, O> extends Abst
*/
public K reverseLookup( Long id ) throws Exception
{
- return reverse.get( id );
+ if ( withReverse )
+ {
+ return reverse.get( id );
+ }
+ else
+ {
+ return null;
+ }
}
@@ -376,7 +461,14 @@ public class AvlIndex<K, O> extends Abst
*/
public Cursor<K> reverseValueCursor( Long id ) throws Exception
{
- return reverse.valueCursor( id );
+ if ( withReverse )
+ {
+ return reverse.valueCursor( id );
+ }
+ else
+ {
+ return new EmptyCursor<K>();
+ }
}
@@ -403,7 +495,14 @@ public class AvlIndex<K, O> extends Abst
*/
public boolean isDupsEnabled()
{
- return reverse.isDupsEnabled();
+ if ( withReverse )
+ {
+ return reverse.isDupsEnabled();
+ }
+ else
+ {
+ return false;
+ }
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlRdnIndex.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlRdnIndex.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlRdnIndex.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlRdnIndex.java Tue Apr 3 01:16:16 2012
@@ -40,12 +40,13 @@ public class AvlRdnIndex<E> extends AvlI
public AvlRdnIndex()
{
+ super();
}
public AvlRdnIndex( String attributeId )
{
- super( attributeId );
+ super( attributeId, true );
}
@@ -77,7 +78,7 @@ public class AvlRdnIndex<E> extends AvlI
LongComparator.INSTANCE.setSchemaManager( schemaManager );
/*
- * The forward key/value map stores attribute values to master table
+ * The forward key/value map stores attribute values to master table
* primary keys. A value for an attribute can occur several times in
* different entries so the forward map can have more than one value.
*/
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java Tue Apr 3 01:16:16 2012
@@ -24,7 +24,7 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.avltree.AvlTree;
import org.apache.directory.server.core.avltree.AvlTreeCursor;
import org.apache.directory.server.core.avltree.SingletonOrOrderedSet;
-import org.apache.directory.shared.ldap.model.cursor.AbstractTupleCursor;
+import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
import org.apache.directory.shared.ldap.model.cursor.Cursor;
import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
import org.apache.directory.shared.ldap.model.cursor.SingletonCursor;
@@ -35,12 +35,12 @@ import org.slf4j.LoggerFactory;
/**
* A Cursor which walks and advance over AvlTables that may contain duplicate
- * keys with values stored in an AvlTree. All duplicate keys are traversed
+ * keys with values stored in an AvlTree. All duplicate keys are traversed
* returning the key and the value in a Tuple.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class AvlTableDupsCursor<K, V> extends AbstractTupleCursor<K, V>
+public class AvlTableDupsCursor<K, V> extends AbstractCursor<Tuple<K, V>>
{
private static final Logger LOG = LoggerFactory.getLogger( AvlTableDupsCursor.class.getSimpleName() );
@@ -136,10 +136,10 @@ public class AvlTableDupsCursor<K, V> ex
return;
}
- /*
- * The cursor over the values is only advanced if we're on the
+ /*
+ * The cursor over the values is only advanced if we're on the
* same key as the primary cursor. This is because we want this
- * method to really position us within a set of duplicate key
+ * method to really position us within a set of duplicate key
* entries at the proper value.
*/
if ( table.getKeyComparator().compare( wrappedTuple.getKey(), key ) == 0 )
@@ -427,7 +427,7 @@ public class AvlTableDupsCursor<K, V> ex
/*
* If we get to this point then cursor has more elements and
- * wrappedTuple holds the Tuple containing the key and the
+ * wrappedTuple holds the Tuple containing the key and the
* AvlTree of values for that key which the Cursor traverses. All we
* need to do is populate our tuple object with the key and the value
* in the cursor.
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultSearchEngine.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultSearchEngine.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultSearchEngine.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/DefaultSearchEngine.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.xdbm.search.impl;
@@ -96,7 +96,7 @@ public class DefaultSearchEngine<ID exte
/**
- * @see SearchEngine#cursor(org.apache.directory.shared.ldap.model.name.Dn, org.apache.directory.shared.ldap.model.message.AliasDerefMode, ExprNode, SearchControls)
+ * {@inheritDoc}
*/
public IndexCursor<ID, Entry, ID> cursor( Dn base, AliasDerefMode aliasDerefMode, ExprNode filter,
SearchControls searchCtls ) throws Exception
@@ -134,7 +134,6 @@ public class DefaultSearchEngine<ID exte
{
effectiveBase = base;
}
-
/*
* If the base is an alias and alias dereferencing does occur on
* finding the base then we set the effective base to the alias target
@@ -152,6 +151,7 @@ public class DefaultSearchEngine<ID exte
if ( searchCtls.getSearchScope() == SearchControls.OBJECT_SCOPE )
{
ID effectiveBaseId = baseId;
+
if ( effectiveBase != base )
{
effectiveBaseId = db.getEntryId( effectiveBase );
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringCursor.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringCursor.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringCursor.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.xdbm.search.impl;
@@ -116,7 +116,7 @@ public class SubstringCursor<ID extends
checkNotClosed( "afterLast()" );
// to keep the cursor always *after* the last matched tuple
- // This fixes an issue if the last matched tuple is also the last record present in the
+ // This fixes an issue if the last matched tuple is also the last record present in the
// index. In this case the wrapped cursor is positioning on the last tuple instead of positioning after that
wrapped.afterLast();
clear();
@@ -185,6 +185,7 @@ public class SubstringCursor<ID extends
this.indexEntry.setId( entry.getId() );
this.indexEntry.setValue( entry.getValue() );
this.indexEntry.setEntry( entry.getEntry() );
+
return true;
}
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.xdbm.search.impl;
@@ -127,8 +127,7 @@ public class SubstringEvaluator<ID exten
@SuppressWarnings("unchecked")
public boolean evaluate( IndexEntry<?, ID> indexEntry ) throws Exception
{
-
- if ( idx == null )
+ if ( ( idx == null ) || ( !idx.hasReverse() ) )
{
return evaluateWithoutIndex( ( IndexEntry<String, ID> ) indexEntry );
}
@@ -196,7 +195,7 @@ public class SubstringEvaluator<ID exten
IndexEntry<String, ID> rec = entries.get();
// once match is found cleanup and return true
- if ( regex.matcher( ( String ) rec.getValue() ).matches() )
+ if ( regex.matcher( rec.getValue() ).matches() )
{
entries.close();
return true;
@@ -232,7 +231,7 @@ public class SubstringEvaluator<ID exten
IndexEntry<String, ID> rec = entries.get();
// once match is found cleanup and return true
- if ( regex.matcher( ( String ) rec.getValue() ).matches() )
+ if ( regex.matcher( rec.getValue() ).matches() )
{
entries.close();
return true;
Modified: directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/PartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/PartitionTest.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/PartitionTest.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/PartitionTest.java Tue Apr 3 01:16:16 2012
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.xdbm;
@@ -307,8 +307,8 @@ public class PartitionTest
{
Dn dn = new Dn( schemaManager, "cn=JOhnny WAlkeR,ou=Sales,o=Good Times Co." );
- Attribute attrib = new DefaultAttribute( SchemaConstants.OBJECT_CLASS_AT, schemaManager
- .lookupAttributeTypeRegistry( SchemaConstants.OBJECT_CLASS_AT ) );
+ Attribute attrib = new DefaultAttribute( "ObjectClass", schemaManager
+ .lookupAttributeTypeRegistry( "ObjectClass" ) );
Modification add = new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, attrib );
@@ -316,14 +316,12 @@ public class PartitionTest
Entry lookedup = partition.lookup( entryId );
// before modification: expect "person" tuple in objectClass index
- assertTrue( partition.getObjectClassIndex().reverse( entryId ) );
assertTrue( partition.getObjectClassIndex().forward( "person", entryId ) );
assertTrue( lookedup.get( "objectClass" ).contains( "person" ) );
lookedup = partition.modify( dn, add );
// after modification: no tuple in objectClass index
- assertFalse( partition.getObjectClassIndex().reverse( entryId ) );
assertFalse( partition.getObjectClassIndex().forward( "person", entryId ) );
assertNull( lookedup.get( "objectClass" ) );
}
@@ -347,13 +345,11 @@ public class PartitionTest
Entry lookedup = partition.lookup( entryId );
assertNotSame( csn, lookedup.get( csnAt ).getString() );
- assertNotSame( csn, partition.getEntryCsnIndex().reverseLookup( entryId ) );
lookedup = partition.modify( dn, add );
String updateCsn = lookedup.get( csnAt ).getString();
assertEquals( csn, updateCsn );
- assertEquals( csn, partition.getEntryCsnIndex().reverseLookup( entryId ) );
csn = csnF.newInstance().toString();
@@ -361,13 +357,11 @@ public class PartitionTest
modEntry.add( csnAt, csn );
assertNotSame( csn, updateCsn );
- assertNotSame( csn, partition.getEntryCsnIndex().reverseLookup( entryId ) );
lookedup = partition
.modify( dn, new DefaultModification( ModificationOperation.REPLACE_ATTRIBUTE, csnAt, csn ) );
assertEquals( csn, lookedup.get( csnAt ).getString() );
- assertEquals( csn, partition.getEntryCsnIndex().reverseLookup( entryId ) );
}
Modified: directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlPartitionTest.java?rev=1308644&r1=1308643&r2=1308644&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlPartitionTest.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlPartitionTest.java Tue Apr 3 01:16:16 2012
@@ -414,12 +414,15 @@ public class AvlPartitionTest
{
assertEquals( 3, partition.getChildCount( 1L ) );
- Cursor<IndexEntry<Long, Long>> cursor = partition.list( 1L );
+ Cursor<IndexEntry<Long, Long>> cursor = partition.list( 2L );
assertNotNull( cursor );
cursor.beforeFirst();
assertTrue( cursor.next() );
- assertEquals( 2L, ( long ) cursor.get().getId() );
+ assertEquals( 5L, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
+ assertEquals( 6L, ( long ) cursor.get().getId() );
+ assertFalse( cursor.next() );
+
assertEquals( 3, partition.getChildCount( 1L ) );
partition.delete( 2L );