mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
09.34.2015 44a4880467841860fa188f4bceddd942a74b6179
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.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.opends.server.backends.pluggable.Importer.IndexManager;
@@ -62,7 +63,7 @@
  private final ByteBuffer cache;
  /** Next fields are the fetched record data. */
  private Integer indexID;
  private ImportRecord record;
  private final ByteStringBuilder keyBuffer = new ByteStringBuilder(128);
  private RecordState recordState = RecordState.START;
@@ -163,7 +164,7 @@
   */
  public Integer getIndexID()
  {
    if (indexID == null)
    if (record == null)
    {
      try
      {
@@ -175,7 +176,7 @@
        throw new RuntimeException(ex);
      }
    }
    return indexID;
    return record != null ? record.getIndexID() : null;
  }
  /**
@@ -203,14 +204,20 @@
      break;
    }
    indexID = getInt();
    int indexID = getInt();
    ByteString key = toKey();
    record = ImportRecord.from(key, indexID);
    recordState = RecordState.NEED_INSERT_ID_SET;
  }
  private ByteString toKey() throws IOException
  {
    ensureData(20);
    int keyLen = getInt();
    ensureData(keyLen);
    keyBuffer.clear().append(cache, keyLen);
    recordState = RecordState.NEED_INSERT_ID_SET;
    return keyBuffer.toByteString();
  }
  private int getInt() throws IOException
@@ -286,22 +293,6 @@
    return false;
  }
  /**
   * Compares this buffer with the provided key and index ID.
   *
   * @param key
   *          The key.
   * @param indexID
   *          The index ID.
   * @return true if this buffer represent the same key and indexID, false otherwise.
   */
  boolean sameKeyAndIndexID(final ByteStringBuilder key, Integer indexID)
  {
    ensureRecordFetched();
    return Importer.indexComparator.compare(keyBuffer, key) == 0
        && this.indexID.equals(indexID);
  }
  /** {@inheritDoc} */
  @Override
  public int compareTo(IndexInputBuffer o)
@@ -312,21 +303,20 @@
      return 0;
    }
    ensureRecordFetched();
    o.ensureRecordFetched();
    int cmp = Importer.indexComparator.compare(keyBuffer, o.keyBuffer);
    int cmp = currentRecord().compareTo(o.currentRecord());
    if (cmp == 0)
    {
      cmp = indexID.intValue() - o.getIndexID().intValue();
      if (cmp == 0)
      {
        return bufferID - o.bufferID;
      }
      return bufferID - o.bufferID;
    }
    return cmp;
  }
  ImportRecord currentRecord()
  {
    ensureRecordFetched();
    return record;
  }
  private void ensureRecordFetched()
  {
    if (keyBuffer.length() == 0)