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 2010/05/19 01:41:33 UTC

svn commit: r945964 - in /directory/apacheds/trunk: jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/ jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/ jdbm/src/main/java/jdbm/btree/

Author: elecharny
Date: Tue May 18 23:41:32 2010
New Revision: 945964

URL: http://svn.apache.org/viewvc?rev=945964&view=rev
Log:
o Removed the createInstance() methods used to create BTree instances, replaced with plain constructors. This allow the user to define generic BTrees easily
o As the Tuple is now generic, modify the using code accordingly
o the BTree.load() method is not anymore static, for the same reason than #1 : generics don't like static methods.

Modified:
    directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java
    directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmBrowserBugTest.java
    directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursorTest.java
    directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyCursorTest.java
    directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java

Modified: directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java?rev=945964&r1=945963&r2=945964&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java (original)
+++ directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmTable.java Tue May 18 23:41:32 2010
@@ -27,6 +27,7 @@ import java.util.Map;
 import jdbm.RecordManager;
 import jdbm.btree.BTree;
 import jdbm.helper.Serializer;
+import jdbm.helper.Tuple;
 import jdbm.helper.TupleBrowser;
 
 import org.apache.directory.server.core.avltree.ArrayMarshaller;
@@ -79,7 +80,7 @@ public class JdbmTable<K,V> implements T
     private int count;
     
     /** the wrappedCursor JDBM btree used in this Table */
-    private BTree bt;
+    private BTree<K, V> bt;
 
     /** the limit at which we start using btree redirection for duplicates */
     private int numDupLimit = JdbmIndex.DEFAULT_DUPLICATE_LIMIT;
@@ -174,7 +175,7 @@ public class JdbmTable<K,V> implements T
             // explicitly managed by this code.  Value serialization is delegated to these
             // marshallers.
 
-            bt = BTree.createInstance( recMan, keyComparator, keySerializer, null );
+            bt = new BTree<K, V>( recMan, keyComparator, keySerializer, null );
             recId = bt.getRecid();
             recMan.setNamedObject( name, recId );
             recId = recMan.insert( 0 );
@@ -182,7 +183,7 @@ public class JdbmTable<K,V> implements T
         }
         else // Load existing BTree
         {
-            bt = BTree.load( recMan, recId );
+            bt= new BTree<K, V>().load( recMan, recId );
             ((SerializableComparator<K>)bt.getComparator()).setSchemaManager( schemaManager );
             recId = recMan.getNamedObject( name + SZSUFFIX );
             count = ( Integer ) recMan.fetch( recId );
@@ -234,7 +235,7 @@ public class JdbmTable<K,V> implements T
 
         if ( recId != 0 )
         {
-            bt = BTree.load( recMan, recId );
+            bt = new BTree<K, V>().load( recMan, recId );
             ((SerializableComparator<K>)bt.getComparator()).setSchemaManager( schemaManager );
             bt.setValueSerializer( valueSerializer );
             recId = recMan.getNamedObject( name + SZSUFFIX );
@@ -242,7 +243,7 @@ public class JdbmTable<K,V> implements T
         }
         else
         {
-            bt = BTree.createInstance( recMan, keyComparator, keySerializer, valueSerializer );
+            bt = new BTree<K, V>( recMan, keyComparator, keySerializer, valueSerializer );
             recId = bt.getRecid();
             recMan.setNamedObject( name, recId );
             recId = recMan.insert( 0 );
@@ -518,7 +519,7 @@ public class JdbmTable<K,V> implements T
     {
         // Can only find greater than or equal to with JDBM so we find that
         // and work backwards to see if we can find one less than the key
-        jdbm.helper.Tuple tuple = bt.findGreaterOrEqual( key );
+        Tuple<K, V> tuple = bt.findGreaterOrEqual( key );
 
         // Test for equality first since it satisfies equal to condition
         if ( null != tuple && keyComparator.compare( ( K ) tuple.getKey(), key ) == 0 )
@@ -546,6 +547,7 @@ public class JdbmTable<K,V> implements T
              * be the previous tuple if it exists.
              */
             TupleBrowser browser = bt.browse( tuple.getKey() );
+            
             if ( browser.getPrevious( tuple ) )
             {
                 return true;
@@ -647,7 +649,7 @@ public class JdbmTable<K,V> implements T
                 {
                     BTree tree = convertToBTree( set );
                     BTreeRedirect redirect = new BTreeRedirect( tree.getRecid() );
-                    bt.insert( key, BTreeRedirectMarshaller.INSTANCE.serialize( redirect ), true );
+                    bt.insert( key, (V)BTreeRedirectMarshaller.INSTANCE.serialize( redirect ), true );
                     
                     if ( LOG.isDebugEnabled() )
                     {
@@ -656,7 +658,7 @@ public class JdbmTable<K,V> implements T
                 }
                 else
                 {
-                    bt.insert( key, marshaller.serialize( set ), true );
+                    bt.insert( key, (V)marshaller.serialize( set ), true );
                     
                     if ( LOG.isDebugEnabled() )
                     {
@@ -748,7 +750,7 @@ public class JdbmTable<K,V> implements T
                     }
                     else
                     {
-                        bt.insert( key, marshaller.serialize( set ), true );
+                        bt.insert( key, (V)marshaller.serialize( set ), true );
                     }
                     count--;
 
@@ -777,7 +779,7 @@ public class JdbmTable<K,V> implements T
                     if ( tree.size() <= numDupLimit )
                     {
                         ArrayTree<V> avlTree = convertToArrayTree( tree );
-                        bt.insert( key, marshaller.serialize( avlTree ), true );
+                        bt.insert( key, (V)marshaller.serialize( avlTree ), true );
                         recMan.delete( tree.getRecid() );
                     }
                     
@@ -1053,7 +1055,7 @@ public class JdbmTable<K,V> implements T
             return duplicateBtrees.get( redirect.getRecId() );
         }
         
-        BTree tree = BTree.load( recMan, redirect.getRecId() );
+        BTree<K, V> tree = new BTree<K, V>().load( recMan, redirect.getRecId() );
         ((SerializableComparator<K>)tree.getComparator()).setSchemaManager( schemaManager );
         duplicateBtrees.put( redirect.getRecId(), tree );
         return tree;
@@ -1119,11 +1121,11 @@ public class JdbmTable<K,V> implements T
 
         if ( valueSerializer != null )
         {
-            bTree = BTree.createInstance( recMan, valueComparator, valueSerializer, null );
+            bTree = new BTree<K, V>( recMan, valueComparator, valueSerializer, null );
         }
         else
         {
-            bTree = BTree.createInstance( recMan, valueComparator );
+            bTree = new BTree<K, V>( recMan, valueComparator );
         }
 
         Cursor<V> keys = new ArrayTreeCursor<V>( arrayTree );

Modified: directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmBrowserBugTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmBrowserBugTest.java?rev=945964&r1=945963&r2=945964&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmBrowserBugTest.java (original)
+++ directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmBrowserBugTest.java Tue May 18 23:41:32 2010
@@ -76,7 +76,7 @@ public class JdbmBrowserBugTest
 
         dbFile = File.createTempFile( getClass().getSimpleName(), "db", tmpDir );
         recman = new BaseRecordManager( dbFile.getAbsolutePath() );
-        bt = BTree.createInstance( recman, new IntegerComparator(), new IntegerSerializer(), new IntegerSerializer() );
+        bt = new BTree<Integer, Integer>( recman, new IntegerComparator(), new IntegerSerializer(), new IntegerSerializer() );
         LOG.debug( "created new BTree" );
     }
 

Modified: directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursorTest.java?rev=945964&r1=945963&r2=945964&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursorTest.java (original)
+++ directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursorTest.java Tue May 18 23:41:32 2010
@@ -78,7 +78,7 @@ public class KeyBTreeCursorTest
         dbFile = File.createTempFile( KeyBTreeCursorTest.class.getName(), "db", tmpDir );
         recman = new BaseRecordManager( dbFile.getAbsolutePath() );
         comparator = new StringComparator();
-        bt = BTree.createInstance( recman, comparator );
+        bt = new BTree<String, byte[]>( recman, comparator );
 
         // add some data to it
         bt.insert( "0", EMPTY_BYTES, true );

Modified: directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyCursorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyCursorTest.java?rev=945964&r1=945963&r2=945964&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyCursorTest.java (original)
+++ directory/apacheds/trunk/jdbm-store/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyCursorTest.java Tue May 18 23:41:32 2010
@@ -78,7 +78,7 @@ public class KeyCursorTest
         dbFile = File.createTempFile( KeyCursorTest.class.getName(), "db", tmpDir );
         recman = new BaseRecordManager( dbFile.getAbsolutePath() );
         comparator = new StringComparator();
-        bt = BTree.createInstance( recman, comparator );
+        bt = new BTree<String, byte[]>( recman, comparator );
 
         // add some data to it
         bt.insert( "0", EMPTY_BYTES, true );

Modified: directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java?rev=945964&r1=945963&r2=945964&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java (original)
+++ directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java Tue May 18 23:41:32 2010
@@ -148,9 +148,9 @@ public class BTree<K, V> implements Exte
      * @param recman Record manager used for persistence.
      * @param comparator Comparator used to order index entries
      */
-    public static BTree createInstance( RecordManager recman, Comparator<?> comparator ) throws IOException
+    public BTree( RecordManager recman, Comparator<?> comparator ) throws IOException
     {
-        return createInstance( recman, comparator, null, null, DEFAULT_SIZE );
+        createInstance( recman, comparator, null, null, DEFAULT_SIZE );
     }
 
 
@@ -162,10 +162,10 @@ public class BTree<K, V> implements Exte
      * @param valueSerializer Serializer used to serialize index values (optional)
      * @param comparator Comparator used to order index entries
      */
-    public static BTree createInstance( RecordManager recman, Comparator<?> comparator, Serializer keySerializer,
+    public BTree( RecordManager recman, Comparator<?> comparator, Serializer keySerializer,
         Serializer valueSerializer ) throws IOException
     {
-        return createInstance( recman, comparator, keySerializer, valueSerializer, DEFAULT_SIZE );
+        createInstance( recman, comparator, keySerializer, valueSerializer, DEFAULT_SIZE );
     }
 
 
@@ -178,11 +178,16 @@ public class BTree<K, V> implements Exte
      * @param valueSerializer Serializer used to serialize index values (optional)
      * @param pageSize Number of entries per page (must be even).
      */
-    public static BTree createInstance( RecordManager recman, Comparator<?> comparator, Serializer keySerializer,
+    public BTree( RecordManager recman, Comparator<?> comparator, Serializer keySerializer,
         Serializer valueSerializer, int pageSize ) throws IOException
     {
-        BTree btree;
-
+        createInstance( recman, comparator, keySerializer, valueSerializer, pageSize );
+    }
+    
+    
+    private void createInstance(RecordManager recman, Comparator<?> comparator, Serializer keySerializer,
+        Serializer valueSerializer, int pageSize) throws IOException
+    {
         if ( recman == null )
         {
             throw new IllegalArgumentException( I18n.err( I18n.ERR_517 ) );
@@ -214,17 +219,14 @@ public class BTree<K, V> implements Exte
             throw new IllegalArgumentException( I18n.err( I18n.ERR_522 ) );
         }
 
-        btree = new BTree();
-        btree.recordManager = recman;
-        btree.comparator = comparator;
-        btree.keySerializer = keySerializer;
-        btree.valueSerializer = valueSerializer;
-        btree.pageSize = pageSize;
-        btree.bpageSerializer = new BPage<Object, Object>();
-        btree.bpageSerializer.btree = btree;
-        btree.recordId = recman.insert( btree );
-        
-        return btree;
+        this.recordManager = recman;
+        this.comparator = comparator;
+        this.keySerializer = keySerializer;
+        this.valueSerializer = valueSerializer;
+        this.pageSize = pageSize;
+        this.bpageSerializer = new BPage<K, V>();
+        this.bpageSerializer.btree = this;
+        this.recordId = recman.insert( this );
     }
 
 
@@ -234,12 +236,12 @@ public class BTree<K, V> implements Exte
      * @param recman RecordManager used to store the persistent btree
      * @param recid Record id of the BTree
      */
-    public static BTree load( RecordManager recman, long recid ) throws IOException
+    public BTree<K, V> load( RecordManager recman, long recid ) throws IOException
     {
-        BTree btree = ( BTree ) recman.fetch( recid );
+        BTree<K, V> btree = (BTree<K, V>) recman.fetch( recid );
         btree.recordId = recid;
         btree.recordManager = recman;
-        btree.bpageSerializer = new BPage<Object, Object>();
+        btree.bpageSerializer = new BPage<K, V>();
         btree.bpageSerializer.btree = btree;
         
         return btree;