From 570a8fc9d5996cd19861e23363d2adb2b59dfbfd Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 03 Jun 2016 11:52:19 +0000
Subject: [PATCH] OPENDJ-3037 Remove Schema.getSubTypes()

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java |   52 +++++++++++++++++++---------------------------------
 1 files changed, 19 insertions(+), 33 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
index c2bd410..cac8f8a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -45,6 +45,9 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.config.server.ConfigurationAddListener;
+import org.forgerock.opendj.config.server.ConfigurationChangeListener;
+import org.forgerock.opendj.config.server.ConfigurationDeleteListener;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ByteStringBuilder;
@@ -53,14 +56,11 @@
 import org.forgerock.opendj.ldap.SearchScope;
 import org.forgerock.opendj.ldap.SortKey;
 import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.forgerock.util.Pair;
-import org.opends.messages.CoreMessages;
-import org.forgerock.opendj.config.server.ConfigurationAddListener;
-import org.forgerock.opendj.config.server.ConfigurationChangeListener;
-import org.forgerock.opendj.config.server.ConfigurationDeleteListener;
 import org.forgerock.opendj.server.config.server.BackendIndexCfg;
 import org.forgerock.opendj.server.config.server.BackendVLVIndexCfg;
 import org.forgerock.opendj.server.config.server.PluggableBackendCfg;
+import org.forgerock.util.Pair;
+import org.opends.messages.CoreMessages;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.EntryCache;
 import org.opends.server.api.VirtualAttributeProvider;
@@ -89,11 +89,11 @@
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.ServerContext;
+import org.opends.server.crypto.CryptoSuite;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.Attributes;
 import org.opends.server.types.CanceledOperationException;
 import org.opends.server.types.Control;
-import org.opends.server.crypto.CryptoSuite;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
@@ -2229,8 +2229,7 @@
     // Process in index configuration order.
     for (AttributeIndex index : attrIndexMap.values())
     {
-      // Check whether any modifications apply to this indexed attribute.
-      if (isAttributeModified(index, mods))
+      if (isAttributeModified(index.getAttributeType(), mods))
       {
         index.modifyEntry(buffer, entryID, oldEntry, newEntry);
       }
@@ -2486,31 +2485,6 @@
     return null;
   }
 
-  /**
-   * Checks if any modifications apply to this indexed attribute.
-   * @param index the indexed attributes.
-   * @param mods the modifications to check for.
-   * @return true if any apply, false otherwise.
-   */
-  private static boolean isAttributeModified(AttributeIndex index, List<Modification> mods)
-  {
-    AttributeType indexAttributeType = index.getAttributeType();
-    List<AttributeType> subTypes =
-            DirectoryServer.getSchema().getSubTypes(indexAttributeType);
-
-    for (Modification mod : mods)
-    {
-      Attribute modAttr = mod.getAttribute();
-      AttributeType modAttrType = modAttr.getAttributeDescription().getAttributeType();
-      if (modAttrType.equals(indexAttributeType)
-          || subTypes.contains(modAttrType))
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
   boolean isConfidentialityEnabled()
   {
     return config.isConfidentialityEnabled();
@@ -2740,4 +2714,16 @@
   public String toString() {
     return treePrefix;
   }
+
+  static boolean isAttributeModified(AttributeType attrType, List<Modification> mods)
+  {
+    for (Modification mod : mods)
+    {
+      if (attrType.isSuperTypeOf(mod.getAttribute().getAttributeDescription().getAttributeType()))
+      {
+        return true;
+      }
+    }
+    return false;
+  }
 }

--
Gitblit v1.10.0