You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2010/02/08 22:33:54 UTC

svn commit: r907807 - in /directory/apacheds/trunk/jdbm/src/main/java/jdbm: RecordManager.java recman/FileHeader.java recman/PageManager.java

Author: akarasulu
Date: Mon Feb  8 21:33:54 2010
New Revision: 907807

URL: http://svn.apache.org/viewvc?rev=907807&view=rev
Log:
formatting

Modified:
    directory/apacheds/trunk/jdbm/src/main/java/jdbm/RecordManager.java
    directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/FileHeader.java
    directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/PageManager.java

Modified: directory/apacheds/trunk/jdbm/src/main/java/jdbm/RecordManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm/src/main/java/jdbm/RecordManager.java?rev=907807&r1=907806&r2=907807&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm/src/main/java/jdbm/RecordManager.java (original)
+++ directory/apacheds/trunk/jdbm/src/main/java/jdbm/RecordManager.java Mon Feb  8 21:33:54 2010
@@ -45,12 +45,13 @@
  *
  * $Id: RecordManager.java,v 1.3 2005/06/25 23:12:31 doomdark Exp $
  */
-
 package jdbm;
 
+
 import java.io.IOException;
 import jdbm.helper.Serializer;
 
+
 /**
  *  An interface to manages records, which are uninterpreted blobs of data.
  *  <p>
@@ -66,11 +67,10 @@
  */
 public interface RecordManager
 {
-
     /**
      * Reserved slot for name directory.
      */
-    public static final int NAME_DIRECTORY_ROOT = 0;
+    int NAME_DIRECTORY_ROOT = 0;
 
 
     /**
@@ -80,8 +80,7 @@
      *  @return the rowid for the new record.
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract long insert( Object obj )
-        throws IOException;
+    long insert( Object obj ) throws IOException;
 
     
     /**
@@ -92,8 +91,7 @@
      *  @return the rowid for the new record.
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract long insert( Object obj, Serializer serializer )
-        throws IOException;
+    long insert( Object obj, Serializer serializer ) throws IOException;
 
 
     /**
@@ -102,8 +100,7 @@
      *  @param recid the rowid for the record that should be deleted.
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract void delete( long recid )
-        throws IOException;
+    void delete( long recid ) throws IOException;
 
 
     /**
@@ -113,8 +110,7 @@
      *  @param obj the new object for the record.
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract void update( long recid, Object obj )
-        throws IOException;
+    void update( long recid, Object obj ) throws IOException;
 
 
     /**
@@ -125,8 +121,7 @@
      *  @param serializer a custom serializer
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract void update( long recid, Object obj, Serializer serializer )
-        throws IOException;
+    void update( long recid, Object obj, Serializer serializer ) throws IOException;
 
     
     /**
@@ -136,8 +131,7 @@
      *  @return the object contained in the record.
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract Object fetch( long recid )
-        throws IOException;
+    Object fetch( long recid ) throws IOException;
 
 
     /**
@@ -148,8 +142,7 @@
      *  @return the object contained in the record.
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract Object fetch( long recid, Serializer serializer )
-        throws IOException;
+    Object fetch( long recid, Serializer serializer ) throws IOException;
 
 
     /**
@@ -157,8 +150,7 @@
      *
      *  @throws IOException when one of the underlying I/O operations fails.
      */
-    public abstract void close()
-        throws IOException;
+    void close() throws IOException;
 
 
     /**
@@ -167,7 +159,7 @@
      *  other rowids. Root rowids are useful for bootstrapping access to
      *  a set of data.
      */
-    public abstract int getRootCount();
+    int getRootCount();
 
 
     /**
@@ -175,8 +167,7 @@
      *
      *  @see #getRootCount
      */
-    public abstract long getRoot( int id )
-        throws IOException;
+    long getRoot( int id ) throws IOException;
 
 
     /**
@@ -184,39 +175,31 @@
      *
      *  @see #getRootCount
      */
-    public abstract void setRoot( int id, long rowid )
-        throws IOException;
+    void setRoot( int id, long rowid ) throws IOException;
 
 
     /**
      * Commit (make persistent) all changes since beginning of transaction.
      */
-    public abstract void commit()
-        throws IOException;
+    void commit() throws IOException;
 
 
     /**
      * Rollback (cancel) all changes since beginning of transaction.
      */
-    public abstract void rollback()
-        throws IOException;
-
-
+    void rollback() throws IOException;
 
 
     /**
      * Obtain the record id of a named object. Returns 0 if named object
      * doesn't exist.
      */
-    public abstract long getNamedObject( String name )
-        throws IOException;
+    long getNamedObject( String name ) throws IOException;
 
 
     /**
      * Set the record id of a named object.
      */
-    public abstract void setNamedObject( String name, long recid )
-        throws IOException;
-
+    void setNamedObject( String name, long recid ) throws IOException;
 }
 

Modified: directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/FileHeader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/FileHeader.java?rev=907807&r1=907806&r2=907807&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/FileHeader.java (original)
+++ directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/FileHeader.java Mon Feb  8 21:33:54 2010
@@ -44,93 +44,115 @@
  *
  * $Id: FileHeader.java,v 1.3 2005/06/25 23:12:32 doomdark Exp $
  */
-
 package jdbm.recman;
 
+
 import org.apache.directory.server.i18n.I18n;
 
+
 /**
- *  This class represents a file header. It is a 1:1 representation of
- *  the data that appears in block 0 of a file.
+ * This class represents a file header. It is a 1:1 representation of
+ * the data that appears in block 0 of a file.
  */
-class FileHeader implements BlockView {
+class FileHeader implements BlockView 
+{
     // offsets
     private static final short O_MAGIC = 0; // short magic
     private static final short O_LISTS = Magic.SZ_SHORT; // long[2*NLISTS]
-    private static final int O_ROOTS = 
-        O_LISTS + (Magic.NLISTS * 2 * Magic.SZ_LONG);
+    private static final int O_ROOTS = O_LISTS + ( Magic.NLISTS * 2 * Magic.SZ_LONG );
 
     // my block
     private BlockIo block;
 
     /** The number of "root" rowids available in the file. */
-    static final int NROOTS = 
-        (RecordFile.BLOCK_SIZE - O_ROOTS) / Magic.SZ_LONG;
+    static final int NROOTS = ( RecordFile.BLOCK_SIZE - O_ROOTS ) / Magic.SZ_LONG;
 
+    
     /**
-     *  Constructs a FileHeader object from a block.
+     * Constructs a FileHeader object from a block.
      *
-     *  @param block The block that contains the file header
-     *  @param isNew If true, the file header is for a new file.
-     *  @throws IOException if the block is too short to keep the file
-     *          header.
+     * @param block The block that contains the file header
+     * @param isNew If true, the file header is for a new file.
+     * @throws IOException if the block is too short to keep the file
+     *         header.
      */
-    FileHeader(BlockIo block, boolean isNew) {
+    FileHeader( BlockIo block, boolean isNew ) 
+    {
         this.block = block;
-        if (isNew)
-            block.writeShort(O_MAGIC, Magic.FILE_HEADER);
-        else if (!magicOk())
-            throw new Error( I18n.err( I18n.ERR_544, block.readShort(O_MAGIC) ) );
-    }
-
-    /** Returns true if the magic corresponds with the fileHeader magic.  */
-    private boolean magicOk() {
-        return block.readShort(O_MAGIC) == Magic.FILE_HEADER;
+        
+        if ( isNew )
+        {
+            block.writeShort( O_MAGIC, Magic.FILE_HEADER );
+        }
+        else if ( block.readShort( O_MAGIC ) != Magic.FILE_HEADER )
+        {
+            throw new Error( I18n.err( I18n.ERR_544, block.readShort( O_MAGIC ) ) );
+        }
     }
 
 
-    /** Returns the offset of the "first" block of the indicated list */
-    private short offsetOfFirst(int list) {
-        return (short) (O_LISTS + (2 * Magic.SZ_LONG * list));
+    /** 
+     * Returns the offset of the "first" block of the indicated list 
+     */
+    private short offsetOfFirst( int list ) 
+    {
+        return ( short ) ( O_LISTS + ( 2 * Magic.SZ_LONG * list ) );
     }
 
-    /** Returns the offset of the "last" block of the indicated list */
-    private short offsetOfLast(int list) {
-        return (short) (offsetOfFirst(list) + Magic.SZ_LONG);
+    
+    /** 
+     * Returns the offset of the "last" block of the indicated list 
+     */
+    private short offsetOfLast( int list ) 
+    {
+        return ( short ) ( offsetOfFirst( list ) + Magic.SZ_LONG );
     }
 
-    /** Returns the offset of the indicated root */
-    private short offsetOfRoot(int root) {
-        return (short) (O_ROOTS + (root * Magic.SZ_LONG));
+    
+    /** 
+     * Returns the offset of the indicated root 
+     */
+    private short offsetOfRoot( int root ) 
+    {
+        return ( short ) ( O_ROOTS + ( root * Magic.SZ_LONG ) );
     }
 
+    
     /**
-     *  Returns the first block of the indicated list
+     * Returns the first block of the indicated list
      */
-    long getFirstOf(int list) {
-        return block.readLong(offsetOfFirst(list));
+    long getFirstOf( int list ) 
+    {
+        return block.readLong( offsetOfFirst( list ) );
     }
     
+    
     /**
-     *  Sets the first block of the indicated list
+     * Sets the first block of the indicated list
      */
-    void setFirstOf(int list, long value) {
-        block.writeLong(offsetOfFirst(list), value);
+    void setFirstOf( int list, long value ) 
+    {
+        block.writeLong( offsetOfFirst( list ), value );
     }
     
+    
     /**
-     *  Returns the last block of the indicated list
+     * Returns the last block of the indicated list
      */
-    long getLastOf(int list) {
-        return block.readLong(offsetOfLast(list));
+    long getLastOf( int list ) 
+    {
+        return block.readLong( offsetOfLast( list ) );
     }
     
+    
     /**
-     *  Sets the last block of the indicated list
+     * Sets the last block of the indicated list
      */
-    void setLastOf(int list, long value) {
-        block.writeLong(offsetOfLast(list), value);
+    void setLastOf( int list, long value ) 
+    {
+        block.writeLong( offsetOfLast( list ), value );
     }
+    
 
     /**
      *  Returns the indicated root rowid. A root rowid is a special rowid
@@ -141,17 +163,20 @@
      *
      *  @see #NROOTS
      */
-    long getRoot(int root) {
-        return block.readLong(offsetOfRoot(root));
+    long getRoot( int root ) 
+    {
+        return block.readLong( offsetOfRoot( root ) );
     }
 
+    
     /**
      *  Sets the indicated root rowid.
      *
      *  @see #getRoot
      *  @see #NROOTS
      */
-    void setRoot(int root, long rowid) {
-        block.writeLong(offsetOfRoot(root), rowid);
+    void setRoot( int root, long rowid ) 
+    {
+        block.writeLong( offsetOfRoot( root ), rowid );
     }
 }

Modified: directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/PageManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/PageManager.java?rev=907807&r1=907806&r2=907807&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/PageManager.java (original)
+++ directory/apacheds/trunk/jdbm/src/main/java/jdbm/recman/PageManager.java Mon Feb  8 21:33:54 2010
@@ -44,231 +44,295 @@
  *
  * $Id: PageManager.java,v 1.3 2005/06/25 23:12:32 doomdark Exp $
  */
-
 package jdbm.recman;
 
+
 import java.io.*;
 
 import org.apache.directory.server.i18n.I18n;
 
+
 /**
- *  This class manages the linked lists of pages that make up a file.
+ * This class manages the linked lists of pages that make up a file.
  */
-final class PageManager {
+final class PageManager 
+{
     // our record file
     private RecordFile file;
     // header data
     private FileHeader header;
+    // file header containing block
     private BlockIo headerBuf;
+
     
     /**
-     *  Creates a new page manager using the indicated record file.
+     * Creates a new page manager using the indicated record file.
      */
-    PageManager(RecordFile file) throws IOException {
+    PageManager( RecordFile file ) throws IOException 
+    {
         this.file = file;
         
-        // check the file header. If the magic is 0, we assume a new
-        // file. Note that we hold on to the file header node.
-        headerBuf = file.get(0);
-        if (headerBuf.readShort(0) == 0)
-            header = new FileHeader(headerBuf, true);
-        else
-            header = new FileHeader(headerBuf, false);
+        // Note that we hold on to the file header node.
+        headerBuf = file.get( 0 );
+        
+        // Assume file is new if the file header's magic number is 0. 
+        if ( headerBuf.readShort( 0 ) == 0 )
+        {
+            header = new FileHeader( headerBuf, true );
+        }
+        else // header is for existing file
+        {
+            header = new FileHeader( headerBuf, false );
+        }
     }
     
+    
     /**
-     *  Allocates a page of the indicated type. Returns recid of the
-     *  page.
+     * Allocates a page of the indicated type. Returns recid of the page.
      */
-    long allocate(short type) throws IOException {
-        
-        if (type == Magic.FREE_PAGE)
+    long allocate( short type ) throws IOException 
+    {
+        if ( type == Magic.FREE_PAGE )
+        {
             throw new Error( I18n.err( I18n.ERR_548 ) );
+        }
         
-        // do we have something on the free list?
-        long retval = header.getFirstOf(Magic.FREE_PAGE);
         boolean isNew = false;
-        if (retval != 0) {
+        
+        // Do we have something on the free list?
+        long retval = header.getFirstOf( Magic.FREE_PAGE );
+        if ( retval != 0 ) 
+        {
             // yes. Point to it and make the next of that page the
             // new first free page.
-            header.setFirstOf(Magic.FREE_PAGE, getNext(retval));
+            header.setFirstOf( Magic.FREE_PAGE, getNext( retval ) );
         }
-        else {
+        else 
+        {
             // nope. make a new record
-            retval = header.getLastOf(Magic.FREE_PAGE);
-            if (retval == 0)
+            retval = header.getLastOf( Magic.FREE_PAGE );
+
+            if ( retval == 0 )
+            {
                 // very new file - allocate record #1
                 retval = 1;
-            header.setLastOf(Magic.FREE_PAGE, retval + 1);
+            }
+            
+            header.setLastOf( Magic.FREE_PAGE, retval + 1 );
             isNew = true;
         }
         
         // Cool. We have a record, add it to the correct list
-        BlockIo buf = file.get(retval);
-        PageHeader pageHdr = isNew ? new PageHeader(buf, type) 
-            : PageHeader.getView(buf);
-        long oldLast = header.getLastOf(type);
+        BlockIo buf = file.get( retval );
+        PageHeader pageHdr = null;
         
-        // Clean data.
-        System.arraycopy(RecordFile.cleanData, 0, 
-                         buf.getData(), 0, 
-                         RecordFile.BLOCK_SIZE);
-        pageHdr.setType(type);
-        pageHdr.setPrev(oldLast);
-        pageHdr.setNext(0);
+        if ( isNew )
+        {
+            pageHdr = new PageHeader( buf, type );
+        }
+        else
+        {
+            pageHdr = PageHeader.getView( buf );
+        }
         
+        long oldLast = header.getLastOf( type );
+        
+        // Clean data.
+        System.arraycopy( RecordFile.cleanData, 0, buf.getData(), 0, RecordFile.BLOCK_SIZE );
+        pageHdr.setType( type );
+        pageHdr.setPrev( oldLast );
+        pageHdr.setNext( 0 );
         
-        if (oldLast == 0)
+        if ( oldLast == 0 )
+        {
             // This was the first one of this type
-            header.setFirstOf(type, retval);
-        header.setLastOf(type, retval);
-        file.release(retval, true);
+            header.setFirstOf( type, retval );
+        }
+        
+        header.setLastOf( type, retval );
+        file.release( retval, true );
         
         // If there's a previous, fix up its pointer
-        if (oldLast != 0) {
-            buf = file.get(oldLast);
-            pageHdr = PageHeader.getView(buf);
-            pageHdr.setNext(retval);
-            file.release(oldLast, true);
+        if ( oldLast != 0 ) 
+        {
+            buf = file.get( oldLast );
+            pageHdr = PageHeader.getView( buf );
+            pageHdr.setNext( retval );
+            file.release( oldLast, true );
         }
         
         // remove the view, we have modified the type.
-        buf.setView(null);
+        buf.setView( null );
         
         return retval;
     }
     
+    
     /**
-     *  Frees a page of the indicated type.
+     * Frees a page of the indicated type.
      */
-    void free(short type, long recid) throws IOException {
-        if (type == Magic.FREE_PAGE)
+    void free( short type, long recid ) throws IOException 
+    {
+        if ( type == Magic.FREE_PAGE )
+        {
             throw new Error( I18n.err( I18n.ERR_549 ) );
+        }
+        
         if (recid == 0)
+        {
             throw new Error( I18n.err( I18n.ERR_550 ) );
+        }
         
         // get the page and read next and previous pointers
-        BlockIo buf = file.get(recid);
-        PageHeader pageHdr = PageHeader.getView(buf);
+        BlockIo buf = file.get( recid );
+        PageHeader pageHdr = PageHeader.getView( buf );
         long prev = pageHdr.getPrev();
         long next = pageHdr.getNext();
         
         // put the page at the front of the free list.
-        pageHdr.setType(Magic.FREE_PAGE);
-        pageHdr.setNext(header.getFirstOf(Magic.FREE_PAGE));
-        pageHdr.setPrev(0);
+        pageHdr.setType( Magic.FREE_PAGE );
+        pageHdr.setNext( header.getFirstOf( Magic.FREE_PAGE ) );
+        pageHdr.setPrev( 0 );
         
-        header.setFirstOf(Magic.FREE_PAGE, recid);
-        file.release(recid, true);
+        header.setFirstOf( Magic.FREE_PAGE, recid );
+        file.release( recid, true );
         
         // remove the page from its old list
-        if (prev != 0) {
-            buf = file.get(prev);
-            pageHdr = PageHeader.getView(buf);
-            pageHdr.setNext(next);
-            file.release(prev, true);
+        if ( prev != 0 ) 
+        {
+            buf = file.get( prev );
+            pageHdr = PageHeader.getView( buf );
+            pageHdr.setNext( next );
+            file.release( prev, true );
         }
-        else {
-            header.setFirstOf(type, next);
+        else 
+        {
+            header.setFirstOf( type, next );
         }
-        if (next != 0) {
-            buf = file.get(next);
-            pageHdr = PageHeader.getView(buf);
-            pageHdr.setPrev(prev);
-            file.release(next, true);
+        
+        if ( next != 0 ) 
+        {
+            buf = file.get( next );
+            pageHdr = PageHeader.getView( buf );
+            pageHdr.setPrev( prev );
+            file.release( next, true );
         }
-        else {
-            header.setLastOf(type, prev);
+        else 
+        {
+            header.setLastOf( type, prev );
         }
-        
     }
     
     
     /**
-     *  Returns the page following the indicated block
+     * Returns the page following the indicated block
      */
-    long getNext(long block) throws IOException {
-        try {
-            return PageHeader.getView(file.get(block)).getNext();
-        } finally {
-            file.release(block, false);
+    long getNext( long block ) throws IOException 
+    {
+        try 
+        {
+            return PageHeader.getView( file.get( block ) ).getNext();
+        } 
+        finally 
+        {
+            file.release( block, false );
         }
     }
     
+    
     /**
-     *  Returns the page before the indicated block
+     * Returns the page before the indicated block
      */
-    long getPrev(long block) throws IOException {
-        try {
-            return PageHeader.getView(file.get(block)).getPrev();
-        } finally {
-            file.release(block, false);
+    long getPrev( long block ) throws IOException 
+    {
+        try 
+        {
+            return PageHeader.getView( file.get( block ) ).getPrev();
+        } 
+        finally 
+        {
+            file.release( block, false );
         }
     }
     
+    
     /**
-     *  Returns the first page on the indicated list.
+     * Returns the first page on the indicated list.
      */
-    long getFirst(short type) throws IOException {
-        return header.getFirstOf(type);
+    long getFirst( short type ) throws IOException 
+    {
+        return header.getFirstOf( type );
     }
 
+    
     /**
-     *  Returns the last page on the indicated list.
+     * Returns the last page on the indicated list.
      */
-    long getLast(short type) throws IOException {
-        return header.getLastOf(type);
+    long getLast( short type ) throws IOException 
+    {
+        return header.getLastOf( type );
     }
     
     
     /**
-     *  Commit all pending (in-memory) data by flushing the page manager.
-     *  This forces a flush of all outstanding blocks (this it's an implicit
-     *  {@link RecordFile#commit} as well).
+     * Commit all pending (in-memory) data by flushing the page manager.
+     * This forces a flush of all outstanding blocks (this it's an implicit
+     * {@link RecordFile#commit} as well).
      */
-    void commit() throws IOException {
+    void commit() throws IOException 
+    {
         // write the header out
-        file.release(headerBuf);
+        file.release( headerBuf );
         file.commit();
 
         // and obtain it again
-        headerBuf = file.get(0);
-        header = new FileHeader(headerBuf, false);
+        headerBuf = file.get( 0 );
+        header = new FileHeader( headerBuf, false );
     }
 
+    
     /**
      *  Flushes the page manager. This forces a flush of all outstanding
      *  blocks (this it's an implicit {@link RecordFile#commit} as well).
      */
-    void rollback() throws IOException {
+    void rollback() throws IOException 
+    {
         // release header
-        file.discard(headerBuf);
+        file.discard( headerBuf );
         file.rollback();
         // and obtain it again
-        headerBuf = file.get(0);
-        if (headerBuf.readShort(0) == 0)
-            header = new FileHeader(headerBuf, true);
+        headerBuf = file.get( 0 );
+        
+        if ( headerBuf.readShort( 0 ) == 0 )
+        {
+            header = new FileHeader( headerBuf, true );
+        }
         else
-            header = new FileHeader(headerBuf, false);
+        {
+            header = new FileHeader( headerBuf, false );
+        }
     }
     
+    
     /**
      *  Closes the page manager. This flushes the page manager and releases
      *  the lock on the header.
      */
-    void close() throws IOException {   
-        file.release(headerBuf);
+    void close() throws IOException 
+    {   
+        file.release( headerBuf );
         file.commit();
         headerBuf = null;
         header = null;
         file = null;
     }
     
+    
     /**
      *  Returns the file header.
      */
-    FileHeader getFileHeader() {
+    FileHeader getFileHeader() 
+    {
         return header;
-    }
-    
+    }    
 }