From 2bf80e51262791cae4bea6553c4af052e96dc740 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Mon, 25 Jun 2007 00:06:03 +0000
Subject: [PATCH] Migrate the matching rule configuration to the admin framework.

---
 opends/src/admin/defn/org/opends/server/admin/std/EqualityMatchingRuleConfiguration.xml                    |   50 +
 opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java                           |   19 
 opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java                         |   21 
 opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualLengthApproximateMatchingRule.java |   16 
 opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml                                    |   13 
 opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java                                   |   21 
 opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java                     |   19 
 opends/src/server/org/opends/server/api/MatchingRule.java                                                  |   25 
 opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java                      |   18 
 opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java                          |   21 
 opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java                        |   18 
 opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java                           |   19 
 opends/src/server/org/opends/server/messages/ConfigMessages.java                                           |   57 +
 opends/src/server/org/opends/server/core/SchemaConfigManager.java                                          |  385 ---------
 opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java                            |   21 
 opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java                        |   18 
 opends/src/server/org/opends/server/core/MatchingRuleConfigManager.java                                    |  649 ++++++++++++++++
 opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java                      |   21 
 opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java                                   |   21 
 opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java                         |   21 
 opends/src/admin/defn/org/opends/server/admin/std/ApproximateMatchingRuleConfiguration.xml                 |   50 +
 opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java         |   21 
 opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java                          |   21 
 opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java                                   |   21 
 opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java                    |   21 
 opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java                              |   21 
 opends/resource/config/config.ldif                                                                         |    2 
 opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java                            |   21 
 opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java                      |   18 
 opends/src/admin/defn/org/opends/server/admin/std/MatchingRuleConfiguration.xml                            |   90 ++
 opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java                        |   20 
 opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java                              |   21 
 opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java                        |   21 
 opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java              |   11 
 opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java                           |   21 
 opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java                             |   21 
 opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java                            |   21 
 opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java                  |   18 
 opends/src/server/org/opends/server/schema/KeywordEqualityMatchingRule.java                                |   17 
 opends/src/admin/defn/org/opends/server/admin/std/SubstringMatchingRuleConfiguration.xml                   |   50 +
 opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java                              |   21 
 opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java          |   21 
 opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java                       |   21 
 opends/src/server/org/opends/server/api/OrderingMatchingRule.java                                          |    3 
 opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java                                |   21 
 opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java                             |   21 
 opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java                          |   21 
 opends/src/server/org/opends/server/api/EqualityMatchingRule.java                                          |    5 
 opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java                          |   21 
 opends/tests/unit-tests-testng/src/server/org/opends/server/backends/SchemaTestMatchingRule.java           |   17 
 opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java                           |   19 
 opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java                                |   21 
 opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java                       |   21 
 opends/src/server/org/opends/server/api/SubstringMatchingRule.java                                         |    3 
 opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java                    |   20 
 opends/src/server/org/opends/server/api/ApproximateMatchingRule.java                                       |    3 
 opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java                           |   21 
 opends/src/admin/defn/org/opends/server/admin/std/OrderingMatchingRuleConfiguration.xml                    |   50 +
 opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java                             |   21 
 opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java                                |   21 
 opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java                         |   21 
 61 files changed, 1,191 insertions(+), 1,162 deletions(-)

diff --git a/opends/resource/config/config.ldif b/opends/resource/config/config.ldif
index 4427388..d1dad8b 100644
--- a/opends/resource/config/config.ldif
+++ b/opends/resource/config/config.ldif
@@ -983,7 +983,7 @@
 dn: cn=Word Equality Matching Rule,cn=Matching Rules,cn=config
 objectClass: top
 objectClass: ds-cfg-matching-rule
-objectClass: ds-cfg-substring-matching-rule
+objectClass: ds-cfg-equality-matching-rule
 cn: Word Equality Matching Rule
 ds-cfg-matching-rule-class: org.opends.server.schema.WordEqualityMatchingRule
 ds-cfg-matching-rule-enabled: true
diff --git a/opends/src/admin/defn/org/opends/server/admin/std/ApproximateMatchingRuleConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/ApproximateMatchingRuleConfiguration.xml
new file mode 100644
index 0000000..4e60bad
--- /dev/null
+++ b/opends/src/admin/defn/org/opends/server/admin/std/ApproximateMatchingRuleConfiguration.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+! CDDL HEADER START
+!
+! The contents of this file are subject to the terms of the
+! Common Development and Distribution License, Version 1.0 only
+! (the "License").  You may not use this file except in compliance
+! with the License.
+!
+! You can obtain a copy of the license at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+! See the License for the specific language governing permissions
+! and limitations under the License.
+!
+! When distributing Covered Code, include this CDDL HEADER in each
+! file and include the License file at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+! add the following below this CDDL HEADER, with the fields enclosed
+! by brackets "[]" replaced with your own identifying information:
+!      Portions Copyright [yyyy] [name of copyright owner]
+!
+! CDDL HEADER END
+!
+!
+!      Portions Copyright 2007 Sun Microsystems, Inc.
+! -->
+
+<adm:managed-object name="approximate-matching-rule"
+plural-name="approximate-matching-rules"
+package="org.opends.server.admin.std" extends="matching-rule" abstract="false"
+xmlns:adm="http://www.opends.org/admin"
+xmlns:ldap="http://www.opends.org/admin-ldap">
+  <adm:synopsis>
+    <adm:user-friendly-plural-name />
+    define a set of rules for performing approximate matching operations against
+    assertion values.  In many cases, approximate matching is based on a
+    "sounds like" operation.
+  </adm:synopsis>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.30</ldap:oid>
+      <ldap:name>ds-cfg-approximate-matching-rule</ldap:name>
+      <ldap:superior>ds-cfg-matching-rule</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+</adm:managed-object>
+
diff --git a/opends/src/admin/defn/org/opends/server/admin/std/EqualityMatchingRuleConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/EqualityMatchingRuleConfiguration.xml
new file mode 100644
index 0000000..186c5e5
--- /dev/null
+++ b/opends/src/admin/defn/org/opends/server/admin/std/EqualityMatchingRuleConfiguration.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+! CDDL HEADER START
+!
+! The contents of this file are subject to the terms of the
+! Common Development and Distribution License, Version 1.0 only
+! (the "License").  You may not use this file except in compliance
+! with the License.
+!
+! You can obtain a copy of the license at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+! See the License for the specific language governing permissions
+! and limitations under the License.
+!
+! When distributing Covered Code, include this CDDL HEADER in each
+! file and include the License file at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+! add the following below this CDDL HEADER, with the fields enclosed
+! by brackets "[]" replaced with your own identifying information:
+!      Portions Copyright [yyyy] [name of copyright owner]
+!
+! CDDL HEADER END
+!
+!
+!      Portions Copyright 2007 Sun Microsystems, Inc.
+! -->
+
+<adm:managed-object name="equality-matching-rule"
+plural-name="equality-matching-rules"
+package="org.opends.server.admin.std" extends="matching-rule" abstract="false"
+xmlns:adm="http://www.opends.org/admin"
+xmlns:ldap="http://www.opends.org/admin-ldap">
+  <adm:synopsis>
+    <adm:user-friendly-plural-name />
+    define a set of rules for performing equality matching operations against
+    assertion values (i.e., to determine whether an attribute value equals an
+    assertion value).
+  </adm:synopsis>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.31</ldap:oid>
+      <ldap:name>ds-cfg-equality-matching-rule</ldap:name>
+      <ldap:superior>ds-cfg-matching-rule</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+</adm:managed-object>
+
diff --git a/opends/src/admin/defn/org/opends/server/admin/std/MatchingRuleConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/MatchingRuleConfiguration.xml
new file mode 100644
index 0000000..2209c82
--- /dev/null
+++ b/opends/src/admin/defn/org/opends/server/admin/std/MatchingRuleConfiguration.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+! CDDL HEADER START
+!
+! The contents of this file are subject to the terms of the
+! Common Development and Distribution License, Version 1.0 only
+! (the "License").  You may not use this file except in compliance
+! with the License.
+!
+! You can obtain a copy of the license at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+! See the License for the specific language governing permissions
+! and limitations under the License.
+!
+! When distributing Covered Code, include this CDDL HEADER in each
+! file and include the License file at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+! add the following below this CDDL HEADER, with the fields enclosed
+! by brackets "[]" replaced with your own identifying information:
+!      Portions Copyright [yyyy] [name of copyright owner]
+!
+! CDDL HEADER END
+!
+!
+!      Portions Copyright 2007 Sun Microsystems, Inc.
+! -->
+
+<adm:managed-object name="matching-rule"
+plural-name="matching-rules"
+package="org.opends.server.admin.std" abstract="true"
+xmlns:adm="http://www.opends.org/admin"
+xmlns:ldap="http://www.opends.org/admin-ldap">
+  <adm:synopsis>
+    <adm:user-friendly-plural-name />
+    define a set of rules for performing matching operations against assertion
+    values.  The primary types of matching rules are equality, ordering,
+    substring, and approximate.
+  </adm:synopsis>
+
+  <adm:tag name="core"/>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.29</ldap:oid>
+      <ldap:name>ds-cfg-matching-rule</ldap:name>
+      <ldap:superior>top</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+  <adm:property name="enabled" mandatory="true">
+    <adm:synopsis>
+      Indicate whether the
+      <adm:user-friendly-name />
+      is enabled for use.
+    </adm:synopsis>
+    <adm:syntax>
+      <adm:boolean />
+    </adm:syntax>
+    <adm:profile name="ldap">
+      <ldap:attribute>
+        <ldap:oid>1.3.6.1.4.1.26027.1.1.63</ldap:oid>
+        <ldap:name>ds-cfg-matching-rule-enabled</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
+  <adm:property name="matching-rule-class" mandatory="true">
+    <adm:synopsis>
+      The fully-qualified name of the Java class that provides the
+      <adm:user-friendly-name />
+      implementation.
+    </adm:synopsis>
+    <adm:syntax>
+      <adm:java-class>
+        <adm:instance-of>
+          org.opends.server.api.MatchingRule
+        </adm:instance-of>
+      </adm:java-class>
+    </adm:syntax>
+    <adm:profile name="ldap">
+      <ldap:attribute>
+        <ldap:oid>1.3.6.1.4.1.26027.1.1.62</ldap:oid>
+        <ldap:name>ds-cfg-matching-rule-class</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
+</adm:managed-object>
+
diff --git a/opends/src/admin/defn/org/opends/server/admin/std/OrderingMatchingRuleConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/OrderingMatchingRuleConfiguration.xml
new file mode 100644
index 0000000..056941a
--- /dev/null
+++ b/opends/src/admin/defn/org/opends/server/admin/std/OrderingMatchingRuleConfiguration.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+! CDDL HEADER START
+!
+! The contents of this file are subject to the terms of the
+! Common Development and Distribution License, Version 1.0 only
+! (the "License").  You may not use this file except in compliance
+! with the License.
+!
+! You can obtain a copy of the license at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+! See the License for the specific language governing permissions
+! and limitations under the License.
+!
+! When distributing Covered Code, include this CDDL HEADER in each
+! file and include the License file at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+! add the following below this CDDL HEADER, with the fields enclosed
+! by brackets "[]" replaced with your own identifying information:
+!      Portions Copyright [yyyy] [name of copyright owner]
+!
+! CDDL HEADER END
+!
+!
+!      Portions Copyright 2007 Sun Microsystems, Inc.
+! -->
+
+<adm:managed-object name="ordering-matching-rule"
+plural-name="ordering-matching-rules"
+package="org.opends.server.admin.std" extends="matching-rule" abstract="false"
+xmlns:adm="http://www.opends.org/admin"
+xmlns:ldap="http://www.opends.org/admin-ldap">
+  <adm:synopsis>
+    <adm:user-friendly-plural-name />
+    define a set of rules for performing ordering matching operations against
+    assertion values.  These matching rules are used for greater-than-or-equal
+    and less-than-or-equal comparisons, as well as for sorting.
+  </adm:synopsis>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.32</ldap:oid>
+      <ldap:name>ds-cfg-ordering-matching-rule</ldap:name>
+      <ldap:superior>ds-cfg-matching-rule</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+</adm:managed-object>
+
diff --git a/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
index 4b9b955..e26bf52 100644
--- a/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
+++ b/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
@@ -321,6 +321,19 @@
       </cli:relation>
     </adm:profile>
   </adm:relation>
+  <adm:relation name="matching-rule">
+    <adm:one-to-many />
+    <adm:profile name="ldap">
+      <ldap:rdn-sequence>
+        cn=Matching Rules,cn=config
+      </ldap:rdn-sequence>
+    </adm:profile>
+    <adm:profile name="cli">
+      <cli:relation>
+        <cli:default-property name="enabled" />
+      </cli:relation>
+    </adm:profile>
+  </adm:relation>
   <adm:relation name="attribute-syntax">
     <adm:one-to-many />
     <adm:profile name="ldap">
diff --git a/opends/src/admin/defn/org/opends/server/admin/std/SubstringMatchingRuleConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/SubstringMatchingRuleConfiguration.xml
new file mode 100644
index 0000000..0223952
--- /dev/null
+++ b/opends/src/admin/defn/org/opends/server/admin/std/SubstringMatchingRuleConfiguration.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+! CDDL HEADER START
+!
+! The contents of this file are subject to the terms of the
+! Common Development and Distribution License, Version 1.0 only
+! (the "License").  You may not use this file except in compliance
+! with the License.
+!
+! You can obtain a copy of the license at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+! See the License for the specific language governing permissions
+! and limitations under the License.
+!
+! When distributing Covered Code, include this CDDL HEADER in each
+! file and include the License file at
+! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+! add the following below this CDDL HEADER, with the fields enclosed
+! by brackets "[]" replaced with your own identifying information:
+!      Portions Copyright [yyyy] [name of copyright owner]
+!
+! CDDL HEADER END
+!
+!
+!      Portions Copyright 2007 Sun Microsystems, Inc.
+! -->
+
+<adm:managed-object name="substring-matching-rule"
+plural-name="substring-matching-rules"
+package="org.opends.server.admin.std" extends="matching-rule" abstract="false"
+xmlns:adm="http://www.opends.org/admin"
+xmlns:ldap="http://www.opends.org/admin-ldap">
+  <adm:synopsis>
+    <adm:user-friendly-plural-name />
+    define a set of rules for performing substring matching operations against
+    assertion values.  Substring matching may be used to perform partial
+    matching with attribute values.
+  </adm:synopsis>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.33</ldap:oid>
+      <ldap:name>ds-cfg-substring-matching-rule</ldap:name>
+      <ldap:superior>ds-cfg-matching-rule</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+</adm:managed-object>
+
diff --git a/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java b/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java
index 1f0668a..713c3f1 100644
--- a/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java
@@ -28,6 +28,7 @@
 
 
 
+import org.opends.server.admin.std.server.ApproximateMatchingRuleCfg;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
 
@@ -39,7 +40,7 @@
  * rule used for approximate matching.
  */
 public abstract class ApproximateMatchingRule
-       extends MatchingRule
+       extends MatchingRule<ApproximateMatchingRuleCfg>
 {
   /**
    * Indicates whether the two provided normalized values are
diff --git a/opends/src/server/org/opends/server/api/EqualityMatchingRule.java b/opends/src/server/org/opends/server/api/EqualityMatchingRule.java
index 03b651d..10efb90 100644
--- a/opends/src/server/org/opends/server/api/EqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/EqualityMatchingRule.java
@@ -28,13 +28,14 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
+import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
 import org.opends.server.types.DebugLogLevel;
 
 import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
 
 
 
@@ -44,7 +45,7 @@
  * rule used for equality matching.
  */
 public abstract class EqualityMatchingRule
-       extends MatchingRule
+       extends MatchingRule<EqualityMatchingRuleCfg>
 {
   /**
    * The tracer object for the debug logger.
diff --git a/opends/src/server/org/opends/server/api/MatchingRule.java b/opends/src/server/org/opends/server/api/MatchingRule.java
index 53c9f22..7a7618a 100644
--- a/opends/src/server/org/opends/server/api/MatchingRule.java
+++ b/opends/src/server/org/opends/server/api/MatchingRule.java
@@ -28,7 +28,7 @@
 
 
 
-import org.opends.server.config.ConfigEntry;
+import org.opends.server.admin.std.server.MatchingRuleCfg;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
@@ -41,16 +41,18 @@
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements a matching
  * rule.
+ *
+ * @param  <T>  The type of configuration handled by this matching
+ *              rule.
  */
-public abstract class MatchingRule
+public abstract class MatchingRule<T extends MatchingRuleCfg>
 {
   /**
    * Initializes this matching rule based on the information in the
    * provided configuration entry.
    *
-   * @param  configEntry  The configuration entry that contains the
-   *                      information to use to initialize this
-   *                      matching rule.
+   * @param  configuration  The configuration to use to intialize this
+   *                        matching rule.
    *
    * @throws  ConfigException  If an unrecoverable problem arises in
    *                           the process of performing the
@@ -60,12 +62,23 @@
    *                                   configuration-related occurs
    *                                   during initialization.
    */
-  public abstract void initializeMatchingRule(ConfigEntry configEntry)
+  public abstract void initializeMatchingRule(T configuration)
          throws ConfigException, InitializationException;
 
 
 
   /**
+   * Performs any finalization that may be needed whenever this
+   * matching rule is taken out of service.
+   */
+  public void finalizeMatchingRule()
+  {
+    // No implementation is required by default.
+  }
+
+
+
+  /**
    * Retrieves the common name for this matching rule.
    *
    * @return  The common name for this matching rule, or
diff --git a/opends/src/server/org/opends/server/api/OrderingMatchingRule.java b/opends/src/server/org/opends/server/api/OrderingMatchingRule.java
index c303b38..8db11c1 100644
--- a/opends/src/server/org/opends/server/api/OrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/OrderingMatchingRule.java
@@ -31,6 +31,7 @@
 import java.io.Serializable;
 import java.util.Comparator;
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
 
@@ -43,7 +44,7 @@
  * or processing range filters.
  */
 public abstract class OrderingMatchingRule
-       extends MatchingRule
+       extends MatchingRule<OrderingMatchingRuleCfg>
        implements Comparator<byte[]>, Serializable
 {
   /**
diff --git a/opends/src/server/org/opends/server/api/SubstringMatchingRule.java b/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
index 5df9de9..ec26d2c 100644
--- a/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
@@ -30,6 +30,7 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
 import org.opends.server.types.DirectoryException;
@@ -42,7 +43,7 @@
  * rule used for substring matching.
  */
 public abstract class SubstringMatchingRule
-       extends MatchingRule
+       extends MatchingRule<SubstringMatchingRuleCfg>
 {
   /**
    * Normalizes the provided value fragment into a form that can be
diff --git a/opends/src/server/org/opends/server/core/MatchingRuleConfigManager.java b/opends/src/server/org/opends/server/core/MatchingRuleConfigManager.java
new file mode 100644
index 0000000..2d4554f
--- /dev/null
+++ b/opends/src/server/org/opends/server/core/MatchingRuleConfigManager.java
@@ -0,0 +1,649 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ */
+package org.opends.server.core;
+
+
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.opends.server.admin.ClassPropertyDefinition;
+import org.opends.server.admin.server.ConfigurationAddListener;
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.std.meta.ApproximateMatchingRuleCfgDefn;
+import org.opends.server.admin.std.meta.EqualityMatchingRuleCfgDefn;
+import org.opends.server.admin.std.meta.OrderingMatchingRuleCfgDefn;
+import org.opends.server.admin.std.meta.SubstringMatchingRuleCfgDefn;
+import org.opends.server.admin.std.server.ApproximateMatchingRuleCfg;
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
+import org.opends.server.admin.std.server.MatchingRuleCfg;
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
+import org.opends.server.admin.std.server.RootCfg;
+import org.opends.server.admin.server.ServerManagementContext;
+import org.opends.server.api.ApproximateMatchingRule;
+import org.opends.server.api.EqualityMatchingRule;
+import org.opends.server.api.MatchingRule;
+import org.opends.server.api.OrderingMatchingRule;
+import org.opends.server.api.SubstringMatchingRule;
+import org.opends.server.config.ConfigException;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.DN;
+import org.opends.server.types.ErrorLogCategory;
+import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.MatchingRuleUse;
+import org.opends.server.types.ResultCode;
+
+import static org.opends.server.loggers.ErrorLogger.*;
+import static org.opends.server.messages.ConfigMessages.*;
+import static org.opends.server.messages.MessageHandler.*;
+import static org.opends.server.util.StaticUtils.*;
+
+
+
+/**
+ * This class defines a utility that will be used to manage the set of matching
+ * rules defined in the Directory Server.  It wil initialize the rules when the
+ * server starts, and then will manage any additions, removals, or modifications
+ * to any matching rules while the server is running.
+ */
+public class MatchingRuleConfigManager
+       implements ConfigurationChangeListener<MatchingRuleCfg>,
+                  ConfigurationAddListener<MatchingRuleCfg>,
+                  ConfigurationDeleteListener<MatchingRuleCfg>
+
+{
+  // A mapping between the DNs of the config entries and the associated matching
+  // rules.
+  private ConcurrentHashMap<DN,MatchingRule> matchingRules;
+
+
+
+  /**
+   * Creates a new instance of this matching rule config manager.
+   */
+  public MatchingRuleConfigManager()
+  {
+    matchingRules = new ConcurrentHashMap<DN,MatchingRule>();
+  }
+
+
+
+  /**
+   * Initializes all matching rules currently defined in the Directory Server
+   * configuration.  This should only be called at Directory Server startup.
+   *
+   * @throws  ConfigException  If a configuration problem causes the matching
+   *                           rule initialization process to fail.
+   *
+   * @throws  InitializationException  If a problem occurs while initializing
+   *                                   the matching rules that is not related to
+   *                                   the server configuration.
+   */
+  public void initializeMatchingRules()
+         throws ConfigException, InitializationException
+  {
+    // Get the root configuration object.
+    ServerManagementContext managementContext =
+         ServerManagementContext.getInstance();
+    RootCfg rootConfiguration =
+         managementContext.getRootConfiguration();
+
+
+    // Register as an add and delete listener with the root configuration so we
+    // can be notified if any matching rule entries are added or removed.
+    rootConfiguration.addMatchingRuleAddListener(this);
+    rootConfiguration.addMatchingRuleDeleteListener(this);
+
+
+    //Initialize the existing matching rules.
+    for (String name : rootConfiguration.listMatchingRules())
+    {
+      MatchingRuleCfg mrConfiguration = rootConfiguration.getMatchingRule(name);
+      mrConfiguration.addChangeListener(this);
+
+      if (mrConfiguration.isEnabled())
+      {
+        String className = mrConfiguration.getMatchingRuleClass();
+        try
+        {
+          MatchingRule matchingRule =
+               loadMatchingRule(className, mrConfiguration);
+
+          try
+          {
+            DirectoryServer.registerMatchingRule(matchingRule, false);
+            matchingRules.put(mrConfiguration.dn(), matchingRule);
+          }
+          catch (DirectoryException de)
+          {
+            int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
+            String message = getMessage(msgID,
+                                  String.valueOf(mrConfiguration.dn()),
+                                  de.getErrorMessage());
+            logError(ErrorLogCategory.CONFIGURATION,
+                     ErrorLogSeverity.SEVERE_ERROR, message, msgID);
+            continue;
+          }
+        }
+        catch (InitializationException ie)
+        {
+          logError(ErrorLogCategory.CONFIGURATION,
+                   ErrorLogSeverity.SEVERE_ERROR,
+                   ie.getMessage(), ie.getMessageID());
+          continue;
+        }
+      }
+    }
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean isConfigurationAddAcceptable(MatchingRuleCfg configuration,
+                      List<String> unacceptableReasons)
+  {
+    if (configuration.isEnabled())
+    {
+      // Get the name of the class and make sure we can instantiate it as a
+      // matching rule.
+      String className = configuration.getMatchingRuleClass();
+      try
+      {
+        loadMatchingRule(className, null);
+      }
+      catch (InitializationException ie)
+      {
+        unacceptableReasons.add(ie.getMessage());
+        return false;
+      }
+    }
+
+    // If we've gotten here, then it's fine.
+    return true;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public ConfigChangeResult applyConfigurationAdd(MatchingRuleCfg configuration)
+  {
+    ResultCode        resultCode          = ResultCode.SUCCESS;
+    boolean           adminActionRequired = false;
+    ArrayList<String> messages            = new ArrayList<String>();
+
+    configuration.addChangeListener(this);
+
+    if (! configuration.isEnabled())
+    {
+      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    }
+
+    MatchingRule matchingRule = null;
+
+    // Get the name of the class and make sure we can instantiate it as a
+    // matching rule.
+    String className = configuration.getMatchingRuleClass();
+    try
+    {
+      matchingRule = loadMatchingRule(className, configuration);
+
+      try
+      {
+        DirectoryServer.registerMatchingRule(matchingRule, false);
+        matchingRules.put(configuration.dn(), matchingRule);
+      }
+      catch (DirectoryException de)
+      {
+        int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
+        String message = getMessage(msgID, String.valueOf(configuration.dn()),
+                                    de.getErrorMessage());
+        messages.add(message);
+
+        if (resultCode == ResultCode.SUCCESS)
+        {
+          resultCode = DirectoryServer.getServerErrorResultCode();
+        }
+      }
+    }
+    catch (InitializationException ie)
+    {
+      if (resultCode == ResultCode.SUCCESS)
+      {
+        resultCode = DirectoryServer.getServerErrorResultCode();
+      }
+
+      messages.add(ie.getMessage());
+    }
+
+    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean isConfigurationDeleteAcceptable(MatchingRuleCfg configuration,
+                      List<String> unacceptableReasons)
+  {
+    // If the matching rule is enabled, then check to see if there are any
+    // defined attribute types or matching rule uses that use the matching rule.
+    // If so, then don't allow it to be deleted.
+    boolean configAcceptable = true;
+    MatchingRule matchingRule = matchingRules.get(configuration.dn());
+    if (matchingRule != null)
+    {
+      String oid = matchingRule.getOID();
+      for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+      {
+        ApproximateMatchingRule amr = at.getApproximateMatchingRule();
+        if ((amr != null) && oid.equals(amr.getOID()))
+        {
+          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
+          String message = getMessage(msgID, matchingRule.getName(),
+                                      at.getNameOrOID());
+          unacceptableReasons.add(message);
+
+          configAcceptable = false;
+          continue;
+        }
+
+        EqualityMatchingRule emr = at.getEqualityMatchingRule();
+        if ((emr != null) && oid.equals(emr.getOID()))
+        {
+          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
+          String message = getMessage(msgID, matchingRule.getName(),
+                                      at.getNameOrOID());
+          unacceptableReasons.add(message);
+
+          configAcceptable = false;
+          continue;
+        }
+
+        OrderingMatchingRule omr = at.getOrderingMatchingRule();
+        if ((omr != null) && oid.equals(omr.getOID()))
+        {
+          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
+          String message = getMessage(msgID, matchingRule.getName(),
+                                      at.getNameOrOID());
+          unacceptableReasons.add(message);
+
+          configAcceptable = false;
+          continue;
+        }
+
+        SubstringMatchingRule smr = at.getSubstringMatchingRule();
+        if ((smr != null) && oid.equals(smr.getOID()))
+        {
+          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT;
+          String message = getMessage(msgID, matchingRule.getName(),
+                                      at.getNameOrOID());
+          unacceptableReasons.add(message);
+
+          configAcceptable = false;
+          continue;
+        }
+      }
+
+      for (MatchingRuleUse mru : DirectoryServer.getMatchingRuleUses().values())
+      {
+        if (oid.equals(mru.getMatchingRule().getOID()))
+        {
+          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_MRU;
+          String message = getMessage(msgID, matchingRule.getName(),
+                                      mru.getName());
+          unacceptableReasons.add(message);
+
+          configAcceptable = false;
+          continue;
+        }
+      }
+    }
+
+    return configAcceptable;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public ConfigChangeResult applyConfigurationDelete(
+                                 MatchingRuleCfg configuration)
+  {
+    ResultCode        resultCode          = ResultCode.SUCCESS;
+    boolean           adminActionRequired = false;
+    ArrayList<String> messages            = new ArrayList<String>();
+
+    MatchingRule matchingRule = matchingRules.remove(configuration.dn());
+    if (matchingRule != null)
+    {
+      DirectoryServer.deregisterMatchingRule(matchingRule);
+      matchingRule.finalizeMatchingRule();
+    }
+
+    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean isConfigurationChangeAcceptable(MatchingRuleCfg configuration,
+                      List<String> unacceptableReasons)
+  {
+    boolean configAcceptable = true;
+    if (configuration.isEnabled())
+    {
+      // Get the name of the class and make sure we can instantiate it as a
+      // matching rule.
+      String className = configuration.getMatchingRuleClass();
+      try
+      {
+        loadMatchingRule(className, null);
+      }
+      catch (InitializationException ie)
+      {
+        unacceptableReasons.add(ie.getMessage());
+        configAcceptable = false;
+      }
+    }
+    else
+    {
+      // If the matching rule is currently enabled and the change would make it
+      // disabled, then only allow it if the matching rule isn't already in use.
+      MatchingRule matchingRule = matchingRules.get(configuration.dn());
+      if (matchingRule != null)
+      {
+        String oid = matchingRule.getOID();
+        for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+        {
+          ApproximateMatchingRule amr = at.getApproximateMatchingRule();
+          if ((amr != null) && oid.equals(amr.getOID()))
+          {
+            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
+            String message = getMessage(msgID, matchingRule.getName(),
+                                        at.getNameOrOID());
+            unacceptableReasons.add(message);
+
+            configAcceptable = false;
+            continue;
+          }
+
+          EqualityMatchingRule emr = at.getEqualityMatchingRule();
+          if ((emr != null) && oid.equals(emr.getOID()))
+          {
+            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
+            String message = getMessage(msgID, matchingRule.getName(),
+                                        at.getNameOrOID());
+            unacceptableReasons.add(message);
+
+            configAcceptable = false;
+            continue;
+          }
+
+          OrderingMatchingRule omr = at.getOrderingMatchingRule();
+          if ((omr != null) && oid.equals(omr.getOID()))
+          {
+            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
+            String message = getMessage(msgID, matchingRule.getName(),
+                                        at.getNameOrOID());
+            unacceptableReasons.add(message);
+
+            configAcceptable = false;
+            continue;
+          }
+
+          SubstringMatchingRule smr = at.getSubstringMatchingRule();
+          if ((smr != null) && oid.equals(smr.getOID()))
+          {
+            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT;
+            String message = getMessage(msgID, matchingRule.getName(),
+                                        at.getNameOrOID());
+            unacceptableReasons.add(message);
+
+            configAcceptable = false;
+            continue;
+          }
+        }
+
+        for (MatchingRuleUse mru :
+             DirectoryServer.getMatchingRuleUses().values())
+        {
+          if (oid.equals(mru.getMatchingRule().getOID()))
+          {
+            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_MRU;
+            String message = getMessage(msgID, matchingRule.getName(),
+                                        mru.getName());
+            unacceptableReasons.add(message);
+
+            configAcceptable = false;
+            continue;
+          }
+        }
+      }
+    }
+
+    return configAcceptable;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public ConfigChangeResult applyConfigurationChange(
+                                 MatchingRuleCfg configuration)
+  {
+    ResultCode        resultCode          = ResultCode.SUCCESS;
+    boolean           adminActionRequired = false;
+    ArrayList<String> messages            = new ArrayList<String>();
+
+
+    // Get the existing matching rule if it's already enabled.
+    MatchingRule existingRule = matchingRules.get(configuration.dn());
+
+
+    // If the new configuration has the matching rule disabled, then disable it
+    // if it is enabled, or do nothing if it's already disabled.
+    if (! configuration.isEnabled())
+    {
+      if (existingRule != null)
+      {
+        DirectoryServer.deregisterMatchingRule(existingRule);
+
+        MatchingRule rule = matchingRules.remove(configuration.dn());
+        if (rule != null)
+        {
+          rule.finalizeMatchingRule();
+        }
+      }
+
+      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    }
+
+
+    // Get the class for the matching rule.  If the matching rule is already
+    // enabled, then we shouldn't do anything with it although if the class has
+    // changed then we'll at least need to indicate that administrative action
+    // is required.  If the matching rule is disabled, then instantiate the
+    // class and initialize and register it as a matching rule.
+    String className = configuration.getMatchingRuleClass();
+    if (existingRule != null)
+    {
+      if (! className.equals(existingRule.getClass().getName()))
+      {
+        adminActionRequired = true;
+      }
+
+      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    }
+
+    MatchingRule matchingRule = null;
+    try
+    {
+      matchingRule = loadMatchingRule(className, configuration);
+
+      try
+      {
+        DirectoryServer.registerMatchingRule(matchingRule, false);
+        matchingRules.put(configuration.dn(), matchingRule);
+      }
+      catch (DirectoryException de)
+      {
+        int    msgID   = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
+        String message = getMessage(msgID, String.valueOf(configuration.dn()),
+                                    de.getErrorMessage());
+        messages.add(message);
+
+        if (resultCode == ResultCode.SUCCESS)
+        {
+          resultCode = DirectoryServer.getServerErrorResultCode();
+        }
+      }
+    }
+    catch (InitializationException ie)
+    {
+      if (resultCode == ResultCode.SUCCESS)
+      {
+        resultCode = DirectoryServer.getServerErrorResultCode();
+      }
+
+      messages.add(ie.getMessage());
+    }
+
+    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+  }
+
+
+
+  /**
+   * Loads the specified class, instantiates it as an attribute syntax, and
+   * optionally initializes that instance.
+   *
+   * @param  className      The fully-qualified name of the attribute syntax
+   *                        class to load, instantiate, and initialize.
+   * @param  configuration  The configuration to use to initialize the attribute
+   *                        syntax, or {@code null} if the attribute syntax
+   *                        should not be initialized.
+   *
+   * @return  The possibly initialized attribute syntax.
+   *
+   * @throws  InitializationException  If a problem occurred while attempting to
+   *                                   initialize the attribute syntax.
+   */
+  private MatchingRule loadMatchingRule(String className,
+                                        MatchingRuleCfg configuration)
+          throws InitializationException
+  {
+    try
+    {
+      MatchingRule matchingRule = null;
+      if (configuration instanceof ApproximateMatchingRuleCfg)
+      {
+        ApproximateMatchingRuleCfgDefn definition =
+             ApproximateMatchingRuleCfgDefn.getInstance();
+        ClassPropertyDefinition propertyDefinition =
+             definition.getMatchingRuleClassPropertyDefinition();
+        Class<? extends ApproximateMatchingRule> approximateMatchingRuleClass =
+             propertyDefinition.loadClass(className,
+                                          ApproximateMatchingRule.class);
+        matchingRule = approximateMatchingRuleClass.newInstance();
+      }
+      else if (configuration instanceof EqualityMatchingRuleCfg)
+      {
+        EqualityMatchingRuleCfgDefn definition =
+             EqualityMatchingRuleCfgDefn.getInstance();
+        ClassPropertyDefinition propertyDefinition =
+             definition.getMatchingRuleClassPropertyDefinition();
+        Class<? extends EqualityMatchingRule> equalityMatchingRuleClass =
+             propertyDefinition.loadClass(className,
+                                          EqualityMatchingRule.class);
+        matchingRule = equalityMatchingRuleClass.newInstance();
+      }
+      else if (configuration instanceof OrderingMatchingRuleCfg)
+      {
+        OrderingMatchingRuleCfgDefn definition =
+             OrderingMatchingRuleCfgDefn.getInstance();
+        ClassPropertyDefinition propertyDefinition =
+             definition.getMatchingRuleClassPropertyDefinition();
+        Class<? extends OrderingMatchingRule> orderingMatchingRuleClass =
+             propertyDefinition.loadClass(className,
+                                          OrderingMatchingRule.class);
+        matchingRule = orderingMatchingRuleClass.newInstance();
+      }
+      else if (configuration instanceof SubstringMatchingRuleCfg)
+      {
+        SubstringMatchingRuleCfgDefn definition =
+             SubstringMatchingRuleCfgDefn.getInstance();
+        ClassPropertyDefinition propertyDefinition =
+             definition.getMatchingRuleClassPropertyDefinition();
+        Class<? extends SubstringMatchingRule> substringMatchingRuleClass =
+             propertyDefinition.loadClass(className,
+                                          SubstringMatchingRule.class);
+        matchingRule = substringMatchingRuleClass.newInstance();
+      }
+      else
+      {
+        throw new AssertionError("Unsupported matching rule type:  " +
+                                 className + " with config type " +
+                                 configuration.getClass().getName());
+      }
+
+      if (configuration != null)
+      {
+        Method method =
+             matchingRule.getClass().getMethod("initializeMatchingRule",
+                  configuration.definition().getServerConfigurationClass());
+        method.invoke(matchingRule, configuration);
+      }
+
+      return matchingRule;
+    }
+    catch (Exception e)
+    {
+      int msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_INITIALIZE;
+      String message = getMessage(msgID, className,
+                                  String.valueOf(configuration.dn()),
+                                  stackTraceToSingleLineString(e));
+      throw new InitializationException(msgID, message, e);
+    }
+  }
+}
+
diff --git a/opends/src/server/org/opends/server/core/SchemaConfigManager.java b/opends/src/server/org/opends/server/core/SchemaConfigManager.java
index d677b71..bce8c46 100644
--- a/opends/src/server/org/opends/server/core/SchemaConfigManager.java
+++ b/opends/src/server/org/opends/server/core/SchemaConfigManager.java
@@ -34,15 +34,8 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.opends.server.api.ConfigAddListener;
-import org.opends.server.api.ConfigChangeListener;
-import org.opends.server.api.ConfigDeleteListener;
 import org.opends.server.api.ConfigHandler;
-import org.opends.server.api.MatchingRule;
-import org.opends.server.config.BooleanConfigAttribute;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
-import org.opends.server.config.StringConfigAttribute;
 import org.opends.server.schema.AttributeTypeSyntax;
 import org.opends.server.schema.DITContentRuleSyntax;
 import org.opends.server.schema.DITStructureRuleSyntax;
@@ -52,11 +45,9 @@
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
-import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DITContentRule;
 import org.opends.server.types.DITStructureRule;
-import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
@@ -67,7 +58,6 @@
 import org.opends.server.types.ModificationType;
 import org.opends.server.types.NameForm;
 import org.opends.server.types.ObjectClass;
-import org.opends.server.types.ResultCode;
 import org.opends.server.types.Schema;
 import org.opends.server.util.LDIFReader;
 
@@ -94,7 +84,6 @@
  * forms, and matching rule use definitions will be ignored.
  */
 public class SchemaConfigManager
-       implements ConfigChangeListener, ConfigAddListener, ConfigDeleteListener
 {
   /**
    * The tracer object for the debug logger.
@@ -172,233 +161,9 @@
   public void initializeMatchingRules()
          throws ConfigException, InitializationException
   {
-    // First, get the matching rule configuration base entry.
-    ConfigEntry matchingRuleBaseEntry;
-    try
-    {
-      DN matchingRuleBaseDN = DN.decode(DN_MATCHING_RULE_CONFIG_BASE);
-      matchingRuleBaseEntry = configHandler.getConfigEntry(matchingRuleBaseDN);
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_GET_MR_BASE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new ConfigException(msgID, message, e);
-    }
-
-    if (matchingRuleBaseEntry == null)
-    {
-      // The matching rule base entry does not exist.  This is not acceptable,
-      // so throw an exception.
-      int    msgID   = MSGID_CONFIG_SCHEMA_MR_BASE_DOES_NOT_EXIST;
-      String message = getMessage(msgID);
-      throw new ConfigException(msgID, message);
-    }
-
-
-    // Register add and delete listeners with the matching rule base entry.  We
-    // don't care about modifications to it.
-    matchingRuleBaseEntry.registerAddListener(this);
-    matchingRuleBaseEntry.registerDeleteListener(this);
-
-
-    // See if the matching rule base has any children.  If not, then this is
-    // very bad, since we won't know how to make any comparisons.
-    if (! matchingRuleBaseEntry.hasChildren())
-    {
-      int    msgID   = MSGID_CONFIG_SCHEMA_NO_MATCHING_RULES;
-      String message = getMessage(msgID);
-      throw new ConfigException(msgID, message);
-    }
-
-
-    // Iterate through the child entries and process them as matching rule
-    // entries.
-    for (ConfigEntry childEntry : matchingRuleBaseEntry.getChildren().values())
-    {
-      DN mrEntryDN = childEntry.getDN();
-
-
-      // Register as a change listener for this matching rule entry so that we
-      // will be notified of any changes that may be made to it.
-      childEntry.registerChangeListener(this);
-
-
-      // Check to see if this entry appears to contain a matching rule
-      // configuration.  If not, log a warning and skip it.
-      if (! childEntry.hasObjectClass(OC_MATCHING_RULE))
-      {
-        int    msgID   = MSGID_CONFIG_SCHEMA_ENTRY_DOES_NOT_HAVE_MR_CONFIG;
-        String message = getMessage(msgID, String.valueOf(mrEntryDN));
-        logError(ErrorLogCategory.CONFIGURATION,
-                 ErrorLogSeverity.SEVERE_WARNING, message, msgID);
-        continue;
-      }
-
-
-      // See if the entry contains an attribute that indicates whether the
-      // matching rule should be enabled.  If it does not, or if it is not set
-      // to "true", then skip it.
-      int msgID = MSGID_CONFIG_SCHEMA_MR_ATTR_DESCRIPTION_ENABLED;
-      BooleanConfigAttribute enabledStub =
-           new BooleanConfigAttribute(ATTR_MATCHING_RULE_ENABLED,
-                                      getMessage(msgID), false);
-      try
-      {
-        BooleanConfigAttribute enabledAttr =
-             (BooleanConfigAttribute)
-             childEntry.getConfigAttribute(enabledStub);
-        if (enabledAttr == null)
-        {
-          // The attribute is not present, so this matching rule will be
-          // disabled.  Log a message and continue.
-          msgID = MSGID_CONFIG_SCHEMA_MR_NO_ENABLED_ATTR;
-          String message = getMessage(msgID, String.valueOf(mrEntryDN));
-          logError(ErrorLogCategory.CONFIGURATION,
-                   ErrorLogSeverity.SEVERE_WARNING, message, msgID);
-          continue;
-        }
-        else if (! enabledAttr.activeValue())
-        {
-          // The matching rule is explicitly disabled.  Log a mild warning and
-          // continue.
-          msgID = MSGID_CONFIG_SCHEMA_MR_DISABLED;
-          String message = getMessage(msgID, String.valueOf(mrEntryDN));
-          logError(ErrorLogCategory.CONFIGURATION,
-                   ErrorLogSeverity.INFORMATIONAL, message, msgID);
-          continue;
-        }
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_MR_UNABLE_TO_DETERMINE_ENABLED_STATE;
-        String message = getMessage(msgID, String.valueOf(mrEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-
-      // See if the entry contains an attribute that specifies the class name
-      // for the matching rule implementation.  If it does, then load it and
-      // make sure that it's a valid matching rule implementation.  If there is
-      // no such attribute, the specified class cannot be loaded, or it does not
-      // contain a valid matching rule implementation, then log an error and
-      // skip it.
-      String className;
-      msgID = MSGID_CONFIG_SCHEMA_MR_ATTR_DESCRIPTION_CLASS;
-      StringConfigAttribute classStub =
-           new StringConfigAttribute(ATTR_MATCHING_RULE_CLASS,
-                                     getMessage(msgID), true, false, true);
-      try
-      {
-        StringConfigAttribute classAttr =
-             (StringConfigAttribute)
-             childEntry.getConfigAttribute(classStub);
-        if (classAttr == null)
-        {
-          msgID = MSGID_CONFIG_SCHEMA_MR_NO_CLASS_ATTR;
-          String message = getMessage(msgID, String.valueOf(mrEntryDN));
-          logError(ErrorLogCategory.CONFIGURATION,
-                   ErrorLogSeverity.SEVERE_ERROR, message, msgID);
-          continue;
-        }
-        else
-        {
-          className = classAttr.activeValue();
-        }
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_GET_CLASS;
-        String message = getMessage(msgID, String.valueOf(mrEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-      MatchingRule matchingRule;
-      try
-      {
-        Class matchingRuleClass = DirectoryServer.loadClass(className);
-        matchingRule = (MatchingRule) matchingRuleClass.newInstance();
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_INSTANTIATE;
-        String message = getMessage(msgID, String.valueOf(className),
-                                    String.valueOf(mrEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-
-      // Perform the necessary initialization for the matching rule.
-      try
-      {
-        matchingRule.initializeMatchingRule(childEntry);
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_INITIALIZE;
-        String message = getMessage(msgID, String.valueOf(className),
-                                    String.valueOf(mrEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-
-      // Register the matching rule with the server schema.
-      try
-      {
-        schema.registerMatchingRule(matchingRule, false);
-      }
-      catch (DirectoryException de)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, de);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR;
-        String message = getMessage(msgID, String.valueOf(mrEntryDN),
-                                    de.getErrorMessage());
-        logError(ErrorLogCategory.CONFIGURATION,
-                 ErrorLogSeverity.SEVERE_WARNING, message, msgID);
-        continue;
-      }
-    }
+    MatchingRuleConfigManager matchingRuleConfigManager =
+         new MatchingRuleConfigManager();
+    matchingRuleConfigManager.initializeMatchingRules();
   }
 
 
@@ -1571,149 +1336,5 @@
 
     return mods;
   }
-
-
-
-  /**
-   * Indicates whether the configuration entry that will result from a proposed
-   * modification is acceptable to this change listener.
-   *
-   * @param  configEntry         The configuration entry that will result from
-   *                             the requested update.
-   * @param  unacceptableReason  A buffer to which this method can append a
-   *                             human-readable message explaining why the
-   *                             proposed change is not acceptable.
-   *
-   * @return  <CODE>true</CODE> if the proposed entry contains an acceptable
-   *          configuration, or <CODE>false</CODE> if it does not.
-   */
-  public boolean configChangeIsAcceptable(ConfigEntry configEntry,
-                                          StringBuilder unacceptableReason)
-  {
-    // NYI
-
-    // If we've gotten here then the monitor entry appears to be acceptable.
-    return true;
-  }
-
-
-
-  /**
-   * Attempts to apply a new configuration to this Directory Server component
-   * based on the provided changed entry.
-   *
-   * @param  configEntry  The configuration entry that containing the updated
-   *                      configuration for this component.
-   *
-   * @return  Information about the result of processing the configuration
-   *          change.
-   */
-  public ConfigChangeResult applyConfigurationChange(ConfigEntry configEntry)
-  {
-    DN                configEntryDN       = configEntry.getDN();
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<String> messages            = new ArrayList<String>();
-
-
-    // NYI
-
-
-    // If we've gotten here, then there haven't been any changes to anything
-    // that we care about.
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
-  }
-
-
-
-  /**
-   * Indicates whether the configuration entry that will result from a proposed
-   * add is acceptable to this add listener.
-   *
-   * @param  configEntry         The configuration entry that will result from
-   *                             the requested add.
-   * @param  unacceptableReason  A buffer to which this method can append a
-   *                             human-readable message explaining why the
-   *                             proposed entry is not acceptable.
-   *
-   * @return  <CODE>true</CODE> if the proposed entry contains an acceptable
-   *          configuration, or <CODE>false</CODE> if it does not.
-   */
-  public boolean configAddIsAcceptable(ConfigEntry configEntry,
-                                       StringBuilder unacceptableReason)
-  {
-    // NYI
-
-    // If we've gotten here then the monitor entry appears to be acceptable.
-    return true;
-  }
-
-
-
-  /**
-   * Attempts to apply a new configuration based on the provided added entry.
-   *
-   * @param  configEntry  The new configuration entry that contains the
-   *                      configuration to apply.
-   *
-   * @return  Information about the result of processing the configuration
-   *          change.
-   */
-  public ConfigChangeResult applyConfigurationAdd(ConfigEntry configEntry)
-  {
-    DN                configEntryDN       = configEntry.getDN();
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<String> messages            = new ArrayList<String>();
-
-    // NYI
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
-  }
-
-
-
-  /**
-   * Indicates whether it is acceptable to remove the provided configuration
-   * entry.
-   *
-   * @param  configEntry         The configuration entry that will be removed
-   *                             from the configuration.
-   * @param  unacceptableReason  A buffer to which this method can append a
-   *                             human-readable message explaining why the
-   *                             proposed delete is not acceptable.
-   *
-   * @return  <CODE>true</CODE> if the proposed entry may be removed from the
-   *          configuration, or <CODE>false</CODE> if not.
-   */
-  public boolean configDeleteIsAcceptable(ConfigEntry configEntry,
-                                          StringBuilder unacceptableReason)
-  {
-    // NYI -- Should we allow deletes of elements with this as superior?
-
-    return true;
-  }
-
-
-
-  /**
-   * Attempts to apply a new configuration based on the provided deleted entry.
-   *
-   * @param  configEntry  The new configuration entry that has been deleted.
-   *
-   * @return  Information about the result of processing the configuration
-   *          change.
-   */
-  public ConfigChangeResult applyConfigurationDelete(ConfigEntry configEntry)
-  {
-    DN         configEntryDN       = configEntry.getDN();
-    ResultCode resultCode          = ResultCode.SUCCESS;
-    boolean    adminActionRequired = false;
-
-
-    // NYI
-
-    return new ConfigChangeResult(resultCode, adminActionRequired);
-  }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/ConfigMessages.java b/opends/src/server/org/opends/server/messages/ConfigMessages.java
index 3f2a49c..5fc25bb 100644
--- a/opends/src/server/org/opends/server/messages/ConfigMessages.java
+++ b/opends/src/server/org/opends/server/messages/ConfigMessages.java
@@ -6756,6 +6756,50 @@
 
 
 
+  /**
+   * The message ID for the message that will be used if a matching rule cannot
+   * be removed because it is in use by an existing attribute type.  This takes
+   * two arguments, which are the name of the matching rule and the name or OID
+   * of the attribute type.
+   */
+  public static final int MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT =
+       CATEGORY_MASK_CONFIG | SEVERITY_MASK_SEVERE_WARNING | 670;
+
+
+
+  /**
+   * The message ID for the message that will be used if a matching rule cannot
+   * be removed because it is in use by an existing matching rule use.  This
+   * takes two arguments, which are the name of the matching rule and the name
+   * of the matching rule use.
+   */
+  public static final int MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_MRU =
+       CATEGORY_MASK_CONFIG | SEVERITY_MASK_SEVERE_WARNING | 671;
+
+
+
+  /**
+   * The message ID for the message that will be used if a matching rule cannot
+   * be disabled because it is in use by an existing attribute type.  This takes
+   * two arguments, which are the name of the matching rule and the name or OID
+   * of the attribute type.
+   */
+  public static final int MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT =
+       CATEGORY_MASK_CONFIG | SEVERITY_MASK_SEVERE_WARNING | 672;
+
+
+
+  /**
+   * The message ID for the message that will be used if a matching rule cannot
+   * be disabled because it is in use by an existing matching rule use.  This
+   * takes two arguments, which are the name of the matching rule and the name
+   * of the matching rule use.
+   */
+  public static final int MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_MRU =
+       CATEGORY_MASK_CONFIG | SEVERITY_MASK_SEVERE_WARNING | 673;
+
+
+
 
   /**
    * Associates a set of generic messages with the message IDs defined in this
@@ -7954,6 +7998,18 @@
                     "conflicts with another matching rule defined in the " +
                     "server configuration:  %s.  This matching rule will not " +
                     "be used");
+    registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_AT,
+                    "Matching rule %s cannot be deleted from the server " +
+                    "because it is in use by attribute type %s");
+    registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_DELETE_MR_IN_USE_BY_MRU,
+                    "Matching rule %s cannot be deleted from the server " +
+                    "because it is in use by matching rule use %s");
+    registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_AT,
+                    "Matching rule %s cannot be disabled because it is in " +
+                    "use by attribute type %s");
+    registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_MR_IN_USE_BY_MRU,
+                    "Matching rule %s cannot be disabled because it is in " +
+                    "use by matching rule use %s");
 
 
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_GET_SYNTAX_BASE,
@@ -9642,7 +9698,6 @@
                     "An error occurred while attempting create a text writer " +
                     "for a Directory Server logger from the information " +
                     "in configuration entry %s:  %s");
-
   }
 }
 
diff --git a/opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java b/opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java
index 9635161..70d43f9 100644
--- a/opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java
@@ -26,15 +26,16 @@
  */
 package org.opends.server.replication.plugin;
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
 
 /**
  * Used to establish an order between historical information and index them.
  */
-public class HistoricalCsnOrderingMatchingRule extends OrderingMatchingRule
+public class HistoricalCsnOrderingMatchingRule
+       extends OrderingMatchingRule
 {
   /**
    * The serial version identifier required to satisfy the compiler because this
@@ -75,12 +76,10 @@
   }
 
   /**
-   * Initialization method.
-   * Currently not used
-   * @param configEntry unused
+   * {@inheritDoc}
    */
   @Override
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
   {
     // TODO Auto-generated method stub
   }
diff --git a/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
index 2bf25b4..7c606b1 100644
--- a/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
@@ -30,9 +30,9 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.PasswordStorageScheme;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -70,27 +70,14 @@
   public AuthPasswordEqualityMatchingRule()
   {
     super();
-
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java
index ed6bf82..df5baa3 100644
--- a/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -70,26 +70,14 @@
   public AuthPasswordExactEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java
index 6bd4f6d..09620c5 100644
--- a/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -56,35 +56,20 @@
 public class BitStringEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this bitStringMatch matching rule.
    */
   public BitStringEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java
index 199f56f..d21ffb9 100644
--- a/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -56,35 +56,20 @@
 public class BooleanEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this booleanMatch matching rule.
    */
   public BooleanEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java
index d542e1d..4149a72 100644
--- a/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -49,35 +49,20 @@
 public class CaseExactEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactMatch matching rule.
    */
   public CaseExactEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java
index 69e1aa4..46ecc66 100644
--- a/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -56,35 +56,20 @@
 public class CaseExactIA5EqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactMatch matching rule.
    */
   public CaseExactIA5EqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java
index 0bec2f6..2a6ffd1 100644
--- a/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -57,35 +57,20 @@
 public class CaseExactIA5SubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactSubstringsMatch matching rule.
    */
   public CaseExactIA5SubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java
index f0e6cee..89cb176 100644
--- a/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -50,9 +50,6 @@
 public class CaseExactOrderingMatchingRule
        extends OrderingMatchingRule
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler because this
    * class implements the <CODE>java.io.Serializable</CODE> interface.  This
@@ -69,26 +66,14 @@
   public CaseExactOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java
index 05796d1..6898810 100644
--- a/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -49,35 +49,20 @@
 public class CaseExactSubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactSubstringsMatch matching rule.
    */
   public CaseExactSubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java
index cf815f6..53ad49a 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -48,35 +48,20 @@
 public class CaseIgnoreEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseIgnoreMatch matching rule.
    */
   public CaseIgnoreEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java
index 8b30694..caf6dd0 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -57,35 +57,20 @@
 public class CaseIgnoreIA5EqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseIgnoreIA5Match matching rule.
    */
   public CaseIgnoreIA5EqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java
index 3ec3bac..b584c02 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -57,35 +57,20 @@
 public class CaseIgnoreIA5SubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseIgnoreSubstringsMatch matching rule.
    */
   public CaseIgnoreIA5SubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java
index 2b593ae..6d79eed 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -50,35 +50,20 @@
 public class CaseIgnoreListEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseIgnoreListMatch matching rule.
    */
   public CaseIgnoreListEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java
index 1c013bd..5e5203b 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -50,35 +50,20 @@
 public class CaseIgnoreListSubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseIgnoreSubstringsMatch matching rule.
    */
   public CaseIgnoreListSubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java
index e364646..1ffb4fa 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -48,9 +48,6 @@
 public class CaseIgnoreOrderingMatchingRule
        extends OrderingMatchingRule
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler because this
    * class implements the <CODE>java.io.Serializable</CODE> interface.  This
@@ -67,26 +64,14 @@
   public CaseIgnoreOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java
index fe102b2..a66f37b 100644
--- a/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -50,35 +50,20 @@
 public class CaseIgnoreSubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseIgnoreSubstringsMatch matching rule.
    */
   public CaseIgnoreSubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java
index 5db0a6e..4c5a376 100644
--- a/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.AttributeValue;
@@ -55,9 +55,6 @@
 public class DirectoryStringFirstComponentEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this directoryStringFirstComponentMatch matching
    * rule.
@@ -65,26 +62,14 @@
   public DirectoryStringFirstComponentEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java
index 91da4de..ef63e70 100644
--- a/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -73,26 +73,14 @@
   public DistinguishedNameEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java b/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java
index 506f253..4c62719 100644
--- a/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.ApproximateMatchingRuleCfg;
 import org.opends.server.api.ApproximateMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -74,33 +74,20 @@
 
 
 
-
   /**
    * Creates a new instance of this double metaphone approximate matching rule.
    */
   public DoubleMetaphoneApproximateMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(ApproximateMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java
index f247fcf..928acc1 100644
--- a/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java
@@ -32,8 +32,8 @@
 import java.util.TimeZone;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -109,26 +109,14 @@
   public GeneralizedTimeEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java
index 5a8bd5a..fd4f15f 100644
--- a/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java
@@ -32,8 +32,8 @@
 import java.util.TimeZone;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -119,26 +119,14 @@
   public GeneralizedTimeOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java
index 754d0b7..be3cd79 100644
--- a/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -56,35 +56,20 @@
 public class IntegerEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this integerMatch matching rule.
    */
   public IntegerEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java
index f4ed20c..2824faa 100644
--- a/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.AttributeValue;
@@ -73,26 +73,14 @@
   public IntegerFirstComponentEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
index a38fa1b..ef302c4 100644
--- a/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -53,9 +53,6 @@
 public class IntegerOrderingMatchingRule
        extends OrderingMatchingRule
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler because this
    * class implements the <CODE>java.io.Serializable</CODE> interface.  This
@@ -72,26 +69,14 @@
   public IntegerOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/KeywordEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/KeywordEqualityMatchingRule.java
index 1f5a7cb..bfe27ea 100644
--- a/opends/src/server/org/opends/server/schema/KeywordEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/KeywordEqualityMatchingRule.java
@@ -28,6 +28,10 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
+import org.opends.server.config.ConfigException;
+import org.opends.server.types.InitializationException;
+
 import static org.opends.server.schema.SchemaConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
@@ -41,16 +45,23 @@
 public class KeywordEqualityMatchingRule
        extends WordEqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this wordMatch matching rule.
    */
   public KeywordEqualityMatchingRule()
   {
     super();
+  }
 
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
+         throws ConfigException, InitializationException
+  {
+    // No initialization is required.
   }
 
 
diff --git a/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java
index 09bcb7a..8d43e50 100644
--- a/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -58,35 +58,20 @@
 public class NumericStringEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactMatch matching rule.
    */
   public NumericStringEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java
index fec74d7..a0880f6 100644
--- a/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -55,9 +55,6 @@
 public class NumericStringOrderingMatchingRule
        extends OrderingMatchingRule
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler because this
    * class implements the <CODE>java.io.Serializable</CODE> interface.  This
@@ -74,26 +71,14 @@
   public NumericStringOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java
index 412e486..38c8e4a 100644
--- a/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -57,35 +57,20 @@
 public class NumericStringSubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this numericStringSubstringsMatch matching rule.
    */
   public NumericStringSubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java
index dca97a9..a58ef14 100644
--- a/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java
@@ -30,9 +30,9 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.MatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -62,35 +62,20 @@
 public class ObjectIdentifierEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this objectIdentifierMatch matching rule.
    */
   public ObjectIdentifierEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java
index ecfd05d..bb551ab 100644
--- a/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java
@@ -28,10 +28,10 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.MatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -59,35 +59,20 @@
 public class ObjectIdentifierFirstComponentEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this integerFirstComponentMatch matching rule.
    */
   public ObjectIdentifierFirstComponentEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java
index 7e90a2d..0474d91 100644
--- a/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -50,35 +50,20 @@
 public class OctetStringEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactMatch matching rule.
    */
   public OctetStringEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java
index d15b423..4f85e46 100644
--- a/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -49,9 +49,6 @@
 public class OctetStringOrderingMatchingRule
        extends OrderingMatchingRule
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler because this
    * class implements the <CODE>java.io.Serializable</CODE> interface.  This
@@ -68,26 +65,14 @@
   public OctetStringOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java
index 25d5889..a95ccc1 100644
--- a/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -51,35 +51,20 @@
 public class OctetStringSubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this octetStringSubstringsMatch matching rule.
    */
   public OctetStringSubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java
index de284ce..1820eda 100644
--- a/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -52,34 +52,20 @@
 public class PresentationAddressEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
   /**
    * Creates a new instance of this presentationAddressMatch matching rule.
    */
   public PresentationAddressEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java
index a68bc07..ccc25c8 100644
--- a/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -52,35 +52,20 @@
 public class ProtocolInformationEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this protocolInformationMatch matching rule.
    */
   public ProtocolInformationEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java
index cb03c86..7392d0f 100644
--- a/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -52,34 +52,20 @@
 public class TelephoneNumberEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
   /**
    * Creates a new instance of this telephoneNumberMatch matching rule.
    */
   public TelephoneNumberEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java b/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
index 41c2c80..c947a2e 100644
--- a/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
+import org.opends.server.admin.std.server.SubstringMatchingRuleCfg;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -52,9 +52,6 @@
 public class TelephoneNumberSubstringMatchingRule
        extends SubstringMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this telephoneNumberSubstringsMatch matching
    * rule.
@@ -62,26 +59,14 @@
   public TelephoneNumberSubstringMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(SubstringMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java
index ad5abde..ee1a804 100644
--- a/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -56,35 +56,20 @@
 public class UUIDEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this caseExactMatch matching rule.
    */
   public UUIDEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java b/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java
index 1e4b811..31e0575 100644
--- a/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.OrderingMatchingRuleCfg;
 import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -54,9 +54,6 @@
 public class UUIDOrderingMatchingRule
        extends OrderingMatchingRule
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler because this
    * class implements the <CODE>java.io.Serializable</CODE> interface.  This
@@ -73,26 +70,14 @@
   public UUIDOrderingMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(OrderingMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
index 9dfa769..1d305da 100644
--- a/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -70,33 +70,20 @@
 
 
 
-
   /**
    * Creates a new instance of this uniqueMemberMatch matching rule.
    */
   public UniqueMemberEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
index e683a97..5b2de63 100644
--- a/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
@@ -30,9 +30,9 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.PasswordStorageScheme;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -63,33 +63,20 @@
 
 
 
-
   /**
    * Creates a new instance of this userPasswordMatch matching rule.
    */
   public UserPasswordEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
index 80fcbd1..e4c61a9 100644
--- a/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
@@ -30,8 +30,8 @@
 
 import java.util.Arrays;
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.ByteString;
@@ -50,35 +50,20 @@
 public class UserPasswordExactEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this userPasswordExactMatch matching rule.
    */
   public UserPasswordExactEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java
index be71b80..fc12dd6 100644
--- a/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.AttributeValue;
@@ -65,35 +65,20 @@
 public class WordEqualityMatchingRule
        extends EqualityMatchingRule
 {
-
-
-
   /**
    * Creates a new instance of this wordMatch matching rule.
    */
   public WordEqualityMatchingRule()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/SchemaTestMatchingRule.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/SchemaTestMatchingRule.java
index e235814..9b8274a 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/SchemaTestMatchingRule.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/SchemaTestMatchingRule.java
@@ -28,8 +28,8 @@
 
 
 
+import org.opends.server.admin.std.server.EqualityMatchingRuleCfg;
 import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.schema.CaseIgnoreEqualityMatchingRule;
 import org.opends.server.types.ByteString;
@@ -110,20 +110,9 @@
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(EqualityMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualLengthApproximateMatchingRule.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualLengthApproximateMatchingRule.java
index e94a7f6..1de0533 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualLengthApproximateMatchingRule.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualLengthApproximateMatchingRule.java
@@ -28,6 +28,7 @@
 
 
 
+import org.opends.server.admin.std.server.ApproximateMatchingRuleCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
@@ -59,20 +60,9 @@
 
 
   /**
-   * Initializes this matching rule based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this matching rule.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
-   *
-   * @throws  InitializationException  If a problem that is not
-   *                                   configuration-related occurs during
-   *                                   initialization.
+   * {@inheritDoc}
    */
-  public void initializeMatchingRule(ConfigEntry configEntry)
+  public void initializeMatchingRule(ApproximateMatchingRuleCfg configuration)
          throws ConfigException, InitializationException
   {
     // No initialization is required.

--
Gitblit v1.10.0