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

Jean-Noel Rouvignac
12.19.2015 ae6b4362fce94c2d5c81f64d612a604971239d31
Code cleanup


IndexOutputBuffer.java:
Removed comparator field + setter, directly used Importer.indexComparator instead.

VerifyJob.java, jeb.DBTest.java:
Consequence of the changes to Index.

Index.java:
Made indexer field private + added indexEntry() as a consequence.
Removed comparator and bsComparator fields (jeb only).

Importer.java:
Consequence of the changes to Index and IndexOutputBuffer.
9 files modified
156 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java 23 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Index.java 22 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/IndexOutputBuffer.java 29 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/VerifyJob.java 2 ●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java 17 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java 8 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexOutputBuffer.java 29 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java 2 ●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/DBTest.java 24 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
@@ -1512,17 +1512,17 @@
      if (oldEntry != null)
      {
        deleteKeySet.clear();
        index.indexer.indexEntry(oldEntry, deleteKeySet, options);
        index.indexEntry(oldEntry, deleteKeySet, options);
        for (ByteString delKey : deleteKeySet)
        {
          processKey(index, delKey.toByteArray(), entryID, indexComparator, indexKey, false);
          processKey(index, delKey.toByteArray(), entryID, indexKey, false);
        }
      }
      insertKeySet.clear();
      index.indexer.indexEntry(entry, insertKeySet, options);
      index.indexEntry(entry, insertKeySet, options);
      for (ByteString key : insertKeySet)
      {
        processKey(index, key.toByteArray(), entryID, indexComparator, indexKey, true);
        processKey(index, key.toByteArray(), entryID, indexKey, true);
      }
    }
  }
@@ -1687,10 +1687,10 @@
        IndexKey indexKey) throws DatabaseException, InterruptedException
    {
      insertKeySet.clear();
      index.indexer.indexEntry(entry, insertKeySet, options);
      index.indexEntry(entry, insertKeySet, options);
      for (ByteString key : insertKeySet)
      {
        processKey(index, key.toByteArray(), entryID, indexComparator, indexKey, true);
        processKey(index, key.toByteArray(), entryID, indexKey, true);
      }
    }
@@ -1704,7 +1704,6 @@
        IndexKey indexKey = e.getKey();
        IndexOutputBuffer indexBuffer = e.getValue();
        it.remove();
        indexBuffer.setComparator(indexComparator);
        indexBuffer.setIndexKey(indexKey);
        indexBuffer.discard();
        futures.add(bufferSortService.submit(new SortTask(indexBuffer)));
@@ -1713,7 +1712,6 @@
    }
    int processKey(DatabaseContainer container, byte[] key, EntryID entryID,
        IndexOutputBuffer.ComparatorBuffer<byte[]> comparator,
        IndexKey indexKey, boolean insert) throws InterruptedException
    {
      int sizeNeeded = IndexOutputBuffer.getRequiredSize(key.length, entryID.longValue());
@@ -1726,7 +1724,6 @@
      else if (!indexBuffer.isSpaceAvailable(key, entryID.longValue()))
      {
        // complete the current buffer...
        indexBuffer.setComparator(comparator);
        indexBuffer.setIndexKey(indexKey);
        bufferSortService.submit(new SortTask(indexBuffer));
        // ... and get a new one
@@ -1761,17 +1758,15 @@
      return indexBuffer;
    }
    void processDN2ID(Suffix suffix, DN dn, EntryID entryID)
        throws InterruptedException
    void processDN2ID(Suffix suffix, DN dn, EntryID entryID) throws InterruptedException
    {
      DN2ID dn2id = suffix.getDN2ID();
      byte[] dnBytes = JebFormat.dnToDNKey(dn, suffix.getBaseDN().size());
      int id = processKey(dn2id, dnBytes, entryID, indexComparator, dnIndexKey, true);
      int id = processKey(dn2id, dnBytes, entryID, dnIndexKey, true);
      idECMap.putIfAbsent(id, suffix.getEntryContainer());
    }
    void processDN2URI(Suffix suffix, Entry oldEntry, Entry newEntry)
        throws DatabaseException
    void processDN2URI(Suffix suffix, Entry oldEntry, Entry newEntry) throws DatabaseException
    {
      DN2URI dn2uri = suffix.getDN2URI();
      if (oldEntry != null)
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Index.java
@@ -33,7 +33,6 @@
import java.util.*;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.spi.IndexingOptions;
@@ -56,12 +55,7 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /** The indexer object to construct index keys from LDAP attribute values. */
  public Indexer indexer;
  /** The comparator for index keys. */
  private final Comparator<byte[]> comparator;
  /** The comparator for index keys. */
  private final Comparator<ByteSequence> bsComparator;
  private Indexer indexer;
  /** The limit on the number of entry IDs that may be indexed by one key. */
  private int indexEntryLimit;
@@ -133,8 +127,6 @@
  {
    super(name, env, entryContainer);
    this.indexer = indexer;
    this.comparator = indexer.getComparator();
    this.bsComparator = indexer.getBSComparator();
    this.indexEntryLimit = indexEntryLimit;
    this.cursorEntryLimit = cursorEntryLimit;
    this.maintainCount = maintainCount;
@@ -144,7 +136,7 @@
    this.dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(env);
    this.dbConfig.setOverrideBtreeComparator(true);
    this.dbConfig.setBtreeComparator((Class<? extends Comparator<byte[]>>)
                                     comparator.getClass());
                                     indexer.getComparator().getClass());
    this.state = state;
@@ -157,6 +149,11 @@
    }
  }
  void indexEntry(Entry entry, Set<ByteString> keys, IndexingOptions options)
  {
    indexer.indexEntry(entry, keys, options);
  }
  /**
   * Add an add entry ID operation into a index buffer.
   *
@@ -460,7 +457,7 @@
  private BufferedIndexValues getBufferedIndexValues(IndexBuffer buffer, ByteString keyBytes)
  {
    return buffer.getBufferedIndexValues(this, keyBytes, bsComparator);
    return buffer.getBufferedIndexValues(this, keyBytes, indexer.getBSComparator());
  }
  /**
@@ -619,6 +616,7 @@
      Cursor cursor = openCursor(null, CursorConfig.READ_COMMITTED);
      try
      {
        final Comparator<byte[]> comparator = indexer.getComparator();
        OperationStatus status;
        // Set the lower bound if necessary.
        if(lower.length > 0)
@@ -874,6 +872,6 @@
   */
  public Comparator<byte[]> getComparator()
  {
    return this.comparator;
    return indexer.getComparator();
  }
}
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/IndexOutputBuffer.java
@@ -26,6 +26,8 @@
 */
package org.opends.server.backends.jeb;
import static org.opends.server.backends.jeb.Importer.indexComparator;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -100,9 +102,6 @@
  /** Used to iterate over the buffer when writing to a scratch file. */
  private int position;
  /** The comparator to use sort the keys. */
  private ComparatorBuffer<byte[]> comparator;
  /**
   * Used to make sure that an instance of this class is put on the
   * correct scratch file writer work queue for processing.
@@ -148,7 +147,6 @@
    recordOffset = size - 1;
    keys = 0;
    position = 0;
    comparator = null;
    indexKey = null;
  }
@@ -228,18 +226,6 @@
  }
  /**
   * Set the comparator to be used in the buffer processing to the specified
   * comparator.
   *
   * @param comparator The comparator to set the buffer's comparator to.
   */
  public void setComparator(ComparatorBuffer<byte[]> comparator)
  {
    this.comparator = comparator;
  }
  /**
   * Return a buffer's current position value.
   *
   * @return The buffer's current position value.
@@ -249,7 +235,6 @@
    return position;
  }
  /**
   * Set a buffer's position value to the specified position.
   *
@@ -260,7 +245,6 @@
    this.position = position;
  }
  /**
   * Sort the buffer.
   */
@@ -268,7 +252,6 @@
    sort(0, keys);
  }
  /**
   * Add the specified key byte array and EntryID to the buffer.
   *
@@ -461,7 +444,7 @@
    int yKeyLen = PackedInteger.readInt(buffer, yoffSet);
    int yKey = PackedInteger.getReadIntLength(buffer, yoffSet) + yoffSet;
    int cmp = comparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKeyLen, yIndexID);
    int cmp = indexComparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKeyLen, yIndexID);
    return evaluateReturnCode(cmp, op);
  }
@@ -474,7 +457,7 @@
    int xKeyLen = PackedInteger.readInt(buffer, xoffSet);
    int xKey = PackedInteger.getReadIntLength(buffer, xoffSet) + xoffSet;
    int cmp = comparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKey.length, yIndexID);
    int cmp = indexComparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKey.length, yIndexID);
    return evaluateReturnCode(cmp, op);
  }
@@ -497,7 +480,7 @@
    offset += PackedInteger.getReadLongLength(buffer, offset);
    int keyLen = PackedInteger.readInt(buffer, offset);
    int key = PackedInteger.getReadIntLength(buffer, offset) + offset;
    return comparator.compare(buffer, key, keyLen, b, b.length) == 0
    return indexComparator.compare(buffer, key, keyLen, b, b.length) == 0
        && indexID == bIndexID;
  }
@@ -523,7 +506,7 @@
    int keyLen = PackedInteger.readInt(buffer, offset);
    int key = PackedInteger.getReadIntLength(buffer, offset) + offset;
    final int cmp = comparator.compare(buffer, key, keyLen, keyBuf.array(), keyBuf.limit());
    final int cmp = indexComparator.compare(buffer, key, keyLen, keyBuf.array(), keyBuf.limit());
    if (cmp != 0)
    {
      return cmp;
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/VerifyJob.java
@@ -1082,7 +1082,7 @@
            };
            index.indexer.indexEntry(entry, dummySet, options);
            index.indexEntry(entry, dummySet, options);
            if (!foundMatchingKey.get())
            {
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
@@ -1477,17 +1477,17 @@
      if (oldEntry != null)
      {
        deleteKeySet.clear();
        index.indexer.indexEntry(oldEntry, deleteKeySet, options);
        index.indexEntry(oldEntry, deleteKeySet, options);
        for (ByteString delKey : deleteKeySet)
        {
          processKey(index, delKey, entryID, indexComparator, indexKey, false);
          processKey(index, delKey, entryID, indexKey, false);
        }
      }
      insertKeySet.clear();
      index.indexer.indexEntry(entry, insertKeySet, options);
      index.indexEntry(entry, insertKeySet, options);
      for (ByteString key : insertKeySet)
      {
        processKey(index, key, entryID, indexComparator, indexKey, true);
        processKey(index, key, entryID, indexKey, true);
      }
    }
  }
@@ -1659,10 +1659,10 @@
        IndexKey indexKey) throws StorageRuntimeException, InterruptedException
    {
      insertKeySet.clear();
      index.indexer.indexEntry(entry, insertKeySet, options);
      index.indexEntry(entry, insertKeySet, options);
      for (ByteString key : insertKeySet)
      {
        processKey(index, key, entryID, indexComparator, indexKey, true);
        processKey(index, key, entryID, indexKey, true);
      }
    }
@@ -1676,7 +1676,6 @@
        IndexKey indexKey = e.getKey();
        IndexOutputBuffer indexBuffer = e.getValue();
        it.remove();
        indexBuffer.setComparator(indexComparator);
        indexBuffer.setIndexKey(indexKey);
        indexBuffer.discard();
        futures.add(bufferSortService.submit(new SortTask(indexBuffer)));
@@ -1685,7 +1684,6 @@
    }
    int processKey(DatabaseContainer container, ByteString key, EntryID entryID,
        IndexOutputBuffer.ComparatorBuffer<byte[]> comparator,
        IndexKey indexKey, boolean insert) throws InterruptedException
    {
      int sizeNeeded = IndexOutputBuffer.getRequiredSize(key.length(), entryID.longValue());
@@ -1698,7 +1696,6 @@
      else if (!indexBuffer.isSpaceAvailable(key, entryID.longValue()))
      {
        // complete the current buffer...
        indexBuffer.setComparator(comparator);
        indexBuffer.setIndexKey(indexKey);
        bufferSortService.submit(new SortTask(indexBuffer));
        // ... and get a new one
@@ -1738,7 +1735,7 @@
    {
      DN2ID dn2id = suffix.getDN2ID();
      ByteString dnBytes = JebFormat.dnToDNKey(dn, suffix.getBaseDN().size());
      int id = processKey(dn2id, dnBytes, entryID, indexComparator, dnIndexKey, true);
      int id = processKey(dn2id, dnBytes, entryID, dnIndexKey, true);
      idECMap.putIfAbsent(id, suffix.getEntryContainer());
    }
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java
@@ -32,6 +32,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.forgerock.i18n.slf4j.LocalizedLogger;
@@ -61,7 +62,7 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /** The indexer object to construct index keys from LDAP attribute values. */
  Indexer indexer;
  private Indexer indexer;
  /** The limit on the number of entry IDs that may be indexed by one key. */
  private int indexEntryLimit;
@@ -145,6 +146,11 @@
    }
  }
  void indexEntry(Entry entry, Set<ByteString> keys, IndexingOptions options)
  {
    indexer.indexEntry(entry, keys, options);
  }
  final void insertID(IndexBuffer buffer, ByteString keyBytes, EntryID entryID)
  {
    getBufferedIndexValues(buffer, keyBytes).addEntryID(keyBytes, entryID);
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexOutputBuffer.java
@@ -26,6 +26,8 @@
 */
package org.opends.server.backends.pluggable;
import static org.opends.server.backends.pluggable.Importer.indexComparator;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -104,9 +106,6 @@
  /** Used to iterate over the buffer when writing to a scratch file. */
  private int position;
  /** The comparator to use sort the keys. */
  private ComparatorBuffer<byte[]> comparator;
  /**
   * Used to make sure that an instance of this class is put on the
   * correct scratch file writer work queue for processing.
@@ -152,7 +151,6 @@
    recordOffset = size - 1;
    keys = 0;
    position = 0;
    comparator = null;
    indexKey = null;
  }
@@ -231,18 +229,6 @@
  }
  /**
   * Set the comparator to be used in the buffer processing to the specified
   * comparator.
   *
   * @param comparator The comparator to set the buffer's comparator to.
   */
  public void setComparator(ComparatorBuffer<byte[]> comparator)
  {
    this.comparator = comparator;
  }
  /**
   * Return a buffer's current position value.
   *
   * @return The buffer's current position value.
@@ -252,7 +238,6 @@
    return position;
  }
  /**
   * Set a buffer's position value to the specified position.
   *
@@ -263,7 +248,6 @@
    this.position = position;
  }
  /**
   * Sort the buffer.
   */
@@ -271,7 +255,6 @@
    sort(0, keys);
  }
  /**
   * Add the specified key byte array and EntryID to the buffer.
   *
@@ -455,7 +438,7 @@
    int yKeyLen = readInt(buffer, yoffSet);
    int yKey = INT_SIZE + yoffSet;
    int cmp = comparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKeyLen, yIndexID);
    int cmp = indexComparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKeyLen, yIndexID);
    return evaluateReturnCode(cmp, op);
  }
@@ -467,7 +450,7 @@
    int xKeyLen = readInt(buffer, xoffSet);
    int xKey = INT_SIZE + xoffSet;
    int cmp = comparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKey.length, yIndexID);
    int cmp = indexComparator.compare(buffer, xKey, xKeyLen, xIndexID, yKey, yKey.length, yIndexID);
    return evaluateReturnCode(cmp, op);
  }
@@ -486,7 +469,7 @@
    offset += REC_OVERHEAD + LONG_SIZE;
    int keyLen = readInt(buffer, offset);
    int key = INT_SIZE + offset;
    return comparator.compare(buffer, key, keyLen, b, b.length) == 0
    return indexComparator.compare(buffer, key, keyLen, b, b.length) == 0
        && indexID == bIndexID;
  }
@@ -510,7 +493,7 @@
    int keyLen = readInt(buffer, offset);
    int key = INT_SIZE + offset;
    final int cmp = comparator.compare(buffer, key, keyLen, keyBuf.array(), keyBuf.limit());
    final int cmp = indexComparator.compare(buffer, key, keyLen, keyBuf.array(), keyBuf.limit());
    if (cmp != 0)
    {
      return cmp;
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
@@ -1088,7 +1088,7 @@
            };
            index.indexer.indexEntry(entry, dummySet, options);
            index.indexEntry(entry, dummySet, options);
            if (!foundMatchingKey.get())
            {
opendj-server-legacy/src/main/java/org/opends/server/tools/DBTest.java
@@ -35,7 +35,13 @@
import java.io.OutputStream;
import java.io.PrintStream;
import java.text.ParseException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigException;
@@ -45,7 +51,19 @@
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.admin.std.server.LocalDBBackendCfg;
import org.opends.server.api.Backend;
import org.opends.server.backends.jeb.*;
import org.opends.server.backends.jeb.BackendImpl;
import org.opends.server.backends.jeb.DN2ID;
import org.opends.server.backends.jeb.DN2URI;
import org.opends.server.backends.jeb.DatabaseContainer;
import org.opends.server.backends.jeb.EntryContainer;
import org.opends.server.backends.jeb.EntryID;
import org.opends.server.backends.jeb.EntryIDSet;
import org.opends.server.backends.jeb.ID2Entry;
import org.opends.server.backends.jeb.Index;
import org.opends.server.backends.jeb.JebFormat;
import org.opends.server.backends.jeb.RootContainer;
import org.opends.server.backends.jeb.SortValuesSet;
import org.opends.server.backends.jeb.VLVIndex;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler;
@@ -1517,7 +1535,7 @@
  {
    if(databaseContainer instanceof Index)
    {
      return ((Index)databaseContainer).indexer.getComparator();
      return ((Index) databaseContainer).getComparator();
    }
    else if(databaseContainer instanceof VLVIndex)
    {