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

Jean-Noël Rouvignac
12.09.2016 657c7dde306550c55f5d3a8a162077547a6ea3f0
Code cleanups: renaming, comments, etc.
2 files modified
114 ■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java 91 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java 23 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 *      Portions copyright 2013 Manuel Gaupp
 */
package org.opends.server.backends.pluggable;
@@ -751,24 +751,7 @@
          // Handle base-object search first.
          if (searchScope == SearchScope.BASE_OBJECT)
          {
            final Entry baseEntry = fetchBaseEntry(txn, aBaseDN, searchScope);
            if (!isManageDsaITOperation(searchOperation))
            {
              dn2uri.checkTargetForReferral(baseEntry, searchOperation.getScope());
            }
            if (searchOperation.getFilter().matchesEntry(baseEntry))
            {
              searchOperation.returnEntry(baseEntry, null);
            }
            if (pageRequest != null)
            {
              // Indicate no more pages.
              Control control = new PagedResultsControl(pageRequest.isCritical(), 0, null);
              searchOperation.getResponseControls().add(control);
            }
            searchBaseObject(txn, searchOperation, pageRequest);
            return null;
          }
@@ -780,7 +763,7 @@
            debugBuffer = new StringBuilder();
          }
          EntryIDSet entryIDSet = null;
          EntryIDSet candidateEntryIDs = null;
          boolean candidatesAreInScope = false;
          if (sortRequest != null)
          {
@@ -788,8 +771,8 @@
            {
              try
              {
                entryIDSet = vlvIndex.evaluate(txn, searchOperation, sortRequest, vlvRequest, debugBuffer);
                if (entryIDSet != null)
                candidateEntryIDs = vlvIndex.evaluate(txn, searchOperation, sortRequest, vlvRequest, debugBuffer);
                if (candidateEntryIDs != null)
                {
                  searchOperation.addResponseControl(newServerSideSortControl(SUCCESS));
                  candidatesAreInScope = true;
@@ -806,8 +789,8 @@
          // Combining server-side sort with paged result controls
          // requires us to use an entryIDSet where the entryIDs are ordered
          // so further paging can restart where it previously stopped
          long[] entryIDReorderedSet;
          if (entryIDSet == null)
          long[] reorderedCandidateEntryIDs;
          if (candidateEntryIDs == null)
          {
            if (processSearchWithVirtualAttributeRule(searchOperation, true))
            {
@@ -819,17 +802,12 @@
                EntryContainer.this, txn, searchOperation, debugBuffer, rootContainer.getMonitorProvider());
            // Evaluate the filter against the attribute indexes.
            entryIDSet = indexFilter.evaluate();
            if (!isBelowFilterThreshold(entryIDSet))
            candidateEntryIDs = indexFilter.evaluate();
            if (!isBelowFilterThreshold(candidateEntryIDs))
            {
              final int lookThroughLimit = searchOperation.getClientConnection().getLookthroughLimit();
              final int indexLimit =
                  config.getIndexEntryLimit() == 0 ? CURSOR_ENTRY_LIMIT : config.getIndexEntryLimit();
              final int idSetLimit = lookThroughLimit > 0 ? Math.min(indexLimit, lookThroughLimit) : indexLimit;
              final int idSetLimit = getEntryIDSetLimit(searchOperation);
              final EntryIDSet scopeSet = getIDSetFromScope(txn, aBaseDN, searchScope, idSetLimit);
              entryIDSet.retainAll(scopeSet);
              candidateEntryIDs.retainAll(scopeSet);
              if (debugBuffer != null)
              {
                debugBuffer.append(" scope=").append(searchScope);
@@ -850,11 +828,11 @@
              try
              {
                SortOrder sortOrder = sortRequest.getSortOrder();
                entryIDReorderedSet = sort(txn, entryIDSet, searchOperation, sortOrder, vlvRequest);
                reorderedCandidateEntryIDs = sort(txn, candidateEntryIDs, searchOperation, sortOrder, vlvRequest);
              }
              catch (DirectoryException de)
              {
                entryIDReorderedSet = entryIDSet.toLongArray();
                reorderedCandidateEntryIDs = candidateEntryIDs.toLongArray();
                serverSideSortControlError(searchOperation, sortRequest, de);
              }
              try
@@ -882,12 +860,12 @@
            }
            else
            {
              entryIDReorderedSet = entryIDSet.toLongArray();
              reorderedCandidateEntryIDs = candidateEntryIDs.toLongArray();
            }
          }
          else
          {
            entryIDReorderedSet = entryIDSet.toLongArray();
            reorderedCandidateEntryIDs = candidateEntryIDs.toLongArray();
          }
          // If requested, construct and return a fictitious entry containing
@@ -895,17 +873,17 @@
          if (debugBuffer != null)
          {
            debugBuffer.append(" final=");
            entryIDSet.toString(debugBuffer);
            candidateEntryIDs.toString(debugBuffer);
            Entry debugEntry = buildDebugSearchIndexEntry(debugBuffer);
            searchOperation.returnEntry(debugEntry, null);
            return null;
          }
          if (entryIDReorderedSet != null)
          if (reorderedCandidateEntryIDs != null)
          {
            rootContainer.getMonitorProvider().incrementIndexedSearchCount();
            searchIndexed(txn, entryIDReorderedSet, candidatesAreInScope, searchOperation, pageRequest);
            searchIndexed(txn, reorderedCandidateEntryIDs, candidatesAreInScope, searchOperation, pageRequest);
          }
          else
          {
@@ -927,10 +905,8 @@
            if (sortRequest != null)
            {
              // FIXME -- Add support for sorting unindexed searches using indexes
              // like DSEE currently does.
              // FIXME OPENDJ-2628: Add support for sorting unindexed searches using indexes like DSEE currently does
              searchOperation.addResponseControl(newServerSideSortControl(UNWILLING_TO_PERFORM));
              if (sortRequest.isCritical())
              {
                throw new DirectoryException(
@@ -943,6 +919,35 @@
          return null;
        }
        private int getEntryIDSetLimit(final SearchOperation searchOperation)
        {
          final int lookThroughLimit = searchOperation.getClientConnection().getLookthroughLimit();
          final int indexLimit = config.getIndexEntryLimit() == 0 ? CURSOR_ENTRY_LIMIT : config.getIndexEntryLimit();
          return lookThroughLimit > 0 ? Math.min(indexLimit, lookThroughLimit) : indexLimit;
        }
        private void searchBaseObject(ReadableTransaction txn, SearchOperation searchOperation,
            PagedResultsControl pageRequest) throws DirectoryException
        {
          final Entry baseEntry = fetchBaseEntry(txn, searchOperation.getBaseDN(), searchOperation.getScope());
          if (!isManageDsaITOperation(searchOperation))
          {
            dn2uri.checkTargetForReferral(baseEntry, searchOperation.getScope());
          }
          if (searchOperation.getFilter().matchesEntry(baseEntry))
          {
            searchOperation.returnEntry(baseEntry, null);
          }
          if (pageRequest != null)
          {
            // Indicate no more pages.
            Control control = new PagedResultsControl(pageRequest.isCritical(), 0, null);
            searchOperation.getResponseControls().add(control);
          }
        }
        private void serverSideSortControlError(final SearchOperation searchOperation,
            ServerSideSortRequestControl sortRequest, DirectoryException de) throws DirectoryException
        {
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
@@ -517,6 +517,7 @@
    return null;
  }
  /** Returns the total number of entries (a.k.a records, a.k.a keys) indexed by this VLV index. */
  private int getEntryCount(final ReadableTransaction txn)
  {
    return (int) counter.getCount(txn, COUNT_KEY);
@@ -710,10 +711,7 @@
      do
      {
        final ByteString key = definedCursor.getKey();
        if (logger.isTraceEnabled())
        {
          logSearchKeyResult(key);
        }
        logSearchKeyResult(key);
        selectedIDs[selectedPos++] = decodeEntryIDFromVLVKey(key);
      }
      while (selectedPos < count && definedCursor.next());
@@ -729,7 +727,7 @@
    if (debugBuilder != null)
    {
      debugBuilder.append("[COUNT:");
      debugBuilder.append(selectedPos);
      debugBuilder.append(selectedIDs.length);
      debugBuilder.append("]");
    }
    return selectedIDs;
@@ -743,12 +741,15 @@
  private void logSearchKeyResult(final ByteString key)
  {
    final StringBuilder searchKeyHex = new StringBuilder();
    byteArrayToHexPlusAscii(searchKeyHex, key.toByteArray(), 4);
    final StringBuilder foundKeyHex = new StringBuilder();
    byteArrayToHexPlusAscii(foundKeyHex, key.toByteArray(), 4);
    logger.trace("Retrieved a sort values set in VLV vlvIndex %s\n" + "Search Key:%s\nFound Key:%s\n",
        config.getName(), searchKeyHex, foundKeyHex);
    if (logger.isTraceEnabled())
    {
      final StringBuilder searchKeyHex = new StringBuilder();
      byteArrayToHexPlusAscii(searchKeyHex, key.toByteArray(), 4);
      final StringBuilder foundKeyHex = new StringBuilder();
      byteArrayToHexPlusAscii(foundKeyHex, key.toByteArray(), 4);
      logger.trace("Retrieved a sort values set in VLV vlvIndex %s\n" + "Search Key:%s\nFound Key:%s\n",
          config.getName(), searchKeyHex, foundKeyHex);
    }
  }
  boolean verifyEntry(final ReadableTransaction txn, final EntryID entryID, final Entry entry)