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/IndexBuffer.java | 66 ++++++++++++++++++--------------
1 files changed, 37 insertions(+), 29 deletions(-)
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;
}
/**
--
Gitblit v1.10.0