From 919ad22e29ed2229d4af6092f5e0ddecdeac779e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 12 Mar 2015 15:00:22 +0000
Subject: [PATCH] Get rid of too much ByteBuffer to ByteString conversions.

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexInputBuffer.java |   34 ++++++++++++----------------------
 1 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexInputBuffer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexInputBuffer.java
index 65033ff..542abc1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexInputBuffer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexInputBuffer.java
@@ -34,6 +34,7 @@
 import java.nio.channels.FileChannel;
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.ByteStringBuilder;
 import org.opends.server.backends.pluggable.Importer.IndexManager;
 
 /**
@@ -62,7 +63,7 @@
 
   // Next fields are the fetched record data
   private Integer indexID;
-  private ByteBuffer keyBuf = ByteBuffer.allocate(128);
+  private final ByteStringBuilder keyBuffer = new ByteStringBuilder(128);
   private RecordState recordState = RecordState.START;
 
   /**
@@ -96,7 +97,6 @@
 
     loadCache();
     cache.flip();
-    keyBuf.flip();
   }
 
   private void loadCache() throws IOException
@@ -142,19 +142,18 @@
    */
   public int getKeyLen()
   {
-    return keyBuf.limit();
+    return keyBuffer.length();
   }
 
   /**
-   * Fetches the next key into the provided byte buffer.
+   * Fetches the next key into the provided byte string builder.
    *
    * @param b
-   *          A buffer where to fetch the key
+   *          A builder where to fetch the key
    */
-  public void fetchKey(ByteBuffer b)
+  public void fetchKey(ByteStringBuilder b)
   {
-    keyBuf.get(b.array(), 0, keyBuf.limit());
-    b.limit(keyBuf.limit());
+    b.clear().append(keyBuffer);
   }
 
   /**
@@ -208,14 +207,8 @@
 
     ensureData(20);
     int keyLen = getInt();
-    if (keyLen > keyBuf.capacity())
-    {
-      keyBuf = ByteBuffer.allocate(keyLen);
-    }
     ensureData(keyLen);
-    keyBuf.clear();
-    cache.get(keyBuf.array(), 0, keyLen);
-    keyBuf.limit(keyLen);
+    keyBuffer.clear().append(cache, keyLen);
 
     recordState = RecordState.NEED_INSERT_ID_SET;
   }
@@ -304,11 +297,10 @@
    *         index ID, a positive number if this buffer is greater, or zero if
    *         it is the same.
    */
-  int compare(ByteBuffer cKey, Integer cIndexID)
+  int compare(ByteStringBuilder cKey, Integer cIndexID)
   {
     ensureRecordFetched();
-    int cmp = Importer.indexComparator.compare(keyBuf.array(), 0, keyBuf.limit(), cKey.array(), cKey.limit());
-    if (cmp == 0)
+    if (Importer.indexComparator.compare(keyBuffer, cKey) == 0)
     {
       return (indexID.intValue() == cIndexID.intValue()) ? 0 : 1;
     }
@@ -328,9 +320,7 @@
     ensureRecordFetched();
     o.ensureRecordFetched();
 
-    byte[] oKey = o.keyBuf.array();
-    int oLen = o.keyBuf.limit();
-    int cmp = Importer.indexComparator.compare(keyBuf.array(), 0, keyBuf.limit(), oKey, oLen);
+    int cmp = Importer.indexComparator.compare(keyBuffer, o.keyBuffer);
     if (cmp == 0)
     {
       cmp = indexID.intValue() - o.getIndexID().intValue();
@@ -344,7 +334,7 @@
 
   private void ensureRecordFetched()
   {
-    if (keyBuf.limit() == 0)
+    if (keyBuffer.length() == 0)
     {
       getIndexID();
     }

--
Gitblit v1.10.0