From e219b928766a0a4984f613c7e3162cf03889380c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 05 Dec 2014 14:46:11 +0000
Subject: [PATCH] Increased IndexBuffer encapsulation: Moved Index.getBufferedIndexValues() and VLVIndex.getVLVIndex() to IndexBuffer.

---
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java    |   16 +-------
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java       |   20 ---------
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java |   66 ++++++++++++++++++--------------
 3 files changed, 40 insertions(+), 62 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java
index 8d60654..6bcc52d 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java
@@ -493,25 +493,7 @@
 
   private BufferedIndexValues getBufferedIndexValues(IndexBuffer buffer, ByteString keyBytes)
   {
-    TreeMap<ByteString, BufferedIndexValues> bufferedOperations = buffer.getBufferedIndex(this);
-    BufferedIndexValues values = null;
-
-    if (bufferedOperations == null)
-    {
-      bufferedOperations = new TreeMap<ByteString, BufferedIndexValues>(bsComparator);
-      buffer.putBufferedIndex(this, bufferedOperations);
-    }
-    else
-    {
-      values = bufferedOperations.get(keyBytes);
-    }
-
-    if (values == null)
-    {
-      values = new BufferedIndexValues();
-      bufferedOperations.put(keyBytes, values);
-    }
-    return values;
+    return buffer.getBufferedIndexValues(this, keyBytes, bsComparator);
   }
 
   /**
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java
index 7e735bd..20d3e8c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java
@@ -28,6 +28,7 @@
 
 import java.util.*;
 
+import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.types.DirectoryException;
 
@@ -173,29 +174,6 @@
   }
 
   /**
-   * Get the buffered values for the given index.
-   *
-   * @param index The index with the buffered values to retrieve.
-   * @return The buffered values or <code>null</code> if there are
-   * no buffered values for the specified index.
-   */
-  public TreeMap<ByteString, BufferedIndexValues> getBufferedIndex(Index index)
-  {
-    return bufferedIndexes.get(index);
-  }
-
-  /**
-   * Put the specified buffered index values for the given index.
-   *
-   * @param index The index affected by the buffered values.
-   * @param bufferedValues The buffered values for the index.
-   */
-  public void putBufferedIndex(Index index, TreeMap<ByteString, BufferedIndexValues> bufferedValues)
-  {
-    bufferedIndexes.put(index, bufferedValues);
-  }
-
-  /**
    * Get the buffered VLV values for the given VLV index.
    *
    * @param vlvIndex The VLV index with the buffered values to retrieve.
@@ -204,18 +182,48 @@
    */
   public BufferedVLVValues getVLVIndex(VLVIndex vlvIndex)
   {
-    return bufferedVLVIndexes.get(vlvIndex);
+    BufferedVLVValues bufferedValues = bufferedVLVIndexes.get(vlvIndex);
+    if (bufferedValues == null)
+    {
+      bufferedValues = new BufferedVLVValues();
+      bufferedVLVIndexes.put(vlvIndex, bufferedValues);
+    }
+    return bufferedValues;
   }
 
   /**
-   * Put the specified buffered VLV values for the given VLV index.
+   * Get the buffered index values for the given index and keyBytes.
    *
-   * @param vlvIndex The VLV index affected by the buffered values.
-   * @param bufferedVLVValues The buffered values for the VLV index.
+   * @param index
+   *          The index for which to retrieve the buffered index values
+   * @param keyBytes
+   *          The keyBytes for which to retrieve the buffered index values
+   * @param bsComparator
+   *          The byte sequence comparator to use when retrieving the
+   *          BufferedIndexValues
+   * @return The buffered index values, it can never be null
    */
-  public void putBufferedVLVIndex(VLVIndex vlvIndex, BufferedVLVValues bufferedVLVValues)
+  BufferedIndexValues getBufferedIndexValues(Index index, ByteString keyBytes, Comparator<ByteSequence> bsComparator)
   {
-    bufferedVLVIndexes.put(vlvIndex, bufferedVLVValues);
+    BufferedIndexValues values = null;
+
+    TreeMap<ByteString, BufferedIndexValues> bufferedOperations = bufferedIndexes.get(index);
+    if (bufferedOperations == null)
+    {
+      bufferedOperations = new TreeMap<ByteString, BufferedIndexValues>(bsComparator);
+      bufferedIndexes.put(index, bufferedOperations);
+    }
+    else
+    {
+      values = bufferedOperations.get(keyBytes);
+    }
+
+    if (values == null)
+    {
+      values = new BufferedIndexValues();
+      bufferedOperations.put(keyBytes, values);
+    }
+    return values;
   }
 
   /**
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
index feb5c62..1d9cf7a 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
@@ -43,7 +43,6 @@
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.meta.LocalDBVLVIndexCfgDefn.Scope;
 import org.opends.server.admin.std.server.LocalDBVLVIndexCfg;
-import org.opends.server.backends.jeb.IndexBuffer.BufferedVLVValues;
 import org.opends.server.controls.ServerSideSortRequestControl;
 import org.opends.server.controls.VLVRequestControl;
 import org.opends.server.controls.VLVResponseControl;
@@ -294,7 +293,7 @@
     if (shouldInclude(entry))
     {
       final SortValues sortValues = new SortValues(entryID, entry, sortOrder);
-      getVLVIndex(buffer).addValues(sortValues);
+      buffer.getVLVIndex(this).addValues(sortValues);
       return true;
     }
     return false;
@@ -316,23 +315,12 @@
     if (shouldInclude(entry))
     {
       final SortValues sortValues = new SortValues(entryID, entry, sortOrder);
-      getVLVIndex(buffer).deleteValues(sortValues);
+      buffer.getVLVIndex(this).deleteValues(sortValues);
       return true;
     }
     return false;
   }
 
-  private BufferedVLVValues getVLVIndex(IndexBuffer buffer)
-  {
-    BufferedVLVValues bufferedValues = buffer.getVLVIndex(this);
-    if (bufferedValues == null)
-    {
-      bufferedValues = new BufferedVLVValues();
-      buffer.putBufferedVLVIndex(this, bufferedValues);
-    }
-    return bufferedValues;
-  }
-
   /**
    * Update the vlvIndex to reflect a sequence of modifications in a Modify
    * operation.

--
Gitblit v1.10.0