Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 85799 invoked from network); 13 Mar 2008 20:50:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Mar 2008 20:50:11 -0000 Received: (qmail 98478 invoked by uid 500); 13 Mar 2008 20:50:08 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 98431 invoked by uid 500); 13 Mar 2008 20:50:08 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 98420 invoked by uid 99); 13 Mar 2008 20:50:08 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2008 13:50:08 -0700 X-ASF-Spam-Status: No, hits=-1999.6 required=10.0 tests=ALL_TRUSTED,SUBJECT_FUZZY_TION X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2008 20:49:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 386431A983A; Thu, 13 Mar 2008 13:49:48 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r636880 - /directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java Date: Thu, 13 Mar 2008 20:49:47 -0000 To: commits@directory.apache.org From: akarasulu@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080313204948.386431A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: akarasulu Date: Thu Mar 13 13:49:46 2008 New Revision: 636880 URL: http://svn.apache.org/viewvc?rev=636880&view=rev Log: fixed some bugs getting tests to pass Modified: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java Modified: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java?rev=636880&r1=636879&r2=636880&view=diff ============================================================================== --- directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java (original) +++ directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java Thu Mar 13 13:49:46 2008 @@ -28,6 +28,7 @@ import org.apache.directory.server.core.avltree.AvlTree; import org.apache.directory.server.core.avltree.AvlTreeMarshaller; import org.apache.directory.server.core.avltree.Marshaller; +import org.apache.directory.server.core.avltree.LinkedAvlNode; import org.apache.directory.server.core.cursor.Cursor; import org.apache.directory.server.core.partition.impl.btree.*; import org.apache.directory.server.schema.SerializableComparator; @@ -471,19 +472,19 @@ if ( values.isAvlTree() ) { - AvlTree set = values.getAvlTree(); - Object result; + AvlTree set = values.getAvlTree(); + LinkedAvlNode result; if ( isGreaterThan ) { - result = set.findGreater( val ); + result = set.findGreaterOrEqual( val ); } else { - result = set.findLess( val ); + result = set.findLessOrEqual( val ); } - return ( result != null ); + return result != null; } // last option is to try a btree with BTreeRedirects @@ -660,7 +661,8 @@ { BTree tree = convertToBTree( set ); BTreeRedirect redirect = new BTreeRedirect( tree.getRecid() ); - replaced = ( V ) bt.insert( key, redirect, true ); + replaced = ( V ) bt.insert( key, + BTreeRedirectMarshaller.INSTANCE.serialize( redirect ), true ); } else { @@ -760,7 +762,7 @@ public V remove( K key ) throws IOException { //noinspection unchecked - V returned = ( V ) bt.remove( key ); + Object returned = bt.remove( key ); if ( null == returned ) { @@ -770,18 +772,27 @@ if ( ! allowsDuplicates ) { this.count--; - return returned; + //noinspection unchecked + return ( V ) returned; + } + + if ( ! ( returned instanceof byte[] ) ) + { + throw new IllegalStateException( "Expecting byte[] from returned element." ); } - if ( returned instanceof byte[] ) + byte[] serialized = ( byte[] ) returned; + + if ( BTreeRedirectMarshaller.isNotRedirect( serialized ) ) { //noinspection unchecked - AvlTree set = marshaller.deserialize( ( byte[] ) returned ); + AvlTree set = marshaller.deserialize( serialized ); this.count -= set.getSize(); return set.getFirst().getKey(); } - - BTree tree = getBTree( ( BTreeRedirect ) returned ); + + //noinspection ConstantConditions + BTree tree = getBTree( BTreeRedirectMarshaller.INSTANCE.deserialize( serialized ) ); this.count -= tree.size(); return removeAll( tree ); } @@ -1026,7 +1037,7 @@ if ( valueSerializer != null ) { - tree = BTree.createInstance( recMan, valueComparator, valueSerializer, valueSerializer ); + tree = BTree.createInstance( recMan, valueComparator, valueSerializer, null ); } else {