From 2f13f91c158747ca997a44d8e61830f46b77dd82 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 14 Mar 2014 11:31:24 +0000
Subject: [PATCH] OPENDJ-1308 (CR-3156) Migrate schema support - ByteString - Indexer

---
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java |   60 +++++++++++++++++++++++++++++-------------------------------
 1 files changed, 29 insertions(+), 31 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 3930130..f26a909 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
@@ -22,17 +22,19 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.backends.jeb;
 
-import com.sleepycat.je.Transaction;
-import com.sleepycat.je.DatabaseException;
-import com.sleepycat.je.DatabaseEntry;
-
 import java.util.*;
 
+import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.types.DirectoryException;
 
+import com.sleepycat.je.DatabaseEntry;
+import com.sleepycat.je.DatabaseException;
+import com.sleepycat.je.Transaction;
+
 /**
  * A buffered index is used to buffer multiple reads or writes to the
  * same index key into a single read or write.
@@ -48,8 +50,7 @@
    * The buffered records stored as a map from the record key to the
    * buffered value for that key for each index.
    */
-  private LinkedHashMap<Index,
-      TreeMap<byte[], BufferedIndexValues>> bufferedIndexes;
+  private LinkedHashMap<Index, TreeMap<ByteString, BufferedIndexValues>> bufferedIndexes;
 
   /**
    * The buffered records stored as a set of buffered VLV values
@@ -60,7 +61,8 @@
   /**
    * A simple class representing a pair of added and deleted indexed IDs.
    */
-  public static class BufferedIndexValues {
+  static class BufferedIndexValues
+  {
     EntryIDSet addedIDs;
     EntryIDSet deletedIDs;
   }
@@ -68,7 +70,8 @@
   /**
    * A simple class representing a pair of added and deleted VLV values.
    */
-  public static class BufferedVLVValues {
+  static class BufferedVLVValues
+  {
     TreeSet<SortValues> addedValues;
     TreeSet<SortValues> deletedValues;
   }
@@ -82,7 +85,7 @@
   public IndexBuffer(EntryContainer entryContainer)
   {
     bufferedIndexes =
-        new LinkedHashMap<Index, TreeMap<byte[], BufferedIndexValues>>();
+        new LinkedHashMap<Index, TreeMap<ByteString, BufferedIndexValues>>();
     bufferedVLVIndexes = new LinkedHashMap<VLVIndex, BufferedVLVValues>();
     this.entryContainer = entryContainer;
   }
@@ -94,7 +97,7 @@
    * @return The buffered values or <code>null</code> if there are
    * no buffered values for the specified index.
    */
-  public TreeMap<byte[], BufferedIndexValues> getBufferedIndex(Index index)
+  public TreeMap<ByteString, BufferedIndexValues> getBufferedIndex(Index index)
   {
     return bufferedIndexes.get(index);
   }
@@ -105,8 +108,8 @@
    * @param index The index affected by the buffered values.
    * @param bufferedValues The buffered values for the index.
    */
-  public void putBufferedIndex(Index index, TreeMap<byte[],
-      BufferedIndexValues> bufferedValues)
+  public void putBufferedIndex(Index index,
+      TreeMap<ByteString, BufferedIndexValues> bufferedValues)
   {
     bufferedIndexes.put(index, bufferedValues);
   }
@@ -146,9 +149,6 @@
   public void flush(Transaction txn)
       throws DatabaseException, DirectoryException
   {
-    TreeMap<byte[], BufferedIndexValues> bufferedValues;
-    BufferedVLVValues bufferedVLVValues;
-    byte[] keyBytes;
     DatabaseEntry key = new DatabaseEntry();
 
     for(AttributeIndex attributeIndex :
@@ -156,18 +156,18 @@
     {
       for(Index index : attributeIndex.getAllIndexes())
       {
-        bufferedValues = bufferedIndexes.remove(index);
+        TreeMap<ByteString, BufferedIndexValues> bufferedValues =
+            bufferedIndexes.remove(index);
 
         if(bufferedValues != null)
         {
-          Iterator<Map.Entry<byte[], BufferedIndexValues>> keyIterator =
+          Iterator<Map.Entry<ByteString, BufferedIndexValues>> keyIterator =
               bufferedValues.entrySet().iterator();
           while(keyIterator.hasNext())
           {
-            Map.Entry<byte[], BufferedIndexValues> bufferedKey =
+            Map.Entry<ByteString, BufferedIndexValues> bufferedKey =
                 keyIterator.next();
-            keyBytes = bufferedKey.getKey();
-            key.setData(keyBytes);
+            key.setData(bufferedKey.getKey().toByteArray());
 
             index.updateKey(txn, key, bufferedKey.getValue().deletedIDs,
                 bufferedKey.getValue().addedIDs);
@@ -180,8 +180,7 @@
 
     for(VLVIndex vlvIndex : entryContainer.getVLVIndexes())
     {
-      bufferedVLVValues = bufferedVLVIndexes.remove(vlvIndex);
-
+      BufferedVLVValues bufferedVLVValues = bufferedVLVIndexes.remove(vlvIndex);
       if(bufferedVLVValues != null)
       {
         vlvIndex.updateIndex(txn, bufferedVLVValues.addedValues,
@@ -190,18 +189,18 @@
     }
 
     Index id2children = entryContainer.getID2Children();
-    bufferedValues = bufferedIndexes.remove(id2children);
+    TreeMap<ByteString, BufferedIndexValues> bufferedValues =
+        bufferedIndexes.remove(id2children);
 
     if(bufferedValues != null)
     {
-      Iterator<Map.Entry<byte[], BufferedIndexValues>> keyIterator =
+      Iterator<Map.Entry<ByteString, BufferedIndexValues>> keyIterator =
           bufferedValues.entrySet().iterator();
       while(keyIterator.hasNext())
       {
-        Map.Entry<byte[], BufferedIndexValues> bufferedKey =
+        Map.Entry<ByteString, BufferedIndexValues> bufferedKey =
             keyIterator.next();
-        keyBytes = bufferedKey.getKey();
-        key.setData(keyBytes);
+        key.setData(bufferedKey.getKey().toByteArray());
 
         id2children.updateKey(txn, key, bufferedKey.getValue().deletedIDs,
             bufferedKey.getValue().addedIDs);
@@ -215,14 +214,13 @@
 
     if(bufferedValues != null)
     {
-      Iterator<Map.Entry<byte[], BufferedIndexValues>> keyIterator =
+      Iterator<Map.Entry<ByteString, BufferedIndexValues>> keyIterator =
           bufferedValues.entrySet().iterator();
       while(keyIterator.hasNext())
       {
-        Map.Entry<byte[], BufferedIndexValues> bufferedKey =
+        Map.Entry<ByteString, BufferedIndexValues> bufferedKey =
             keyIterator.next();
-        keyBytes = bufferedKey.getKey();
-        key.setData(keyBytes);
+        key.setData(bufferedKey.getKey().toByteArray());
 
         id2subtree.updateKey(txn, key, bufferedKey.getValue().deletedIDs,
             bufferedKey.getValue().addedIDs);

--
Gitblit v1.10.0