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

Jean-Noël Rouvignac
07.00.2015 f3b16f1a20361d02edda90e09e1df0997ddc4dc2
Code cleanup

AttributeIndex.java:
Extracted methods updateStats() and appendDebugIndexesInformation().

IndexQueryFactoryImpl.java:
Extracted method appendDisabledIndexType().
Renamed updateStatsUndefinedResults() to updateStatsForUndefinedResults().
2 files modified
118 ■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java 69 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java 49 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
@@ -489,34 +489,40 @@
   * @param monitor
   *          The backend monitor provider that will keep index
   *          filter usage statistics.
   * @return The candidate entry IDs that might contain the filter assertion
   *         value.
   * @return The candidate entry IDs that might contain the filter assertion value.
   */
  private EntryIDSet evaluateIndexQuery(IndexQuery indexQuery, String indexName, SearchFilter filter,
      StringBuilder debugBuffer, BackendMonitor monitor)
  {
    // FIXME equivalent code exists in evaluateExtensibleFilter()
    LocalizableMessageBuilder debugMessage = monitor.isFilterUseEnabled() ? new LocalizableMessageBuilder() : null;
    StringBuilder indexNameOut = debugBuffer == null ? null : new StringBuilder();
    EntryIDSet results = indexQuery.evaluate(debugMessage, indexNameOut);
    if (debugBuffer != null)
    {
      appendDebugIndexInformation(debugBuffer, indexName);
      appendDebugIndexInformation(debugBuffer, config.getAttribute(), indexName);
      appendDebugUnindexedInformation(debugBuffer, indexNameOut);
    }
    updateStats(monitor, filter, results, debugMessage);
    return results;
  }
  private void updateStats(BackendMonitor monitor, SearchFilter filter, EntryIDSet idSet,
      LocalizableMessageBuilder debugMessage)
  {
    if (monitor.isFilterUseEnabled())
    {
      if (results.isDefined())
      if (idSet.isDefined())
      {
        monitor.updateStats(filter, results.size());
        monitor.updateStats(filter, idSet.size());
      }
      else
      {
        monitor.updateStats(filter, debugMessage.toMessage());
      }
    }
    return results;
  }
  /**
@@ -524,20 +530,33 @@
   * an auxiliary index type during index query.
   *
   * @param debugBuffer the current debugsearchindex buffer
   * @param indexNameOut the name of the index type
   * @param indexName the name of the index type
   */
  private void appendDebugUnindexedInformation(StringBuilder debugBuffer, StringBuilder indexNameOut)
  private void appendDebugUnindexedInformation(StringBuilder debugBuffer, StringBuilder indexName)
  {
    if (indexNameOut.length() > 0)
    if (indexName.length() > 0)
    {
      debugBuffer.append(newUndefinedSet());
      appendDebugIndexInformation(debugBuffer, indexNameOut.toString());
      appendDebugIndexInformation(debugBuffer, config.getAttribute(), indexName);
    }
  }
  private void appendDebugIndexInformation(final StringBuilder debugBuffer, final String infos)
  private void appendDebugIndexInformation(StringBuilder debugBuffer, AttributeType attrType, CharSequence indexName)
  {
    debugBuffer.append("[INDEX:").append(config.getAttribute().getNameOrOID()).append(".").append(infos).append("]");
    String attrNameOrOID = attrType.getNameOrOID();
    debugBuffer.append("[INDEX:").append(attrNameOrOID).append(".").append(indexName).append("]");
  }
  private void appendDebugIndexesInformation(StringBuilder debugBuffer, AttributeType attrType,
      Collection<? extends Indexer> indexers)
  {
    final String attrNameOrOID = attrType.getNameOrOID();
    debugBuffer.append("[INDEX:");
    for (Indexer indexer : indexers)
    {
      debugBuffer.append(" ").append(attrNameOrOID).append(".").append(indexer.getIndexID());
    }
    debugBuffer.append("]");
  }
  /**
@@ -877,8 +896,7 @@
   *                     to this search.
   * @param monitor The backend monitor provider that will keep
   *                index filter usage statistics.
   * @return The candidate entry IDs that might contain the filter
   *         assertion value.
   * @return The candidate entry IDs that might contain the filter assertion value.
   */
  EntryIDSet evaluateExtensibleFilter(IndexQueryFactory<IndexQuery> indexQueryFactory,
      SearchFilter filter, StringBuilder debugBuffer, BackendMonitor monitor)
@@ -912,6 +930,7 @@
    try
    {
      // FIXME equivalent code exists in evaluateIndexQuery()
      final IndexQuery indexQuery = rule.getAssertion(filter.getAssertionValue()).createIndexQuery(indexQueryFactory);
      LocalizableMessageBuilder debugMessage = monitor.isFilterUseEnabled() ? new LocalizableMessageBuilder() : null;
      StringBuilder indexNameOut = debugBuffer == null ? null : new StringBuilder();
@@ -919,29 +938,11 @@
      if (debugBuffer != null)
      {
        debugBuffer.append("[INDEX:");
        for (Indexer indexer : rule.createIndexers(indexingOptions))
        {
            debugBuffer.append(" ")
              .append(filter.getAttributeType().getNameOrOID())
              .append(".")
              .append(indexer.getIndexID());
        }
        debugBuffer.append("]");
        appendDebugIndexesInformation(debugBuffer, filter.getAttributeType(), rule.createIndexers(indexingOptions));
        appendDebugUnindexedInformation(debugBuffer, indexNameOut);
      }
      if (monitor.isFilterUseEnabled())
      {
        if (results.isDefined())
        {
          monitor.updateStats(filter, results.size());
        }
        else
        {
          monitor.updateStats(filter, debugMessage.toMessage());
        }
      }
      updateStats(monitor, filter, results, debugMessage);
      return results;
    }
    catch (DecodeException e)
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
@@ -44,6 +44,7 @@
import org.opends.server.backends.pluggable.spi.Cursor;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
import org.opends.server.types.AttributeType;
/**
 * This class is an implementation of IndexQueryFactory which creates
@@ -186,19 +187,12 @@
          final Index index = attributeIndex.getNameToIndexes().get(indexID);
          if (index == null)
          {
            if(debugMessage != null)
            {
              debugMessage.append(INFO_INDEX_FILTER_INDEX_TYPE_DISABLED.get(indexID,
                  attributeIndex.getAttributeType().getNameOrOID()));
            }
            appendDisabledIndexType(debugMessage, indexID, attributeIndex.getAttributeType());
            return createMatchAllQuery().evaluate(debugMessage, indexNameOut);
          }
          final EntryIDSet entrySet = index.get(txn, key);
          if (debugMessage != null && !entrySet.isDefined())
          {
            updateStatsUndefinedResults(debugMessage, index);
          }
          updateStatsForUndefinedResults(debugMessage, entrySet, index);
          return entrySet;
        }
@@ -222,19 +216,12 @@
        final Index index = attributeIndex.getNameToIndexes().get(indexID);
        if (index == null)
        {
          if (debugMessage != null)
          {
            debugMessage.append(INFO_INDEX_FILTER_INDEX_TYPE_DISABLED.get(indexID,
                  attributeIndex.getAttributeType().getNameOrOID()));
          }
          appendDisabledIndexType(debugMessage, indexID, attributeIndex.getAttributeType());
          return createMatchAllQuery().evaluate(debugMessage, indexNameOut);
        }
        final EntryIDSet entrySet = readRange(index, txn, lowerBound, upperBound, includeLowerBound, includeUpperBound);
        if (debugMessage != null && !entrySet.isDefined())
        {
          updateStatsUndefinedResults(debugMessage, index);
        }
        updateStatsForUndefinedResults(debugMessage, entrySet, index);
        return entrySet;
      }
@@ -369,19 +356,12 @@
          final Index index = attributeIndex.getNameToIndexes().get(indexID);
          if (index == null)
          {
            if(debugMessage != null)
            {
              debugMessage.append(INFO_INDEX_FILTER_INDEX_TYPE_DISABLED.get(indexID,
                  attributeIndex.getAttributeType().getNameOrOID()));
            }
            appendDisabledIndexType(debugMessage, indexID, attributeIndex.getAttributeType());
            return newUndefinedSet();
          }
          final EntryIDSet entrySet = index.get(txn, AttributeIndex.PRESENCE_KEY);
          if (debugMessage != null && !entrySet.isDefined())
          {
            updateStatsUndefinedResults(debugMessage, index);
          }
          updateStatsForUndefinedResults(debugMessage, entrySet, index);
          if (indexNameOut != null)
          {
            indexNameOut.append(IndexFilterType.PRESENCE);
@@ -397,7 +377,19 @@
      };
  }
  private static void updateStatsUndefinedResults(LocalizableMessageBuilder debugMessage, Index index)
  private static void appendDisabledIndexType(LocalizableMessageBuilder debugMessage, String indexID,
      AttributeType attrType)
  {
    if (debugMessage != null)
    {
      debugMessage.append(INFO_INDEX_FILTER_INDEX_TYPE_DISABLED.get(indexID, attrType.getNameOrOID()));
    }
  }
  private static void updateStatsForUndefinedResults(
      LocalizableMessageBuilder debugMessage, EntryIDSet idSet, Index index)
  {
    if (debugMessage != null && !idSet.isDefined())
  {
    if (!index.isTrusted())
    {
@@ -408,6 +400,7 @@
      debugMessage.append(INFO_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(index.getName()));
    }
  }
  }
  @Override
  public IndexingOptions getIndexingOptions()