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

Jean-Noel Rouvignac
07.19.2014 c7a06e53f0b6d640ae9dd6f9e76d46e12167410b
opendj3-server-dev/src/server/org/opends/server/backends/jeb/JEExtensibleIndexer.java
@@ -31,7 +31,11 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DecodeException;
import org.opends.server.api.ExtensibleIndexer;
import org.opends.server.api.MatchingRule;
import org.opends.server.types.AttributeType;
@@ -45,6 +49,8 @@
 */
public final class JEExtensibleIndexer extends Indexer
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /**
   * The comparator for index keys generated by this class.
   */
@@ -173,16 +179,28 @@
  {
    if (attrList == null) return;
    Set<ByteString> keysBS = new TreeSet<ByteString>();
    for (Attribute attr : attrList)
    {
      if (!attr.isVirtual())
      {
        for (AttributeValue value : attr)
        {
          extensibleIndexer.getKeys(value, keys);
          try
          {
            extensibleIndexer.createKeys(null, value.getValue(), null, keysBS);
          }
          catch (DecodeException e)
          {
            logger.traceException(e);
          }
        }
      }
    }
    for (ByteString key : keysBS)
    {
      keys.add(key.toByteArray());
    }
  }