From fb93ac337143c7212c183ef5dbc9cc4fa71d5831 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 20 Nov 2014 10:22:11 +0000
Subject: [PATCH] Code cleanup

---
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java           |   44 ++------
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java |  143 +++++++++++-----------------
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java         |   59 +++++------
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryID.java            |   52 ++++-----
 4 files changed, 119 insertions(+), 179 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryID.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryID.java
index 41e2cd4..620673d 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryID.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryID.java
@@ -22,6 +22,7 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.backends.jeb;
 
@@ -35,15 +36,10 @@
  */
 public class EntryID implements Comparable<EntryID>
 {
-  /**
-   * The identifier integer value.
-   */
-  private final Long id;
-
-  /**
-   * The value in database format, created when necessary.
-   */
-  private DatabaseEntry data = null;
+  /** The identifier integer value. */
+  private final long id;
+  /** The value in database format, created when necessary. */
+  private DatabaseEntry data;
 
   /**
    * Create a new entry ID object from a given long value.
@@ -55,15 +51,6 @@
   }
 
   /**
-   * Create a new entry ID object from a given Long value.
-   * @param id the Long value of the ID.
-   */
-  public EntryID(Long id)
-  {
-    this.id = id;
-  }
-
-  /**
    * Create a new entry ID object from a value in database format.
    * @param databaseEntry The database value of the ID.
    */
@@ -108,9 +95,19 @@
    * @throws ClassCastException if the specified object's type prevents it
    *                            from being compared to this Object.
    */
+  @Override
   public int compareTo(EntryID that) throws ClassCastException
   {
-    return this.id.compareTo(that.id);
+    final long result = this.id - that.id;
+    if (result < 0)
+    {
+      return -1;
+    }
+    else if (result > 0)
+    {
+      return 1;
+    }
+    return 0;
   }
 
   /**
@@ -122,12 +119,9 @@
    * @see     #hashCode()
    * @see     java.util.Hashtable
    */
-  @Override public boolean equals(Object that)
+  @Override
+  public boolean equals(Object that)
   {
-    if (that == null)
-    {
-      return false;
-    }
     if (this == that)
     {
       return true;
@@ -136,7 +130,7 @@
     {
       return false;
     }
-    return this.id.equals(((EntryID)that).id);
+    return this.id == ((EntryID) that).id;
   }
 
   /**
@@ -148,17 +142,19 @@
    * @see     java.lang.Object#equals(java.lang.Object)
    * @see     java.util.Hashtable
    */
-  @Override public int hashCode()
+  @Override
+  public int hashCode()
   {
-    return (int)id.longValue();
+    return (int) id;
   }
 
   /**
    * Get a string representation of this object.
    * @return A string representation of this object.
    */
+  @Override
   public String toString()
   {
-    return id.toString();
+    return Long.toString(id);
   }
 }
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java
index 0cf2cd6..5b062a6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java
@@ -43,7 +43,7 @@
    * The IDs are stored here in an array in ascending order.
    * A null array implies not defined, rather than zero IDs.
    */
-  private long[] values = null;
+  private long[] values;
 
   /**
    * The size of the set when it is not defined. This value is only maintained
@@ -55,15 +55,13 @@
    * The database key containing this set, if the set was constructed
    * directly from the database.
    */
-  private ByteString keyBytes;
+  private final ByteString keyBytes;
 
-  /**
-   * Create a new undefined set.
-   */
+  /** Create a new undefined set. */
   public EntryIDSet()
   {
-    values = null;
-    undefinedSize = Long.MAX_VALUE;
+    this.keyBytes = null;
+    this.undefinedSize = Long.MAX_VALUE;
   }
 
   /**
@@ -73,8 +71,8 @@
    */
   public EntryIDSet(long size)
   {
-    values = null;
-    undefinedSize = size;
+    this.keyBytes = null;
+    this.undefinedSize = size;
   }
 
   /**
@@ -110,13 +108,11 @@
     if (bytes.length() == 0)
     {
       // Entry limit has exceeded and there is no encoded undefined set size.
-      values = null;
       undefinedSize = Long.MAX_VALUE;
     }
     else if ((bytes.byteAt(0) & 0x80) == 0x80)
     {
       // Entry limit has exceeded and there is an encoded undefined set size.
-      values = null;
       undefinedSize =
           JebFormat.entryIDUndefinedSizeFromDatabase(bytes.toByteArray());
     }
@@ -137,6 +133,7 @@
    */
   EntryIDSet(long[] values, int pos, int len)
   {
+    this.keyBytes = null;
     this.values = new long[len];
     System.arraycopy(values, pos, this.values, 0, len);
   }
@@ -427,12 +424,10 @@
       return true;
     }
 
-    long id = entryID.longValue();
-    if (values.length == 0 || id > values[values.length - 1])
-    {
-      return false;
-    }
-    return Arrays.binarySearch(values, id) >= 0;
+    final long id = entryID.longValue();
+    return values.length != 0
+        && id <= values[values.length - 1]
+        && Arrays.binarySearch(values, id) >= 0;
   }
 
   /**
@@ -443,7 +438,7 @@
    */
   public void retainAll(EntryIDSet that)
   {
-    if (!this.isDefined())
+    if (!isDefined())
     {
       this.values = that.values;
       this.undefinedSize = that.undefinedSize;
@@ -504,7 +499,7 @@
       return;
     }
 
-    if (!this.isDefined())
+    if (!isDefined())
     {
       // Assume there are no overlap between IDs in that set with this set
       if(undefinedSize != Long.MAX_VALUE)
@@ -611,7 +606,7 @@
       return;
     }
 
-    if (!this.isDefined())
+    if (!isDefined())
     {
       // Assume all IDs in the given set exists in this set.
       if(undefinedSize != Long.MAX_VALUE)
@@ -680,16 +675,16 @@
   @Override
   public Iterator<EntryID> iterator()
   {
-    if (values == null)
-    {
-      // The set is not defined.
-      return new IDSetIterator(new long[0]);
-    }
-    else
+    if (values != null)
     {
       // The set is defined.
       return new IDSetIterator(values);
     }
+    else
+    {
+      // The set is not defined.
+      return new IDSetIterator(new long[0]);
+    }
   }
 
   /**
@@ -702,16 +697,16 @@
    */
   public Iterator<EntryID> iterator(EntryID begin)
   {
-    if (values == null)
-    {
-      // The set is not defined.
-      return new IDSetIterator(new long[0]);
-    }
-    else
+    if (values != null)
     {
       // The set is defined.
       return new IDSetIterator(values, begin);
     }
+    else
+    {
+      // The set is not defined.
+      return new IDSetIterator(new long[0]);
+    }
   }
 
 }
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
index bad9434..f2c1ccf 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
@@ -54,22 +54,16 @@
 /**
  * Represents the database containing the LDAP entries. The database key is
  * the entry ID and the value is the entry contents.
- *
  */
 public class ID2Entry extends DatabaseContainer
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
-  /**
-   * Parameters for compression and encryption.
-   */
+  /** Parameters for compression and encryption. */
   private DataConfig dataConfig;
 
-  /**
-   * Cached encoding buffers.
-   */
-  private static final ThreadLocal<EntryCodec> ENTRY_CODEC_CACHE =
-      new ThreadLocal<EntryCodec>()
+  /** Cached encoding buffers. */
+  private static final ThreadLocal<EntryCodec> ENTRY_CODEC_CACHE = new ThreadLocal<EntryCodec>()
   {
     @Override
     protected EntryCodec initialValue()
@@ -100,8 +94,7 @@
 
     private final ByteStringBuilder encodedBuffer = new ByteStringBuilder();
     private final ByteStringBuilder entryBuffer = new ByteStringBuilder();
-    private final ByteStringBuilder compressedEntryBuffer =
-        new ByteStringBuilder();
+    private final ByteStringBuilder compressedEntryBuffer = new ByteStringBuilder();
     private final ASN1Writer writer;
     private final int maxBufferSize;
 
@@ -177,12 +170,10 @@
         throws DirectoryException
     {
       encodeVolatile(entry, dataConfig);
-      return new DatabaseEntry(encodedBuffer.getBackingArray(), 0,
-          encodedBuffer.length());
+      return new DatabaseEntry(encodedBuffer.getBackingArray(), 0, encodedBuffer.length());
     }
 
-    private void encodeVolatile(Entry entry, DataConfig dataConfig)
-        throws DirectoryException
+    private void encodeVolatile(Entry entry, DataConfig dataConfig) throws DirectoryException
     {
       // Encode the entry for later use.
       entry.encode(entryBuffer, dataConfig.getEntryEncodeConfig());
@@ -199,8 +190,7 @@
         {
           OutputStream compressor = null;
           try {
-            compressor = new DeflaterOutputStream(
-                compressedEntryBuffer.asOutputStream());
+            compressor = new DeflaterOutputStream(compressedEntryBuffer.asOutputStream());
             entryBuffer.copyTo(compressor);
           }
           finally {
@@ -238,8 +228,7 @@
    * @throws DatabaseException If an error occurs in the JE database.
    *
    */
-  ID2Entry(String name, DataConfig dataConfig,
-           Environment env, EntryContainer entryContainer)
+  ID2Entry(String name, DataConfig dataConfig, Environment env, EntryContainer entryContainer)
       throws DatabaseException
   {
     super(name, env, entryContainer);
@@ -365,7 +354,7 @@
     {
       DatabaseEntry data = codec.encodeInternal(entry, dataConfig);
       OperationStatus status = insert(txn, key, data);
-      return (status == OperationStatus.SUCCESS);
+      return status == OperationStatus.SUCCESS;
     }
     finally
     {
@@ -393,7 +382,7 @@
     {
       DatabaseEntry data = codec.encodeInternal(entry, dataConfig);
       OperationStatus status = put(txn, key, data);
-      return (status == OperationStatus.SUCCESS);
+      return status == OperationStatus.SUCCESS;
     }
     finally
     {
@@ -411,8 +400,7 @@
    * @throws DatabaseException If an error occurs in the JE database.
    */
   @Override
-  public OperationStatus put(Transaction txn, DatabaseEntry key,
-                             DatabaseEntry data)
+  public OperationStatus put(Transaction txn, DatabaseEntry key, DatabaseEntry data)
        throws DatabaseException
   {
     return super.put(txn, key, data);
@@ -426,17 +414,11 @@
    * @return true if the entry was removed, false if it was not.
    * @throws DatabaseException If an error occurs in the JE database.
    */
-  public boolean remove(Transaction txn, EntryID id)
-       throws DatabaseException
+  public boolean remove(Transaction txn, EntryID id) throws DatabaseException
   {
     DatabaseEntry key = id.getDatabaseEntry();
-
     OperationStatus status = delete(txn, key);
-    if (status != OperationStatus.SUCCESS)
-    {
-      return false;
-    }
-    return true;
+    return status == OperationStatus.SUCCESS;
   }
 
   /**
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
index d6ce8e8..030dbf1 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
@@ -26,22 +26,19 @@
  */
 package org.opends.server.backends.jeb;
 
-
-
-import static org.opends.messages.JebMessages.*;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.api.CompressedSchema;
-import org.opends.server.core.DirectoryServer;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.io.ASN1;
 import org.forgerock.opendj.io.ASN1Reader;
 import org.forgerock.opendj.io.ASN1Writer;
 import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.opends.server.api.CompressedSchema;
+import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
 import org.opends.server.util.StaticUtils;
@@ -53,10 +50,12 @@
 import com.sleepycat.je.DatabaseException;
 import com.sleepycat.je.Environment;
 import com.sleepycat.je.LockConflictException;
-import com.sleepycat.je.LockMode;
 import com.sleepycat.je.OperationStatus;
 
+import static com.sleepycat.je.LockMode.*;
+import static com.sleepycat.je.OperationStatus.*;
 
+import static org.opends.messages.JebMessages.*;
 
 /**
  * This class provides a compressed schema implementation whose definitions are
@@ -64,36 +63,24 @@
  */
 public final class JECompressedSchema extends CompressedSchema
 {
-  /**
-   * The name of the database used to store compressed attribute description
-   * definitions.
-   */
-  private static final String DB_NAME_AD = "compressed_attributes";
-
-  /**
-   * The name of the database used to store compressed object class set
-   * definitions.
-   */
-  private static final String DB_NAME_OC = "compressed_object_classes";
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
+  /** The name of the database used to store compressed attribute description definitions. */
+  private static final String DB_NAME_AD = "compressed_attributes";
+  /** The name of the database used to store compressed object class set definitions. */
+  private static final String DB_NAME_OC = "compressed_object_classes";
+
   /** The compressed attribute description schema database. */
   private Database adDatabase;
-
   /** The environment in which the databases are held. */
   private Environment environment;
-
   /** The compressed object class set schema database. */
   private Database ocDatabase;
 
-  private final ByteStringBuilder storeAttributeWriterBuffer =
-      new ByteStringBuilder();
-  private final ASN1Writer storeAttributeWriter = ASN1
-      .getWriter(storeAttributeWriterBuffer);
-  private final ByteStringBuilder storeObjectClassesWriterBuffer =
-      new ByteStringBuilder();
-  private final ASN1Writer storeObjectClassesWriter = ASN1
-      .getWriter(storeObjectClassesWriterBuffer);
+  private final ByteStringBuilder storeAttributeWriterBuffer = new ByteStringBuilder();
+  private final ASN1Writer storeAttributeWriter = ASN1.getWriter(storeAttributeWriterBuffer);
+  private final ByteStringBuilder storeObjectClassesWriterBuffer = new ByteStringBuilder();
+  private final ASN1Writer storeObjectClassesWriter = ASN1.getWriter(storeObjectClassesWriterBuffer);
 
 
 
@@ -125,38 +112,30 @@
    */
   public void close()
   {
-    try
-    {
-      adDatabase.sync();
-    }
-    catch (final Exception e)
-    {
-      // Ignore.
-    }
-
-    StaticUtils.close(adDatabase);
-
-    try
-    {
-      ocDatabase.sync();
-    }
-    catch (final Exception e)
-    {
-      // Ignore.
-    }
-
-    StaticUtils.close(ocDatabase);
+    close0(adDatabase);
+    close0(ocDatabase);
 
     adDatabase = null;
     ocDatabase = null;
     environment = null;
   }
 
+  private void close0(Database database)
+  {
+    try
+    {
+      database.sync();
+    }
+    catch (final Exception e)
+    {
+      // Ignore.
+    }
+    StaticUtils.close(database);
+  }
 
 
-  /**
-   * {@inheritDoc}
-   */
+
+  /** {@inheritDoc} */
   @Override
   protected void storeAttribute(final byte[] encodedAttribute,
       final String attributeName, final Collection<String> attributeOptions)
@@ -182,9 +161,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   protected void storeObjectClasses(final byte[] encodedObjectClasses,
       final Collection<String> objectClassNames) throws DirectoryException
@@ -250,9 +227,8 @@
     {
       final DatabaseEntry keyEntry = new DatabaseEntry();
       final DatabaseEntry valueEntry = new DatabaseEntry();
-      OperationStatus status = ocCursor.getFirst(keyEntry, valueEntry,
-          LockMode.READ_UNCOMMITTED);
-      while (status == OperationStatus.SUCCESS)
+      OperationStatus status = ocCursor.getFirst(keyEntry, valueEntry, READ_UNCOMMITTED);
+      while (status == SUCCESS)
       {
         final byte[] encodedObjectClasses = keyEntry.getData();
         final ASN1Reader reader = ASN1.getReader(valueEntry.getData());
@@ -264,8 +240,7 @@
         }
         reader.readEndSequence();
         loadObjectClasses(encodedObjectClasses, objectClassNames);
-        status = ocCursor.getNext(keyEntry, valueEntry,
-            LockMode.READ_UNCOMMITTED);
+        status = ocCursor.getNext(keyEntry, valueEntry, READ_UNCOMMITTED);
       }
     }
     catch (final IOException e)
@@ -286,9 +261,8 @@
     {
       final DatabaseEntry keyEntry = new DatabaseEntry();
       final DatabaseEntry valueEntry = new DatabaseEntry();
-      OperationStatus status = adCursor.getFirst(keyEntry, valueEntry,
-          LockMode.READ_UNCOMMITTED);
-      while (status == OperationStatus.SUCCESS)
+      OperationStatus status = adCursor.getFirst(keyEntry, valueEntry, READ_UNCOMMITTED);
+      while (status == SUCCESS)
       {
         final byte[] encodedAttribute = keyEntry.getData();
         final ASN1Reader reader = ASN1.getReader(valueEntry.getData());
@@ -301,8 +275,7 @@
         }
         reader.readEndSequence();
         loadAttribute(encodedAttribute, attributeName, attributeOptions);
-        status = adCursor.getNext(keyEntry, valueEntry,
-            LockMode.READ_UNCOMMITTED);
+        status = adCursor.getNext(keyEntry, valueEntry, READ_UNCOMMITTED);
       }
     }
     catch (final IOException e)
@@ -319,29 +292,31 @@
 
 
 
-  private void store(final Database database, final byte[] key,
-      final ByteStringBuilder value) throws DirectoryException
+  private void store(final Database database, final byte[] key, final ByteStringBuilder value) throws DirectoryException
   {
-    boolean successful = false;
+    if (!putNoOverwrite(database, key, value))
+    {
+      final LocalizableMessage m = ERR_JEB_COMPSCHEMA_CANNOT_STORE_MULTIPLE_FAILURES.get();
+      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m);
+    }
+  }
+
+  private boolean putNoOverwrite(final Database database, final byte[] key, final ByteStringBuilder value)
+      throws DirectoryException
+  {
     final DatabaseEntry keyEntry = new DatabaseEntry(key);
-    final DatabaseEntry valueEntry = new DatabaseEntry(value.getBackingArray(),
-        0, value.length());
+    final DatabaseEntry valueEntry = new DatabaseEntry(value.getBackingArray(), 0, value.length());
     for (int i = 0; i < 3; i++)
     {
       try
       {
-        final OperationStatus status = database.putNoOverwrite(null, keyEntry,
-            valueEntry);
-        if (status == OperationStatus.SUCCESS)
-        {
-          successful = true;
-          break;
-        }
-        else
+        final OperationStatus status = database.putNoOverwrite(null, keyEntry, valueEntry);
+        if (status != SUCCESS)
         {
           final LocalizableMessage m = ERR_JEB_COMPSCHEMA_CANNOT_STORE_STATUS.get(status);
           throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m);
         }
+        return true;
       }
       catch (final LockConflictException ce)
       {
@@ -349,19 +324,11 @@
       }
       catch (final DatabaseException de)
       {
-        final LocalizableMessage m = ERR_JEB_COMPSCHEMA_CANNOT_STORE_EX.get(de
-            .getMessage());
-        throw new DirectoryException(
-            DirectoryServer.getServerErrorResultCode(), m, de);
+        final LocalizableMessage m = ERR_JEB_COMPSCHEMA_CANNOT_STORE_EX.get(de.getMessage());
+        throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m, de);
       }
     }
-
-    if (!successful)
-    {
-      final LocalizableMessage m = ERR_JEB_COMPSCHEMA_CANNOT_STORE_MULTIPLE_FAILURES.get();
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-          m);
-    }
+    return false;
   }
 
 }

--
Gitblit v1.10.0