From 34065a02d2d799eedce51daac75cc6982affa662 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 27 Apr 2015 09:41:52 +0000
Subject: [PATCH] Code cleanup

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DefaultIndex.java |   74 ++++++++++++++-----------------------
 1 files changed, 28 insertions(+), 46 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DefaultIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DefaultIndex.java
index bd68494..5ff09d8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DefaultIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DefaultIndex.java
@@ -36,6 +36,7 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.util.Reject;
 import org.forgerock.util.promise.NeverThrowsException;
 import org.opends.server.backends.pluggable.CursorTransformer.ValueTransformer;
 import org.opends.server.backends.pluggable.EntryIDSet.EntryIDSetCodec;
@@ -46,7 +47,6 @@
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.UpdateFunction;
 import org.opends.server.backends.pluggable.spi.WriteableTransaction;
-import org.opends.server.util.StaticUtils;
 
 /**
  * Represents an index implemented by a tree in which each key maps to a set of entry IDs. The key
@@ -126,11 +126,14 @@
   @Override
   public final void importPut(WriteableTransaction txn, ImportIDSet idsToBeAdded) throws StorageRuntimeException
   {
+    Reject.ifNull(txn, "txn must not be null");
+    Reject.ifNull(idsToBeAdded, "idsToBeAdded must not be null");
     ByteSequence key = idsToBeAdded.getKey();
     ByteString value = txn.read(getName(), key);
     if (value != null)
     {
-      final ImportIDSet importIDSet = new ImportIDSet(key, codec.decode(key, value), indexEntryLimit);
+      final EntryIDSet entryIDSet = codec.decode(key, value);
+      final ImportIDSet importIDSet = new ImportIDSet(key, entryIDSet, indexEntryLimit);
       importIDSet.merge(idsToBeAdded);
       txn.put(getName(), key, importIDSet.valueToByteString(codec));
     }
@@ -143,25 +146,26 @@
   @Override
   public final void importRemove(WriteableTransaction txn, ImportIDSet idsToBeRemoved) throws StorageRuntimeException
   {
+    Reject.ifNull(txn, "txn must not be null");
+    Reject.ifNull(idsToBeRemoved, "idsToBeRemoved must not be null");
     ByteSequence key = idsToBeRemoved.getKey();
     ByteString value = txn.read(getName(), key);
-    if (value != null)
+    if (value == null)
     {
-      final ImportIDSet importIDSet = new ImportIDSet(key, codec.decode(key, value), indexEntryLimit);
-      importIDSet.remove(idsToBeRemoved);
-      if (importIDSet.isDefined() && importIDSet.size() == 0)
-      {
-        txn.delete(getName(), key);
-      }
-      else
-      {
-        txn.put(getName(), key, importIDSet.valueToByteString(codec));
-      }
+      // Should never happen -- the keys should always be there.
+      throw new IllegalStateException("Expected to have a value associated to key " + key + " for index " + getName());
+    }
+
+    final EntryIDSet entryIDSet = codec.decode(key, value);
+    final ImportIDSet importIDSet = new ImportIDSet(key, entryIDSet, indexEntryLimit);
+    importIDSet.remove(idsToBeRemoved);
+    if (importIDSet.isDefined() && importIDSet.size() == 0)
+    {
+      txn.delete(getName(), key);
     }
     else
     {
-      // Should never happen -- the keys should always be there.
-      throw new RuntimeException();
+      txn.put(getName(), key, importIDSet.valueToByteString(codec));
     }
   }
 
@@ -178,9 +182,8 @@
       boolean success = txn.delete(getName(), key);
       if (!success && logger.isTraceEnabled())
       {
-        StringBuilder builder = new StringBuilder();
-        StaticUtils.byteArrayToHexPlusAscii(builder, key.toByteArray(), 4);
-        logger.trace("The expected key does not exist in the index %s.\nKey:%s ", getName(), builder);
+        logger.trace("The expected key does not exist in the index %s.\nKey:%s ",
+            getName(), key.toHexPlusAsciiString(4));
       }
       return;
     }
@@ -250,41 +253,22 @@
     {
       if (entryIDSet.isDefined() && indexEntryLimit > 0)
       {
-        long idCountDelta = addedIDs.size();
-        if (deletedIDs != null)
-        {
-          idCountDelta -= deletedIDs.size();
-        }
+        final long nbDeleted = deletedIDs != null ? deletedIDs.size() : 0;
+        final long idCountDelta = addedIDs.size() - nbDeleted;
         if (idCountDelta + entryIDSet.size() >= indexEntryLimit)
         {
           entryIDSet = newUndefinedSetWithKey(key);
           if (logger.isTraceEnabled())
           {
-            StringBuilder builder = new StringBuilder();
-            StaticUtils.byteArrayToHexPlusAscii(builder, key.toByteArray(), 4);
             logger.trace("Index entry exceeded in index %s. " + "Limit: %d. ID list size: %d.\nKey:%s", getName(),
-                indexEntryLimit, idCountDelta + addedIDs.size(), builder);
+                indexEntryLimit, idCountDelta + addedIDs.size(), key.toHexPlusAsciiString(4));
           }
-        }
-        else
-        {
-          entryIDSet.addAll(addedIDs);
-          if (deletedIDs != null)
-          {
-            entryIDSet.removeAll(deletedIDs);
-          }
+          return entryIDSet;
         }
       }
-      else
-      {
-        entryIDSet.addAll(addedIDs);
-        if (deletedIDs != null)
-        {
-          entryIDSet.removeAll(deletedIDs);
-        }
-      }
+      entryIDSet.addAll(addedIDs);
     }
-    else if (deletedIDs != null)
+    if (deletedIDs != null)
     {
       entryIDSet.removeAll(deletedIDs);
     }
@@ -295,9 +279,7 @@
   {
     if (logger.isTraceEnabled())
     {
-      StringBuilder builder = new StringBuilder();
-      StaticUtils.byteArrayToHexPlusAscii(builder, key.toByteArray(), 4);
-      logger.trace("The expected key does not exist in the index %s.\nKey:%s", getName(), builder);
+      logger.trace("The expected key does not exist in the index %s.\nKey:%s", getName(), key.toHexPlusAsciiString(4));
     }
 
     setTrusted(txn, false);

--
Gitblit v1.10.0