From c2eaf97f09d246d92b8259687472304c5bab695c Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 28 Jan 2016 08:29:17 +0000
Subject: [PATCH] (PR-201) Removed all matching rule factories when matching rules are part of the core schema Only left CollationMatchingRuleFactory in order to fix OPENDJ-2638

---
 opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java |   57 +++++++++++----------------------------------------------
 1 files changed, 11 insertions(+), 46 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
index ecdc0bb..1a6d452 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
@@ -26,6 +26,9 @@
  */
 package org.opends.server.schema;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.SchemaMessages.*;
+
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -45,14 +48,10 @@
 import org.opends.server.admin.std.server.CollationMatchingRuleCfg;
 import org.opends.server.api.MatchingRuleFactory;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.ServerContext;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
 import org.opends.server.util.CollectionUtils;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.SchemaMessages.*;
-
 /**
  * This class is a factory class for Collation matching rules. It
  * creates different matching rules based on the configuration entries.
@@ -71,29 +70,14 @@
   /** Map of OID and the Matching Rule. */
   private final Map<String, MatchingRule> matchingRules = new HashMap<>();
 
-  private ServerContext serverContext;
-
-
   /** Creates a new instance of CollationMatchingRuleFactory. */
   public CollationMatchingRuleFactory()
   {
     super();
   }
 
-  /**
-   * Sets the server context.
-   *
-   * @param serverContext
-   *            The server context.
-   */
-  public void setServerContext(ServerContext serverContext)
-  {
-    this.serverContext = serverContext;
-  }
-
-  /** {@inheritDoc} */
   @Override
-  public final Collection<org.forgerock.opendj.ldap.schema.MatchingRule> getMatchingRules()
+  public final Collection<MatchingRule> getMatchingRules()
   {
     return Collections.unmodifiableCollection(matchingRules.values());
   }
@@ -111,15 +95,6 @@
     matchingRules.put(oid, matchingRule);
   }
 
-  /**
-   * Clears the Map containing matching Rules.
-   */
-  private void resetRules()
-  {
-    matchingRules.clear();
-  }
-
-  /** {@inheritDoc} */
   @Override
   public void initializeMatchingRule(CollationMatchingRuleCfg configuration)
       throws ConfigException, InitializationException
@@ -172,7 +147,6 @@
     currentConfig.addCollationChangeListener(this);
   }
 
-  /** {@inheritDoc} */
   @Override
   public void finalizeMatchingRule()
   {
@@ -180,7 +154,6 @@
     currentConfig.removeCollationChangeListener(this);
   }
 
-  /** {@inheritDoc} */
   @Override
   public ConfigChangeResult applyConfigurationChange(
       CollationMatchingRuleCfg configuration)
@@ -199,18 +172,16 @@
     }
 
     // Since we have come here it means that this Factory is enabled and
-    // there is a change in the CollationMatchingRuleFactory's
-    // configuration.
+    // there is a change in the CollationMatchingRuleFactory's configuration.
     // Deregister all the Matching Rule corresponding to this factory.
     for (MatchingRule rule : getMatchingRules())
     {
       DirectoryServer.deregisterMatchingRule(rule);
     }
 
-    // Clear the associated matching rules.
-    resetRules();
+    matchingRules.clear();
 
-    final Schema schema = serverContext.getSchemaNG();
+    final Schema schema = DirectoryServer.getSchema().getSchemaNG();
     for (String collation : configuration.getCollation())
     {
       // validation has already been performed in isConfigurationChangeAcceptable()
@@ -237,7 +208,6 @@
     return ccr;
   }
 
-  /** {@inheritDoc} */
   @Override
   public boolean isConfigurationChangeAcceptable(
       CollationMatchingRuleCfg configuration,
@@ -245,15 +215,14 @@
   {
     boolean configAcceptable = true;
 
-    // If the new configuration disables this factory, don't do
-    // anything.
+    // If the new configuration disables this factory, don't do anything.
     if (!configuration.isEnabled())
     {
       return configAcceptable;
     }
 
-    // If it comes here we don't need to verify MatchingRuleType; it
-    // should be okay as its syntax is verified by the admin framework.
+    // If it comes here we don't need to verify MatchingRuleType;
+    // it should be okay as its syntax is verified by the admin framework.
     // Iterate over the collations and verify if the format is okay.
     // Also, verify if the locale is allowed by the JVM.
     for (String collation : configuration.getCollation())
@@ -283,7 +252,6 @@
     return configAcceptable;
   }
 
-
   /**
    * Verifies if the locale is supported by the JVM.
    *
@@ -329,10 +297,7 @@
     return locale;
   }
 
-  /**
-   * A utility class for extracting the OID and Language Tag from the
-   * configuration entry.
-   */
+  /** A utility class for extracting the OID and Language Tag from the configuration entry. */
   private final class CollationMapper
   {
     /** OID of the collation rule. */

--
Gitblit v1.10.0