From a3fec1e316d6942be1dc1fd8fde1464f18ba12b6 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Sun, 24 Jun 2007 22:19:02 +0000
Subject: [PATCH] Migrate the attribute syntax configuration to the admin framework.

---
 opendj-sdk/opends/src/server/org/opends/server/schema/CertificateSyntax.java                                       |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/PrintableStringSyntax.java                                   |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/CertificateListSyntax.java                                   |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/TeletexTerminalIdentifierSyntax.java                         |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java                                          |    8 
 opendj-sdk/opends/src/server/org/opends/server/admin/server/DNBuilder.java                                         |    3 
 opendj-sdk/opends/src/server/org/opends/server/schema/FaxNumberSyntax.java                                         |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/OIDSyntax.java                                               |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/BinarySyntax.java                                            |   19 
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/DirectoryStringAttributeSyntaxConfiguration.xml       |   73 +
 opendj-sdk/opends/src/server/org/opends/server/schema/JPEGSyntax.java                                              |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java                                    |    7 
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringSyntaxTest.java             |    6 
 opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java                                           |   17 
 opendj-sdk/opends/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java                              |  492 ++++++++++++
 opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSyntax.java                                     |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java                             |   16 
 opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java                                      |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java                                  |    7 
 opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java                                 |   16 
 opendj-sdk/opends/src/server/org/opends/server/schema/IA5StringSyntax.java                                         |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/PostalAddressSyntax.java                                     |   19 
 opendj-sdk/opends/src/server/org/opends/server/messages/ConfigMessages.java                                        |   28 
 opendj-sdk/opends/src/server/org/opends/server/schema/GuideSyntax.java                                             |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java                       |   21 
 opendj-sdk/opends/src/server/org/opends/server/schema/OtherMailboxSyntax.java                                      |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/TelexNumberSyntax.java                                       |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java                                       |    8 
 opendj-sdk/opends/src/server/org/opends/server/schema/SubstringAssertionSyntax.java                                |   19 
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/TelephoneNumberAttributeSyntaxConfiguration.xml       |   70 +
 opendj-sdk/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java                                |   17 
 opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java                                       |  229 -----
 opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java                                            |   14 
 opendj-sdk/opends/src/server/org/opends/server/schema/DeliveryMethodSyntax.java                                    |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java                                         |   19 
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/AttributeSyntaxConfiguration.xml                      |   90 ++
 opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java                      |   20 
 opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationSyntax.java                               |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java                                     |    8 
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ConfigurableAttributeSyntaxTest.java |   53 
 opendj-sdk/opends/src/server/org/opends/server/schema/EnhancedGuideSyntax.java                                     |   20 
 opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java                                      |   17 
 opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java                                   |   16 
 opendj-sdk/opends/src/server/org/opends/server/schema/AciSyntax.java                                               |   16 
 opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java                                   |    7 
 opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSyntax.java                                       |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java                                      |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java                                           |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java                                   |  236 -----
 opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java                                           |   30 
 opendj-sdk/opends/src/server/org/opends/server/schema/SupportedAlgorithmSyntax.java                                |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/UUIDSyntax.java                                              |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/CountryStringSyntax.java                                     |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/CertificatePairSyntax.java                                   |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressSyntax.java                               |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java                      |   25 
 opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java                                           |   19 
 opendj-sdk/opends/src/server/org/opends/server/schema/FaxSyntax.java                                               |   19 
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml                                 |   13 
 opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java                                   |  249 -----
 60 files changed, 1,071 insertions(+), 1,312 deletions(-)

diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/AttributeSyntaxConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/AttributeSyntaxConfiguration.xml
new file mode 100644
index 0000000..d7661bb
--- /dev/null
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/AttributeSyntaxConfiguration.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="attribute-syntax"
+plural-name="attribute-syntaxes"
+package="org.opends.server.admin.std" 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 the type of data that may be stored in an attribute with that syntax.
+    A syntax is generally associated with a set of matching rules that indicate
+    how to perform matching operations against values of that syntax.
+  </adm:synopsis>
+
+  <adm:tag name="core"/>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.3</ldap:oid>
+      <ldap:name>ds-cfg-attribute-syntax</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.125</ldap:oid>
+        <ldap:name>ds-cfg-syntax-enabled</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
+  <adm:property name="syntax-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.AttributeSyntax
+        </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.124</ldap:oid>
+        <ldap:name>ds-cfg-syntax-class</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
+</adm:managed-object>
+
diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/DirectoryStringAttributeSyntaxConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/DirectoryStringAttributeSyntaxConfiguration.xml
new file mode 100644
index 0000000..3cf730b
--- /dev/null
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/DirectoryStringAttributeSyntaxConfiguration.xml
@@ -0,0 +1,73 @@
+<?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="directory-string-attribute-syntax"
+plural-name="directory-string-attribute-syntaxes"
+extends="attribute-syntax"
+package="org.opends.server.admin.std" 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 an attribute syntax for storing arbitrary string (and sometimes
+    binary) data.
+  </adm:synopsis>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.53</ldap:oid>
+      <ldap:name>ds-cfg-directory-string-attribute-syntax</ldap:name>
+      <ldap:superior>ds-cfg-attribute-syntax</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+  <adm:property name="allow-zero-length-values" mandatory="false">
+    <adm:synopsis>
+      Indicate whether zero-length (i.e., empty string) values will be allowed.
+      This is technically not allowed by the revised LDAPv3 specification, but
+      some environments may require it for backward compatibility with servers
+      that did allow it.
+    </adm:synopsis>
+    <adm:default-behavior>
+      <adm:defined>
+        <adm:value>false</adm:value>
+      </adm:defined>
+    </adm:default-behavior>
+    <adm:syntax>
+      <adm:boolean />
+    </adm:syntax>
+    <adm:profile name="ldap">
+      <ldap:attribute>
+        <ldap:oid>1.3.6.1.4.1.26027.1.1.140</ldap:oid>
+        <ldap:name>ds-cfg-allow-zero-length-values</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
+</adm:managed-object>
+
diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
index 685d7bf..4b9b955 100644
--- a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml
@@ -321,6 +321,19 @@
       </cli:relation>
     </adm:profile>
   </adm:relation>
+  <adm:relation name="attribute-syntax">
+    <adm:one-to-many />
+    <adm:profile name="ldap">
+      <ldap:rdn-sequence>
+        cn=Syntaxes,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:product-name>OpenDS Directory Server</adm:product-name>
   <adm:tag-definition name="logging">
     <adm:synopsis>Logging</adm:synopsis>
diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/TelephoneNumberAttributeSyntaxConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/TelephoneNumberAttributeSyntaxConfiguration.xml
new file mode 100644
index 0000000..e04acf8
--- /dev/null
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/TelephoneNumberAttributeSyntaxConfiguration.xml
@@ -0,0 +1,70 @@
+<?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="telephone-number-attribute-syntax"
+plural-name="telephone-number-attribute-syntaxes"
+extends="attribute-syntax"
+package="org.opends.server.admin.std" 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 an attribute syntax for storing telephone number information.
+  </adm:synopsis>
+
+  <adm:profile name="ldap">
+    <ldap:object-class>
+      <ldap:oid>1.3.6.1.4.1.26027.1.2.4</ldap:oid>
+      <ldap:name>ds-cfg-telephone-number-attribute-syntax</ldap:name>
+      <ldap:superior>ds-cfg-attribute-syntax</ldap:superior>
+    </ldap:object-class>
+  </adm:profile>
+
+  <adm:property name="strict-format" mandatory="false">
+    <adm:synopsis>
+      Indicates whether to require telephone number values to strictly comply
+      with the standard definition for this syntax.
+    </adm:synopsis>
+    <adm:default-behavior>
+      <adm:defined>
+        <adm:value>false</adm:value>
+      </adm:defined>
+    </adm:default-behavior>
+    <adm:syntax>
+      <adm:boolean />
+    </adm:syntax>
+    <adm:profile name="ldap">
+      <ldap:attribute>
+        <ldap:oid>1.3.6.1.4.1.26027.1.1.121</ldap:oid>
+        <ldap:name>ds-cfg-strict-telephone-number-format</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
+</adm:managed-object>
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/server/DNBuilder.java b/opendj-sdk/opends/src/server/org/opends/server/admin/server/DNBuilder.java
index 3d89202..1a832f4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/server/DNBuilder.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/server/DNBuilder.java
@@ -132,7 +132,8 @@
 
     // Now add the single RDN representing the named instance.
     String type = profile.getInstantiableRelationChildRDNType(r);
-    AttributeType atype = DirectoryServer.getAttributeType(type.toLowerCase());
+    AttributeType atype = DirectoryServer.getAttributeType(type.toLowerCase(),
+                                                           true);
     AttributeValue avalue = new AttributeValue(atype, name);
     dn = dn.concat(RDN.create(atype, avalue));
   }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java
index d931794..02caf9c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java
@@ -28,7 +28,7 @@
 
 
 
-import org.opends.server.config.ConfigEntry;
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.InitializationException;
@@ -39,16 +39,18 @@
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements an
  * attribute syntax.
+ *
+ * @param  <T>  The type of configuration handled by this attribute
+ *              syntax.
  */
-public abstract class AttributeSyntax
+public abstract class AttributeSyntax<T extends AttributeSyntaxCfg>
 {
   /**
    * Initializes this attribute syntax based on the information in the
    * provided configuration entry.
    *
-   * @param  configEntry  The configuration entry that contains the
-   *                      information to use to initialize this
-   *                      attribute syntax.
+   * @param  configuration  The configuration to use to initialize
+   *                        this attribute syntax.
    *
    * @throws  ConfigException  If an unrecoverable problem arises in
    *                           the process of performing the
@@ -59,7 +61,7 @@
    *                                   related to the server
    *                                   configuration.
    */
-  public abstract void initializeSyntax(ConfigEntry configEntry)
+  public abstract void initializeSyntax(T configuration)
          throws ConfigException, InitializationException;
 
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java
new file mode 100644
index 0000000..b311fc1
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java
@@ -0,0 +1,492 @@
+/*
+ * 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.AttributeSyntaxCfgDefn;
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
+import org.opends.server.admin.std.server.RootCfg;
+import org.opends.server.admin.server.ServerManagementContext;
+import org.opends.server.api.AttributeSyntax;
+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.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 attribute
+ * syntaxes defined in the Directory Server.  It wil initialize the syntaxes
+ * when the server starts, and then will manage any additions, removals, or
+ * modifications to any syntaxes while the server is running.
+ */
+public class AttributeSyntaxConfigManager
+       implements ConfigurationChangeListener<AttributeSyntaxCfg>,
+                  ConfigurationAddListener<AttributeSyntaxCfg>,
+                  ConfigurationDeleteListener<AttributeSyntaxCfg>
+
+{
+  // A mapping between the DNs of the config entries and the associated
+  // attribute syntaxes.
+  private ConcurrentHashMap<DN,AttributeSyntax> syntaxes;
+
+
+
+  /**
+   * Creates a new instance of this attribute syntax config manager.
+   */
+  public AttributeSyntaxConfigManager()
+  {
+    syntaxes = new ConcurrentHashMap<DN,AttributeSyntax>();
+  }
+
+
+
+  /**
+   * Initializes all attribute syntaxes currently defined in the Directory
+   * Server configuration.  This should only be called at Directory Server
+   * startup.
+   *
+   * @throws  ConfigException  If a configuration problem causes the attribute
+   *                           syntax initialization process to fail.
+   *
+   * @throws  InitializationException  If a problem occurs while initializing
+   *                                   the attribute syntaxes that is not
+   *                                   related to the server configuration.
+   */
+  public void initializeAttributeSyntaxes()
+         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 attribute syntax entries are added or removed.
+    rootConfiguration.addAttributeSyntaxAddListener(this);
+    rootConfiguration.addAttributeSyntaxDeleteListener(this);
+
+
+    //Initialize the existing attribute syntaxes.
+    for (String name : rootConfiguration.listAttributeSyntaxes())
+    {
+      AttributeSyntaxCfg syntaxConfiguration =
+           rootConfiguration.getAttributeSyntax(name);
+      syntaxConfiguration.addChangeListener(this);
+
+      if (syntaxConfiguration.isEnabled())
+      {
+        String className = syntaxConfiguration.getSyntaxClass();
+        try
+        {
+          AttributeSyntax syntax = loadSyntax(className, syntaxConfiguration);
+
+          try
+          {
+            DirectoryServer.registerAttributeSyntax(syntax, false);
+            syntaxes.put(syntaxConfiguration.dn(), syntax);
+          }
+          catch (DirectoryException de)
+          {
+            int    msgID   = MSGID_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX;
+            String message = getMessage(msgID,
+                                  String.valueOf(syntaxConfiguration.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(
+                      AttributeSyntaxCfg configuration,
+                      List<String> unacceptableReasons)
+  {
+    if (configuration.isEnabled())
+    {
+      // Get the name of the class and make sure we can instantiate it as an
+      // attribute syntax.
+      String className = configuration.getSyntaxClass();
+      try
+      {
+        loadSyntax(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(
+                                 AttributeSyntaxCfg 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);
+    }
+
+    AttributeSyntax syntax = null;
+
+    // Get the name of the class and make sure we can instantiate it as an
+    // attribute syntax.
+    String className = configuration.getSyntaxClass();
+    try
+    {
+      syntax = loadSyntax(className, configuration);
+
+      try
+      {
+        DirectoryServer.registerAttributeSyntax(syntax, false);
+        syntaxes.put(configuration.dn(), syntax);
+      }
+      catch (DirectoryException de)
+      {
+        int    msgID   = MSGID_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX;
+        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(
+                      AttributeSyntaxCfg configuration,
+                      List<String> unacceptableReasons)
+  {
+    // If the syntax is enabled, then check to see if there are any defined
+    // attribute types that use the syntax.  If so, then don't allow it to be
+    // deleted.
+    boolean configAcceptable = true;
+    AttributeSyntax syntax = syntaxes.get(configuration.dn());
+    if (syntax != null)
+    {
+      String oid = syntax.getOID();
+      for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+      {
+        if (oid.equals(at.getSyntaxOID()))
+        {
+          int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DELETE_SYNTAX_IN_USE;
+          String message = getMessage(msgID, syntax.getSyntaxName(),
+                                      at.getNameOrOID());
+          unacceptableReasons.add(message);
+
+          configAcceptable = false;
+        }
+      }
+    }
+
+    return configAcceptable;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public ConfigChangeResult applyConfigurationDelete(
+                                 AttributeSyntaxCfg configuration)
+  {
+    ResultCode        resultCode          = ResultCode.SUCCESS;
+    boolean           adminActionRequired = false;
+    ArrayList<String> messages            = new ArrayList<String>();
+
+    AttributeSyntax syntax = syntaxes.remove(configuration.dn());
+    if (syntax != null)
+    {
+      DirectoryServer.deregisterAttributeSyntax(syntax);
+      syntax.finalizeSyntax();
+    }
+
+    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean isConfigurationChangeAcceptable(
+                      AttributeSyntaxCfg configuration,
+                      List<String> unacceptableReasons)
+  {
+    if (configuration.isEnabled())
+    {
+      // Get the name of the class and make sure we can instantiate it as an
+      // attribute syntax.
+      String className = configuration.getSyntaxClass();
+      try
+      {
+        loadSyntax(className, null);
+      }
+      catch (InitializationException ie)
+      {
+        unacceptableReasons.add(ie.getMessage());
+        return false;
+      }
+    }
+    else
+    {
+      // If the syntax is currently enabled and the change would make it
+      // disabled, then only allow it if the syntax isn't already in use.
+      AttributeSyntax syntax = syntaxes.get(configuration.dn());
+      if (syntax != null)
+      {
+        String oid = syntax.getOID();
+        for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+        {
+          if (oid.equals(at.getSyntaxOID()))
+          {
+            int msgID = MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_SYNTAX_IN_USE;
+            String message = getMessage(msgID, syntax.getSyntaxName(),
+                                        at.getNameOrOID());
+            unacceptableReasons.add(message);
+            return false;
+          }
+        }
+      }
+    }
+
+    // If we've gotten here, then it's fine.
+    return true;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public ConfigChangeResult applyConfigurationChange(
+                                 AttributeSyntaxCfg configuration)
+  {
+    ResultCode        resultCode          = ResultCode.SUCCESS;
+    boolean           adminActionRequired = false;
+    ArrayList<String> messages            = new ArrayList<String>();
+
+
+    // Get the existing syntax if it's already enabled.
+    AttributeSyntax existingSyntax = syntaxes.get(configuration.dn());
+
+
+    // If the new configuration has the syntax disabled, then disable it if it
+    // is enabled, or do nothing if it's already disabled.
+    if (! configuration.isEnabled())
+    {
+      if (existingSyntax != null)
+      {
+        DirectoryServer.deregisterAttributeSyntax(existingSyntax);
+
+        AttributeSyntax syntax = syntaxes.remove(configuration.dn());
+        if (syntax != null)
+        {
+          syntax.finalizeSyntax();
+        }
+      }
+
+      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    }
+
+
+    // Get the class for the attribute syntax.  If the syntax 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 syntax is disabled, then instantiate the class and
+    // initialize and register it as an attribute syntax.
+    String className = configuration.getSyntaxClass();
+    if (existingSyntax != null)
+    {
+      if (! className.equals(existingSyntax.getClass().getName()))
+      {
+        adminActionRequired = true;
+      }
+
+      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    }
+
+    AttributeSyntax syntax = null;
+    try
+    {
+      syntax = loadSyntax(className, configuration);
+
+      try
+      {
+        DirectoryServer.registerAttributeSyntax(syntax, false);
+        syntaxes.put(configuration.dn(), syntax);
+      }
+      catch (DirectoryException de)
+      {
+        int    msgID   = MSGID_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX;
+        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 AttributeSyntax loadSyntax(String className,
+                                     AttributeSyntaxCfg configuration)
+          throws InitializationException
+  {
+    try
+    {
+      AttributeSyntaxCfgDefn definition =
+           AttributeSyntaxCfgDefn.getInstance();
+      ClassPropertyDefinition propertyDefinition =
+           definition.getSyntaxClassPropertyDefinition();
+      Class<? extends AttributeSyntax> syntaxClass =
+           propertyDefinition.loadClass(className, AttributeSyntax.class);
+      AttributeSyntax syntax = syntaxClass.newInstance();
+
+      if (configuration != null)
+      {
+        Method method =
+             syntax.getClass().getMethod("initializeSyntax",
+                  configuration.definition().getServerConfigurationClass());
+        method.invoke(syntax, configuration);
+      }
+
+      return syntax;
+    }
+    catch (Exception e)
+    {
+      int msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE;
+      String message = getMessage(msgID, className,
+                                  String.valueOf(configuration.dn()),
+                                  stackTraceToSingleLineString(e));
+      throw new InitializationException(msgID, message, e);
+    }
+  }
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
index 79e378c..88a57bd 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -52,6 +52,8 @@
 
 import org.opends.server.admin.ClassLoaderProvider;
 import org.opends.server.admin.server.ServerManagementContext;
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
+import org.opends.server.admin.std.server.DirectoryStringAttributeSyntaxCfg;
 import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.admin.std.server.SynchronizationProviderCfg;
 import org.opends.server.admin.std.server.RootDSEBackendCfg;
@@ -184,22 +186,23 @@
        accountStatusNotificationHandlerConfigManager;
 
   // The default syntax to use for binary attributes.
-  private AttributeSyntax defaultBinarySyntax;
+  private AttributeSyntax<AttributeSyntaxCfg> defaultBinarySyntax;
 
   // The default syntax to use for Boolean attributes.
-  private AttributeSyntax defaultBooleanSyntax;
+  private AttributeSyntax<AttributeSyntaxCfg> defaultBooleanSyntax;
 
   // The default syntax to use for DN attributes.
-  private AttributeSyntax defaultDNSyntax;
+  private AttributeSyntax<AttributeSyntaxCfg> defaultDNSyntax;
 
   // The default syntax to use for integer attributes.
-  private AttributeSyntax defaultIntegerSyntax;
+  private AttributeSyntax<AttributeSyntaxCfg> defaultIntegerSyntax;
 
   // The default syntax to use for string attributes.
-  private AttributeSyntax defaultStringSyntax;
+  private AttributeSyntax<DirectoryStringAttributeSyntaxCfg>
+               defaultStringSyntax;
 
   // The default attribute syntax to use for attributes with no defined syntax.
-  private AttributeSyntax defaultSyntax;
+  private AttributeSyntax<DirectoryStringAttributeSyntaxCfg> defaultSyntax;
 
   // The attribute type used to reference the "objectclass" attribute.
   private AttributeType objectClassAttributeType;
@@ -1857,7 +1860,7 @@
 
     try
     {
-      AttributeSyntax syntax = new IA5StringSyntax();
+      IA5StringSyntax syntax = new IA5StringSyntax();
       syntax.initializeSyntax(null);
       registerAttributeSyntax(syntax, true);
     }
@@ -1899,7 +1902,7 @@
 
     try
     {
-      AttributeSyntax syntax = new GeneralizedTimeSyntax();
+      GeneralizedTimeSyntax syntax = new GeneralizedTimeSyntax();
       syntax.initializeSyntax(null);
       registerAttributeSyntax(syntax, true);
     }
@@ -1920,7 +1923,7 @@
 
     try
     {
-      AttributeSyntax syntax = new ObjectClassSyntax();
+      ObjectClassSyntax syntax = new ObjectClassSyntax();
       syntax.initializeSyntax(null);
       registerAttributeSyntax(syntax, true);
     }
@@ -1941,7 +1944,7 @@
 
     try
     {
-      AttributeSyntax syntax = new OIDSyntax();
+      OIDSyntax syntax = new OIDSyntax();
       syntax.initializeSyntax(null);
       registerAttributeSyntax(syntax, true);
     }
@@ -1962,7 +1965,7 @@
 
     try
     {
-      AttributeSyntax syntax = new TelephoneNumberSyntax();
+      TelephoneNumberSyntax syntax = new TelephoneNumberSyntax();
       syntax.initializeSyntax(null);
       registerAttributeSyntax(syntax, true);
     }
@@ -3399,8 +3402,9 @@
         {
           try
           {
-            oidSyntax = new OIDSyntax();
-            oidSyntax.initializeSyntax(null);
+            OIDSyntax newOIDSyntax = new OIDSyntax();
+            newOIDSyntax.initializeSyntax(null);
+            oidSyntax = newOIDSyntax;
             directoryServer.schema.registerSyntax(oidSyntax, true);
           }
           catch (Exception e)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java
index 2cb2cc6..d677b71 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java
@@ -34,7 +34,6 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.ConfigAddListener;
 import org.opends.server.api.ConfigChangeListener;
 import org.opends.server.api.ConfigDeleteListener;
@@ -418,231 +417,9 @@
   public void initializeAttributeSyntaxes()
          throws ConfigException, InitializationException
   {
-    // First, get the attribute syntax configuration base entry.
-    ConfigEntry syntaxBaseEntry;
-    try
-    {
-      DN syntaxBaseDN = DN.decode(DN_SYNTAX_CONFIG_BASE);
-      syntaxBaseEntry = configHandler.getConfigEntry(syntaxBaseDN);
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_GET_SYNTAX_BASE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new ConfigException(msgID, message, e);
-    }
-
-    if (syntaxBaseEntry == null)
-    {
-      // The syntax base entry does not exist.  This is not acceptable, so throw
-      // an exception.
-      int    msgID   = MSGID_CONFIG_SCHEMA_SYNTAX_BASE_DOES_NOT_EXIST;
-      String message = getMessage(msgID);
-      throw new ConfigException(msgID, message);
-    }
-
-
-    // Register add and delete listeners with the syntax base entry.  We don't
-    // care about modifications to it.
-    syntaxBaseEntry.registerAddListener(this);
-    syntaxBaseEntry.registerDeleteListener(this);
-
-
-    // See if the syntax base has any children.  If not, then this is very
-    // bad, since we won't know how to deal with any attribute types.
-    if (! syntaxBaseEntry.hasChildren())
-    {
-      int    msgID   = MSGID_CONFIG_SCHEMA_NO_SYNTAXES;
-      String message = getMessage(msgID);
-      throw new ConfigException(msgID, message);
-    }
-
-
-    // Iterate through the child entries and process them as syntax entries.
-    for (ConfigEntry childEntry : syntaxBaseEntry.getChildren().values())
-    {
-      DN syntaxEntryDN = childEntry.getDN();
-
-
-      // Register as a change listener for this syntax 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 an attribute syntax
-      // configuration.  If not, log a warning and skip it.
-      if (! childEntry.hasObjectClass(OC_ATTRIBUTE_SYNTAX))
-      {
-        int    msgID   = MSGID_CONFIG_SCHEMA_ENTRY_DOES_NOT_HAVE_SYNTAX_CONFIG;
-        String message = getMessage(msgID, String.valueOf(syntaxEntryDN));
-        logError(ErrorLogCategory.CONFIGURATION,
-                 ErrorLogSeverity.SEVERE_WARNING, message, msgID);
-        continue;
-      }
-
-
-      // See if the entry contains an attribute that indicates whether the
-      // syntax should be enabled.  If it does not, or if it is not set to
-      // "true", then skip it.
-      int msgID = MSGID_CONFIG_SCHEMA_SYNTAX_ATTR_DESCRIPTION_ENABLED;
-      BooleanConfigAttribute enabledStub =
-           new BooleanConfigAttribute(ATTR_SYNTAX_ENABLED, getMessage(msgID),
-                                      false);
-      try
-      {
-        BooleanConfigAttribute enabledAttr =
-             (BooleanConfigAttribute)
-             childEntry.getConfigAttribute(enabledStub);
-        if (enabledAttr == null)
-        {
-          // The attribute is not present, so this syntax will be disabled.  Log
-          // a message and continue.
-          msgID = MSGID_CONFIG_SCHEMA_SYNTAX_NO_ENABLED_ATTR;
-          String message = getMessage(msgID, String.valueOf(syntaxEntryDN));
-          logError(ErrorLogCategory.CONFIGURATION,
-                   ErrorLogSeverity.SEVERE_WARNING, message, msgID);
-          continue;
-        }
-        else if (! enabledAttr.activeValue())
-        {
-          // The syntax is explicitly disabled.  Log a mild warning and
-          // continue.
-          msgID = MSGID_CONFIG_SCHEMA_SYNTAX_DISABLED;
-          String message = getMessage(msgID, String.valueOf(syntaxEntryDN));
-          logError(ErrorLogCategory.CONFIGURATION,
-                   ErrorLogSeverity.INFORMATIONAL, message, msgID);
-          continue;
-        }
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_SYNTAX_UNABLE_TO_DETERMINE_ENABLED_STATE;
-        String message = getMessage(msgID, String.valueOf(syntaxEntryDN),
-                                    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 syntax implementation.  If it does, then load it and make sure
-      // that it's a valid syntax implementation.  If there is no such
-      // attribute, the specified class cannot be loaded, or it does not contain
-      // a valid syntax implementation, then log an error and skip it.
-      String className;
-      msgID = MSGID_CONFIG_SCHEMA_SYNTAX_ATTR_DESCRIPTION_CLASS;
-      StringConfigAttribute classStub =
-           new StringConfigAttribute(ATTR_SYNTAX_CLASS, getMessage(msgID),
-                                     true, false, true);
-      try
-      {
-        StringConfigAttribute classAttr =
-             (StringConfigAttribute)
-             childEntry.getConfigAttribute(classStub);
-        if (classAttr == null)
-        {
-          msgID = MSGID_CONFIG_SCHEMA_SYNTAX_NO_CLASS_ATTR;
-          String message = getMessage(msgID, String.valueOf(syntaxEntryDN));
-          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_SYNTAX_CANNOT_GET_CLASS;
-        String message = getMessage(msgID, String.valueOf(syntaxEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-      AttributeSyntax syntax;
-      try
-      {
-        Class syntaxClass = DirectoryServer.loadClass(className);
-        syntax = (AttributeSyntax) syntaxClass.newInstance();
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INSTANTIATE;
-        String message = getMessage(msgID, String.valueOf(className),
-                                    String.valueOf(syntaxEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-
-      // Perform the necessary initialization for the syntax.
-      try
-      {
-        syntax.initializeSyntax(childEntry);
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE;
-        String message = getMessage(msgID, String.valueOf(className),
-                                    String.valueOf(syntaxEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-        continue;
-      }
-
-
-      // Register the syntax with the server schema.
-      try
-      {
-        schema.registerSyntax(syntax, false);
-      }
-      catch (DirectoryException de)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, de);
-        }
-
-        msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX;
-        String message = getMessage(msgID, String.valueOf(syntaxEntryDN),
-                                    de.getErrorMessage());
-        logError(ErrorLogCategory.CONFIGURATION,
-                 ErrorLogSeverity.SEVERE_WARNING, message, msgID);
-        continue;
-      }
-    }
+    AttributeSyntaxConfigManager syntaxConfigManager =
+         new AttributeSyntaxConfigManager();
+    syntaxConfigManager.initializeAttributeSyntaxes();
   }
 
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/messages/ConfigMessages.java b/opendj-sdk/opends/src/server/org/opends/server/messages/ConfigMessages.java
index 138b8b8..3f2a49c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/messages/ConfigMessages.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/messages/ConfigMessages.java
@@ -6734,6 +6734,28 @@
 
 
 
+  /**
+   * The message ID for the message that will be used if an attempt is made to
+   * delete an attribute syntax that is in use by an attribute type.  This takes
+   * two arguments, which is the name of the attribute syntax and the name or
+   * OID of the attribute type that is using that syntax.
+   */
+  public static final int MSGID_CONFIG_SCHEMA_CANNOT_DELETE_SYNTAX_IN_USE =
+       CATEGORY_MASK_CONFIG | SEVERITY_MASK_SEVERE_WARNING | 668;
+
+
+
+  /**
+   * The message ID for the message that will be used if an attempt is made to
+   * disable an attribute syntax that is in use by an attribute type.  This
+   * takes two arguments, which is the name of the attribute syntax and the name
+   * or  OID of the attribute type that is using that syntax.
+   */
+  public static final int MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_SYNTAX_IN_USE =
+       CATEGORY_MASK_CONFIG | SEVERITY_MASK_SEVERE_WARNING | 669;
+
+
+
 
   /**
    * Associates a set of generic messages with the message IDs defined in this
@@ -8015,6 +8037,12 @@
                     "conflicts with another syntax defined in the server " +
                     "configuration:  %s.  This attribute syntax will not be " +
                     "used");
+    registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_DELETE_SYNTAX_IN_USE,
+                    "Attribute syntax %s cannot be deleted from the server " +
+                    "because it is in use by attribute type %s");
+    registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_DISABLE_SYNTAX_IN_USE,
+                    "Attribute syntax %s cannot be disabled because it is in " +
+                    "use by attribute type %s");
 
 
     registerMessage(MSGID_CONFIG_SCHEMA_NO_SCHEMA_DIR,
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java
index 61c7e93..74205ae 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java
@@ -33,13 +33,13 @@
 import static org.opends.server.messages.SchemaMessages.*;
 import static org.opends.server.schema.SchemaConstants.*;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.AbsoluteSubtreeSpecification;
 import org.opends.server.core.DirectoryServer;
@@ -54,9 +54,9 @@
  * syntax, which is used to select sets of entries in dynamic groups and
  * access control rules.
  */
-public final class AbsoluteSubtreeSpecificationSyntax extends
-    AttributeSyntax {
-
+public final class AbsoluteSubtreeSpecificationSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
+{
   /**
    * The tracer object for the debug logger.
    */
@@ -97,17 +97,9 @@
   }
 
   /**
-   * Initializes this attribute syntax based on the information in the
-   * provided configuration entry.
-   *
-   * @param configEntry
-   *          The configuration entry that contains the information to
-   *          use to initialize this attribute syntax.
-   * @throws ConfigException
-   *           If an unrecoverable problem arises in the process of
-   *           performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
       throws ConfigException {
 
     defaultEqualityMatchingRule = DirectoryServer
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AciSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AciSyntax.java
index d79dda7..ac5f07b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AciSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/AciSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -55,7 +55,7 @@
  * This class implements the access control information (aci) attribute syntax.
  */
 public class AciSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -88,22 +88,14 @@
   public AciSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     // We don't need an approximate matching rule.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
index 14f8c0c..e617d02 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
@@ -33,12 +33,13 @@
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
+
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.AttributeType;
@@ -66,7 +67,7 @@
  * syntax is defined in RFC 2252.
  */
 public class AttributeTypeSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -96,7 +97,6 @@
   public AttributeTypeSyntax()
   {
     super();
-
   }
 
 
@@ -104,7 +104,7 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException, InitializationException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java
index cd5d3ff..25c56bb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * matching will be allowed by default.
  */
 public class AuthPasswordSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -73,22 +70,14 @@
   public AuthPasswordSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BinarySyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BinarySyntax.java
index 0ac9804..9b36778 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BinarySyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/BinarySyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * will be allowed by default.
  */
 public class BinarySyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -77,22 +74,14 @@
   public BinarySyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java
index 0dbc292..7ed74bf 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * capital letter "B" (e.g., '101001'B).
  */
 public class BitStringSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -71,22 +68,14 @@
   public BitStringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java
index 013df37..eec2ce7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java
@@ -28,13 +28,13 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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;
@@ -60,11 +60,8 @@
  * syntax.
  */
 public class BooleanSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -97,22 +94,14 @@
   public BooleanSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateListSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateListSyntax.java
index 9ef3ad4..628ad97 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateListSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateListSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -53,11 +53,8 @@
  * syntax.
  */
 public class CertificateListSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -78,22 +75,14 @@
   public CertificateListSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CertificatePairSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CertificatePairSyntax.java
index c654ff0..0f4410a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CertificatePairSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/CertificatePairSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -53,11 +53,8 @@
  * syntax.
  */
 public class CertificatePairSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -78,22 +75,14 @@
   public CertificatePairSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateSyntax.java
index aa2fc1f..1ae79f9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/CertificateSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * bytes.  It will be treated much like the octet string attribute syntax.
  */
 public class CertificateSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -77,22 +74,14 @@
   public CertificateSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CountryStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CountryStringSyntax.java
index 048b4fc..98f2b6a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CountryStringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/CountryStringSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -56,11 +56,8 @@
  * ways, it will behave like the directory string attribute syntax.
  */
 public class CountryStringSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default approximate matching rule for this syntax.
   private ApproximateMatchingRule defaultApproximateMatchingRule;
 
@@ -84,22 +81,14 @@
   public CountryStringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultApproximateMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java
index 0d92c67..6c925c0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java
@@ -33,12 +33,12 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.AttributeType;
@@ -67,7 +67,7 @@
  * this syntax is defined in RFC 2252.
  */
 public class DITContentRuleSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -97,7 +97,6 @@
   public DITContentRuleSyntax()
   {
     super();
-
   }
 
 
@@ -105,7 +104,7 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException, InitializationException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java
index 2c71011..f38f0cc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java
@@ -33,12 +33,12 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -65,7 +65,7 @@
  * of this syntax is defined in RFC 2252.
  */
 public class DITStructureRuleSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -95,7 +95,6 @@
   public DITStructureRuleSyntax()
   {
     super();
-
   }
 
 
@@ -103,7 +102,7 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException, InitializationException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DeliveryMethodSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DeliveryMethodSyntax.java
index 57c4005..27c9fe1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DeliveryMethodSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/DeliveryMethodSyntax.java
@@ -31,12 +31,12 @@
 import java.util.HashSet;
 import java.util.StringTokenizer;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -71,11 +71,8 @@
  * </UL>
  */
 public class DeliveryMethodSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   /**
    * The set of values that may be used as delivery methods.
    */
@@ -121,22 +118,14 @@
   public DeliveryMethodSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     allowedValues = new HashSet<String>(ALLOWED_VALUES.length);
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
index 8269907..6ab7656 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
@@ -28,36 +28,29 @@
 
 
 
-import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.server.DirectoryStringAttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
-import org.opends.server.api.ConfigurableComponent;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.BooleanConfigAttribute;
-import org.opends.server.config.ConfigAttribute;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 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.ResultCode;
 
 import static org.opends.server.config.ConfigConstants.*;
-import org.opends.server.types.DebugLogLevel;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.SchemaMessages.*;
 import static org.opends.server.schema.SchemaConstants.*;
@@ -72,25 +65,17 @@
  * matching will be allowed.
  */
 public class DirectoryStringSyntax
-       extends AttributeSyntax
-       implements ConfigurableComponent
+       extends AttributeSyntax<DirectoryStringAttributeSyntaxCfg>
+       implements ConfigurationChangeListener<DirectoryStringAttributeSyntaxCfg>
 {
-  /**
-   * The tracer object for the debug logger.
-   */
-  private static final DebugTracer TRACER = getTracer();
-
-
-
-
   // The default approximate matching rule for this syntax.
   private ApproximateMatchingRule defaultApproximateMatchingRule;
 
   // Indicates whether we will allow zero-length values.
   private boolean allowZeroLengthValues;
 
-  // The DN of the configuration entry for this syntax.
-  private DN configEntryDN;
+  // The reference to the configuration for this directory string syntax.
+  private DirectoryStringAttributeSyntaxCfg currentConfig;
 
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
@@ -131,22 +116,14 @@
   public DirectoryStringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(DirectoryStringAttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultApproximateMatchingRule =
@@ -190,44 +167,14 @@
     // it may be instantiated at times without a configuration entry.  If that
     // is the case, then we'll exit now before doing anything that could require
     // access to that entry.
-    if (configEntry == null)
+    if (configuration == null)
     {
       return;
     }
 
-
-    allowZeroLengthValues = DEFAULT_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS;
-    int msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_DESCRIPTION_ALLOW_ZEROLENGTH;
-    BooleanConfigAttribute allowZeroLengthStub =
-         new BooleanConfigAttribute(ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                    getMessage(msgID), false);
-    try
-    {
-      BooleanConfigAttribute allowZeroLengthAttr =
-           (BooleanConfigAttribute)
-           configEntry.getConfigAttribute(allowZeroLengthStub);
-      if (allowZeroLengthAttr != null)
-      {
-        allowZeroLengthValues = allowZeroLengthAttr.activeValue();
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH;
-      String message = getMessage(msgID, ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                  getExceptionMessage(e));
-      logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_WARNING,
-               message, msgID);
-    }
-
-
-    configEntryDN = configEntry.getDN();
-    DirectoryServer.registerConfigurableComponent(this);
+    currentConfig = configuration;
+    currentConfig.addDirectoryStringChangeListener(this);
+    allowZeroLengthValues = currentConfig.isAllowZeroLengthValues();
   }
 
 
@@ -237,7 +184,7 @@
    */
   public void finalizeSyntax()
   {
-    DirectoryServer.deregisterConfigurableComponent(this);
+    currentConfig.removeDirectoryStringChangeListener(this);
   }
 
 
@@ -385,161 +332,28 @@
 
 
   /**
-   * Retrieves the DN of the configuration entry with which this component is
-   * associated.
-   *
-   * @return  The DN of the configuration entry with which this component is
-   *          associated.
+   * {@inheritDoc}
    */
-  public DN getConfigurableComponentEntryDN()
+  public boolean isConfigurationChangeAcceptable(
+                      DirectoryStringAttributeSyntaxCfg configuration,
+                      List<String> unacceptableReasons)
   {
-    return configEntryDN;
+    // The configuration will always be acceptable.
+    return true;
   }
 
 
 
   /**
-   * Retrieves the set of configuration attributes that are associated with this
-   * configurable component.
-   *
-   * @return  The set of configuration attributes that are associated with this
-   *          configurable component.
+   * {@inheritDoc}
    */
-  public List<ConfigAttribute> getConfigurationAttributes()
+  public ConfigChangeResult applyConfigurationChange(
+              DirectoryStringAttributeSyntaxCfg configuration)
   {
-    LinkedList<ConfigAttribute> configAttrs = new LinkedList<ConfigAttribute>();
+    currentConfig = configuration;
+    allowZeroLengthValues = configuration.isAllowZeroLengthValues();
 
-    int msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_DESCRIPTION_ALLOW_ZEROLENGTH;
-    configAttrs.add(new BooleanConfigAttribute(
-                             ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                             getMessage(msgID), false, allowZeroLengthValues));
-
-    return configAttrs;
-  }
-
-
-
-  /**
-   * Indicates whether the provided configuration entry has an acceptable
-   * configuration for this component.  If it does not, then detailed
-   * information about the problem(s) should be added to the provided list.
-   *
-   * @param  configEntry          The configuration entry for which to make the
-   *                              determination.
-   * @param  unacceptableReasons  A list that can be used to hold messages about
-   *                              why the provided entry does not have an
-   *                              acceptable configuration.
-   *
-   * @return  <CODE>true</CODE> if the provided entry has an acceptable
-   *          configuration for this component, or <CODE>false</CODE> if not.
-   */
-  public boolean hasAcceptableConfiguration(ConfigEntry configEntry,
-                                            List<String> unacceptableReasons)
-  {
-    boolean configValid = true;
-
-
-    int msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_DESCRIPTION_ALLOW_ZEROLENGTH;
-    BooleanConfigAttribute allowZeroLengthStub =
-         new BooleanConfigAttribute(ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                    getMessage(msgID), false);
-    try
-    {
-      BooleanConfigAttribute allowZeroLengthAttr =
-           (BooleanConfigAttribute)
-           configEntry.getConfigAttribute(allowZeroLengthStub);
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      configValid = false;
-
-      msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH;
-      unacceptableReasons.add(getMessage(msgID,
-                                         ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                         getExceptionMessage(e)));
-    }
-
-
-    return configValid;
-  }
-
-
-
-  /**
-   * Makes a best-effort attempt to apply the configuration contained in the
-   * provided entry.  Information about the result of this processing should be
-   * added to the provided message list.  Information should always be added to
-   * this list if a configuration change could not be applied.  If detailed
-   * results are requested, then information about the changes applied
-   * successfully (and optionally about parameters that were not changed) should
-   * also be included.
-   *
-   * @param  configEntry      The entry containing the new configuration to
-   *                          apply for this component.
-   * @param  detailedResults  Indicates whether detailed information about the
-   *                          processing should be added to the list.
-   *
-   * @return  Information about the result of the configuration update.
-   */
-  public ConfigChangeResult applyNewConfiguration(ConfigEntry configEntry,
-                                                  boolean detailedResults)
-  {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<String> messages            = new ArrayList<String>();
-
-
-    boolean newAllowZeroLengthValues = false;
-    int msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_DESCRIPTION_ALLOW_ZEROLENGTH;
-    BooleanConfigAttribute allowZeroLengthStub =
-         new BooleanConfigAttribute(ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                    getMessage(msgID), false);
-    try
-    {
-      BooleanConfigAttribute allowZeroLengthAttr =
-           (BooleanConfigAttribute)
-           configEntry.getConfigAttribute(allowZeroLengthStub);
-      if (allowZeroLengthAttr != null)
-      {
-        newAllowZeroLengthValues = allowZeroLengthAttr.pendingValue();
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      resultCode = DirectoryServer.getServerErrorResultCode();
-
-      msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH;
-      messages.add(getMessage(msgID, ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                              getExceptionMessage(e)));
-    }
-
-    if (resultCode == ResultCode.SUCCESS)
-    {
-      if (newAllowZeroLengthValues != allowZeroLengthValues)
-      {
-        allowZeroLengthValues = newAllowZeroLengthValues;
-
-        if (detailedResults)
-        {
-          msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_UPDATED_ALLOW_ZEROLENGTH;
-          messages.add(getMessage(msgID, ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                  String.valueOf(configEntry.getDN()),
-                                  String.valueOf(allowZeroLengthValues)));
-        }
-      }
-    }
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult(ResultCode.SUCCESS, false);
   }
 }
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java
index 61104de..a0f4077 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java
@@ -28,13 +28,13 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.AttributeValue;
@@ -60,7 +60,7 @@
  * matching will be allowed by default.
  */
 public class DistinguishedNameSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -103,22 +103,14 @@
   public DistinguishedNameSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/EnhancedGuideSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/EnhancedGuideSyntax.java
index deb5f11..ca69b8a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/EnhancedGuideSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/EnhancedGuideSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * objectclass.
  */
 public class EnhancedGuideSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -79,23 +76,14 @@
   public EnhancedGuideSyntax()
   {
     super();
-
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/FaxNumberSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/FaxNumberSyntax.java
index e33365f..dc13684 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/FaxNumberSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/FaxNumberSyntax.java
@@ -30,12 +30,12 @@
 
 import java.util.HashSet;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -66,11 +66,8 @@
  * </UL>
  */
 public class FaxNumberSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   /**
    * The set of allowed fax parameter values, formatted entirely in lowercase
    * characters.
@@ -111,22 +108,14 @@
   public FaxNumberSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/FaxSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/FaxSyntax.java
index 7b9def0..3f7bbe9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/FaxSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/FaxSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * will be treated much like the octet string attribute syntax.
  */
 public class FaxSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -77,22 +74,14 @@
   public FaxSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java
index 63b44e0..8b2d141 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java
@@ -35,12 +35,12 @@
 import java.util.TimeZone;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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;
@@ -70,7 +70,7 @@
  * offset like "-0500" for representing values that are not in UTC.
  */
 public class GeneralizedTimeSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -128,22 +128,14 @@
   public GeneralizedTimeSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/GuideSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/GuideSyntax.java
index 24034bc..ebcd162 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/GuideSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/GuideSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * to a specified objectclass.
  */
 public class GuideSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -79,22 +76,14 @@
   public GuideSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/IA5StringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/IA5StringSyntax.java
index 1cec743..5950a56 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/IA5StringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/IA5StringSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * matching will be allowed.
  */
 public class IA5StringSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default approximate matching rule for this syntax.
   private ApproximateMatchingRule defaultApproximateMatchingRule;
 
@@ -82,22 +79,14 @@
   public IA5StringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultApproximateMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java
index c0a59f4..4af0dea 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java
@@ -28,13 +28,13 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.AttributeValue;
@@ -57,11 +57,8 @@
  * will be allowed by default.
  */
 public class IntegerSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -110,22 +107,14 @@
   public IntegerSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/JPEGSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/JPEGSyntax.java
index 3b83dbc..395caf3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/JPEGSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/JPEGSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * will be treated much like the octet string attribute syntax.
  */
 public class JPEGSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -77,22 +74,14 @@
   public JPEGSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
index 4dc7c4a..08c4f6d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -59,7 +59,7 @@
  * syntax is defined in RFC 2252.
  */
 public class LDAPSyntaxDescriptionSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -89,22 +89,14 @@
   public LDAPSyntaxDescriptionSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java
index a59a724..413ded5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java
@@ -31,12 +31,12 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -62,7 +62,7 @@
  * syntax is defined in RFC 2252.
  */
 public class MatchingRuleSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -71,7 +71,6 @@
 
 
 
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -92,22 +91,14 @@
   public MatchingRuleSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
index a6cca49..e12647f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
@@ -33,13 +33,13 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 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.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.AttributeType;
@@ -66,7 +66,7 @@
  * this syntax is defined in RFC 2252.
  */
 public class MatchingRuleUseSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -96,7 +96,6 @@
   public MatchingRuleUseSyntax()
   {
     super();
-
   }
 
 
@@ -104,7 +103,7 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException, InitializationException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java
index b9ffb0c..197a691 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -58,7 +58,7 @@
  * string value.
  */
 public class NameAndOptionalUIDSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -67,7 +67,6 @@
 
 
 
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -85,22 +84,14 @@
   public NameAndOptionalUIDSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java
index 1139551..231f395 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java
@@ -33,12 +33,12 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.AttributeType;
@@ -67,7 +67,7 @@
  * is defined in RFC 2252.
  */
 public class NameFormSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -76,7 +76,6 @@
 
 
 
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -97,7 +96,6 @@
   public NameFormSyntax()
   {
     super();
-
   }
 
 
@@ -105,7 +103,7 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException, InitializationException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSyntax.java
index a20aade..0707a27 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * matching will be allowed by default.
  */
 public class NumericStringSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -79,22 +76,14 @@
   public NumericStringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/OIDSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/OIDSyntax.java
index b4f00ba..513b6cc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/OIDSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/OIDSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * a numeric OID.  Equality and substring matching will be allowed by default.
  */
 public class OIDSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -74,22 +71,14 @@
   public OIDSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java
index 643f58b..1793f94 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java
@@ -35,12 +35,12 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.AttributeType;
@@ -69,7 +69,7 @@
  * syntax is defined in RFC 2252.
  */
 public class ObjectClassSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
@@ -78,7 +78,6 @@
 
 
 
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -99,7 +98,6 @@
   public ObjectClassSyntax()
   {
     super();
-
   }
 
 
@@ -107,7 +105,7 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException, InitializationException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSyntax.java
index 250f2cf..f466517 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * Equality, ordering, and substring matching will be allowed by default.
  */
 public class OctetStringSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -77,22 +74,14 @@
   public OctetStringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/OtherMailboxSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/OtherMailboxSyntax.java
index c9ba8d3..036658b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/OtherMailboxSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/OtherMailboxSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * be allowed by default.
  */
 public class OtherMailboxSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -76,22 +73,14 @@
   public OtherMailboxSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/PostalAddressSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/PostalAddressSyntax.java
index 646b48d..16c6c0d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/PostalAddressSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/PostalAddressSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * matching will be allowed.
  */
 public class PostalAddressSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -76,22 +73,14 @@
   public PostalAddressSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressSyntax.java
index 463737b..028a65f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * this implementation behaves exactly like the directory string syntax.
  */
 public class PresentationAddressSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default approximate matching rule for this syntax.
   private ApproximateMatchingRule defaultApproximateMatchingRule;
 
@@ -80,22 +77,14 @@
   public PresentationAddressSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultApproximateMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/PrintableStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/PrintableStringSyntax.java
index 53d54fc..74b2558 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/PrintableStringSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/PrintableStringSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -55,11 +55,8 @@
  * ordering, substring, and approximate matching will be allowed.
  */
 public class PrintableStringSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default approximate matching rule for this syntax.
   private ApproximateMatchingRule defaultApproximateMatchingRule;
 
@@ -83,22 +80,14 @@
   public PrintableStringSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultApproximateMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationSyntax.java
index 1192d71..fb5ddb3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * directory string syntax.
  */
 public class ProtocolInformationSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default approximate matching rule for this syntax.
   private ApproximateMatchingRule defaultApproximateMatchingRule;
 
@@ -80,22 +77,14 @@
   public ProtocolInformationSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultApproximateMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java
index b7bf420..e769338 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java
@@ -33,13 +33,13 @@
 import static org.opends.server.messages.SchemaMessages.*;
 import static org.opends.server.schema.SchemaConstants.*;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.core.RFC3672SubtreeSpecification;
@@ -55,15 +55,16 @@
  * is used to specify the scope of sub-entries (RFC 3672). Equality will
  * be allowed eventually, although it's not implemented yet.
  */
-public final class RFC3672SubtreeSpecificationSyntax extends
-    AttributeSyntax {
-
+public final class RFC3672SubtreeSpecificationSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
+{
   /**
    * The tracer object for the debug logger.
    */
   private static final DebugTracer TRACER = getTracer();
 
 
+
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -126,17 +127,9 @@
   }
 
   /**
-   * Initializes this attribute syntax based on the information in the
-   * provided configuration entry.
-   *
-   * @param configEntry
-   *          The configuration entry that contains the information to
-   *          use to initialize this attribute syntax.
-   * @throws ConfigException
-   *           If an unrecoverable problem arises in the process of
-   *           performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
       throws ConfigException {
 
     defaultEqualityMatchingRule = DirectoryServer
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java
index 3188d64..0933fb2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java
@@ -33,13 +33,13 @@
 import static org.opends.server.messages.SchemaMessages.*;
 import static org.opends.server.schema.SchemaConstants.*;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.AttributeValueDecoder;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.core.RelativeSubtreeSpecification;
@@ -55,15 +55,16 @@
  * syntax, which is used to specify the scope of access controls and
  * their parameters.
  */
-public final class RelativeSubtreeSpecificationSyntax extends
-    AttributeSyntax {
-
+public final class RelativeSubtreeSpecificationSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
+{
   /**
    * The tracer object for the debug logger.
    */
   private static final DebugTracer TRACER = getTracer();
 
 
+
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -73,6 +74,8 @@
   // The default substring matching rule for this syntax.
   private SubstringMatchingRule defaultSubstringMatchingRule;
 
+
+
   /**
    * Create a new attribute value decoder with the specified root DN.
    *
@@ -127,18 +130,10 @@
   }
 
   /**
-   * Initializes this attribute syntax based on the information in the
-   * provided configuration entry.
-   *
-   * @param configEntry
-   *          The configuration entry that contains the information to
-   *          use to initialize this attribute syntax.
-   * @throws ConfigException
-   *           If an unrecoverable problem arises in the process of
-   *           performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
-      throws ConfigException {
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
+         throws ConfigException {
 
     defaultEqualityMatchingRule = DirectoryServer
         .getEqualityMatchingRule(EMR_OCTET_STRING_OID);
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/SubstringAssertionSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/SubstringAssertionSyntax.java
index 6b517ec..6c77013 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/SubstringAssertionSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/SubstringAssertionSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -54,11 +54,8 @@
  * except that approximate matching will not be allowed.
  */
 public class SubstringAssertionSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -79,22 +76,14 @@
   public SubstringAssertionSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/SupportedAlgorithmSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/SupportedAlgorithmSyntax.java
index 4fbc81d..c30a8e4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/SupportedAlgorithmSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/SupportedAlgorithmSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -53,11 +53,8 @@
  * syntax.
  */
 public class SupportedAlgorithmSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -78,22 +75,14 @@
   public SupportedAlgorithmSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
index bc719d8..573ebfc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
@@ -28,32 +28,24 @@
 
 
 
-import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.server.TelephoneNumberAttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
-import org.opends.server.api.ConfigurableComponent;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.config.BooleanConfigAttribute;
-import org.opends.server.config.ConfigAttribute;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConfigChangeResult;
-import org.opends.server.types.DN;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.config.ConfigConstants.*;
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.types.DebugLogLevel;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.SchemaMessages.*;
@@ -71,29 +63,21 @@
  * only accept values in the E.123 international telephone number format.
  */
 public class TelephoneNumberSyntax
-       extends AttributeSyntax
-       implements ConfigurableComponent
+       extends AttributeSyntax<TelephoneNumberAttributeSyntaxCfg>
+       implements ConfigurationChangeListener<TelephoneNumberAttributeSyntaxCfg>
 {
-  /**
-   * The tracer object for the debug logger.
-   */
-  private static final DebugTracer TRACER = getTracer();
-
-
-
-
   // Indicates whether this matching rule should operate in strict mode.
   private boolean strictMode;
 
-  // The DN of the configuration entry, if we have one.
-  private DN configEntryDN;
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
   // The default substring matching rule for this syntax.
   private SubstringMatchingRule defaultSubstringMatchingRule;
 
+  // The current configuration for this telephone number syntax.
+  private TelephoneNumberAttributeSyntaxCfg currentConfig;
+
 
 
   /**
@@ -105,22 +89,14 @@
   public TelephoneNumberSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(TelephoneNumberAttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
@@ -146,39 +122,11 @@
     // we should use the strict compliance mode.  If not, just assume that we
     // won't.
     strictMode = false;
-    if (configEntry != null)
+    if (configuration != null)
     {
-      configEntryDN = configEntry.getDN();
-      DirectoryServer.registerConfigurableComponent(this);
-
-
-      int msgID = MSGID_ATTR_SYNTAX_TELEPHONE_DESCRIPTION_STRICT_MODE;
-      BooleanConfigAttribute strictStub =
-           new BooleanConfigAttribute(ATTR_TELEPHONE_STRICT_MODE,
-                                      getMessage(msgID), false);
-      try
-      {
-        BooleanConfigAttribute strictAttr =
-             (BooleanConfigAttribute)
-             configEntry.getConfigAttribute(strictStub);
-        if (strictAttr != null)
-        {
-          strictMode = strictAttr.activeValue();
-        }
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        msgID = MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE;
-        String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    getExceptionMessage(e));
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
-                 message, msgID);
-      }
+      currentConfig = configuration;
+      currentConfig.addTelephoneNumberChangeListener(this);
+      strictMode = currentConfig.isStrictFormat();
     }
   }
 
@@ -189,7 +137,7 @@
    */
   public void finalizeSyntax()
   {
-    DirectoryServer.deregisterConfigurableComponent(this);
+    currentConfig.removeTelephoneNumberChangeListener(this);
   }
 
 
@@ -410,173 +358,28 @@
 
 
   /**
-   * Retrieves the DN of the configuration entry with which this component is
-   * associated.
-   *
-   * @return  The DN of the configuration entry with which this component is
-   *          associated.
+   * {@inheritDoc}
    */
-  public DN getConfigurableComponentEntryDN()
+  public boolean isConfigurationChangeAcceptable(
+                      TelephoneNumberAttributeSyntaxCfg configuration,
+                      List<String> unacceptableReasons)
   {
-    return configEntryDN;
+    // The configuration will always be acceptable.
+    return true;
   }
 
 
 
   /**
-   * Retrieves the set of configuration attributes that are associated with this
-   * configurable component.
-   *
-   * @return  The set of configuration attributes that are associated with this
-   *          configurable component.
+   * {@inheritDoc}
    */
-  public List<ConfigAttribute> getConfigurationAttributes()
+  public ConfigChangeResult applyConfigurationChange(
+              TelephoneNumberAttributeSyntaxCfg configuration)
   {
-    LinkedList<ConfigAttribute> attrList = new LinkedList<ConfigAttribute>();
+    currentConfig = configuration;
+    strictMode = configuration.isStrictFormat();
 
-    int msgID = MSGID_ATTR_SYNTAX_TELEPHONE_DESCRIPTION_STRICT_MODE;
-    attrList.add(new BooleanConfigAttribute(ATTR_TELEPHONE_STRICT_MODE,
-                                            getMessage(msgID), false,
-                                            strictMode));
-
-    return attrList;
-  }
-
-
-
-  /**
-   * Indicates whether the provided configuration entry has an acceptable
-   * configuration for this component.  If it does not, then detailed
-   * information about the problem(s) should be added to the provided list.
-   *
-   * @param  configEntry          The configuration entry for which to make the
-   *                              determination.
-   * @param  unacceptableReasons  A list that can be used to hold messages about
-   *                              why the provided entry does not have an
-   *                              acceptable configuration.
-   *
-   * @return  <CODE>true</CODE> if the provided entry has an acceptable
-   *          configuration for this component, or <CODE>false</CODE> if not.
-   */
-  public boolean hasAcceptableConfiguration(ConfigEntry configEntry,
-                                            List<String> unacceptableReasons)
-  {
-    boolean configIsAcceptable = true;
-
-
-    // See if the entry has a "strict mode" attribute.
-    int msgID = MSGID_ATTR_SYNTAX_TELEPHONE_DESCRIPTION_STRICT_MODE;
-    BooleanConfigAttribute strictStub =
-         new BooleanConfigAttribute(ATTR_TELEPHONE_STRICT_MODE,
-                                    getMessage(msgID), false);
-    try
-    {
-      // In this case, we don't care what the value is, or even whether the
-      // attribute exists at all.  However, if it does exist, then it must have
-      // a valid Boolean value.
-      BooleanConfigAttribute strictAttr =
-           (BooleanConfigAttribute)
-           configEntry.getConfigAttribute(strictStub);
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  getExceptionMessage(e));
-      unacceptableReasons.add(message);
-      configIsAcceptable = false;
-    }
-
-
-    return configIsAcceptable;
-  }
-
-
-
-  /**
-   * Makes a best-effort attempt to apply the configuration contained in the
-   * provided entry.  Information about the result of this processing should be
-   * added to the provided message list.  Information should always be added to
-   * this list if a configuration change could not be applied.  If detailed
-   * results are requested, then information about the changes applied
-   * successfully (and optionally about parameters that were not changed) should
-   * also be included.
-   *
-   * @param  configEntry      The entry containing the new configuration to
-   *                          apply for this component.
-   * @param  detailedResults  Indicates whether detailed information about the
-   *                          processing should be added to the list.
-   *
-   * @return  Information about the result of the configuration update.
-   */
-  public ConfigChangeResult applyNewConfiguration(ConfigEntry configEntry,
-                                                  boolean detailedResults)
-  {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<String> messages            = new ArrayList<String>();
-
-
-
-    // See if the entry has a "strict mode" attribute.
-    boolean newStrictMode;
-    int msgID = MSGID_ATTR_SYNTAX_TELEPHONE_DESCRIPTION_STRICT_MODE;
-    BooleanConfigAttribute strictStub =
-         new BooleanConfigAttribute(ATTR_TELEPHONE_STRICT_MODE,
-                                    getMessage(msgID), false);
-    try
-    {
-      BooleanConfigAttribute strictAttr =
-           (BooleanConfigAttribute)
-           configEntry.getConfigAttribute(strictStub);
-      if (strictAttr == null)
-      {
-        // This is fine -- the entry doesn't contain this attribute so we'll
-        // just use the default.
-        newStrictMode = false;
-      }
-      else
-      {
-        // The entry does contain this attribute, so we'll use its value.
-        newStrictMode = strictAttr.pendingValue();
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE;
-      messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              getExceptionMessage(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
-
-      newStrictMode = false;
-    }
-
-
-    if (resultCode == ResultCode.SUCCESS)
-    {
-      if (strictMode != newStrictMode)
-      {
-        strictMode = newStrictMode;
-        if (detailedResults)
-        {
-          msgID = MSGID_ATTR_SYNTAX_TELEPHONE_UPDATED_STRICT_MODE;
-          messages.add(getMessage(msgID, String.valueOf(strictMode)));
-        }
-      }
-    }
-
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult(ResultCode.SUCCESS, false);
   }
 }
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/TeletexTerminalIdentifierSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/TeletexTerminalIdentifierSyntax.java
index de5e8e9..37a1c89 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/TeletexTerminalIdentifierSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/TeletexTerminalIdentifierSyntax.java
@@ -30,12 +30,12 @@
 
 import java.util.HashSet;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -66,11 +66,8 @@
  * </UL>
  */
 public class TeletexTerminalIdentifierSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   /**
    * The set of allowed fax parameter values, formatted entirely in lowercase
    * characters.
@@ -109,22 +106,14 @@
   public TeletexTerminalIdentifierSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/TelexNumberSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/TelexNumberSyntax.java
index 16ae94e..2d1578a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/TelexNumberSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/TelexNumberSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -53,11 +53,8 @@
  * and substring matching will be allowed by default.
  */
 public class TelexNumberSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -78,22 +75,14 @@
   public TelexNumberSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java
index b716a8e..48c4552 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java
@@ -33,12 +33,12 @@
 import java.util.TimeZone;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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;
@@ -69,13 +69,15 @@
  * allowed.
  */
 public class UTCTimeSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
   /**
    * The tracer object for the debug logger.
    */
   private static final DebugTracer TRACER = getTracer();
 
+
+
   /**
    * The lock that will be used to provide threadsafe access to the date
    * formatter.
@@ -132,16 +134,9 @@
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDSyntax.java
index 92b7eaa..5ea57a8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -52,11 +52,8 @@
  * Equality and ordering matching will be allowed by default.
  */
 public class UUIDSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -74,22 +71,14 @@
   public UUIDSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java
index b91c3a7..0e504c9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java
@@ -28,12 +28,12 @@
 
 
 
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.api.ApproximateMatchingRule;
 import org.opends.server.api.AttributeSyntax;
 import org.opends.server.api.EqualityMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 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.types.ByteString;
@@ -64,11 +64,8 @@
  * </UL>
  */
 public class UserPasswordSyntax
-       extends AttributeSyntax
+       extends AttributeSyntax<AttributeSyntaxCfg>
 {
-
-
-
   // The default equality matching rule for this syntax.
   private EqualityMatchingRule defaultEqualityMatchingRule;
 
@@ -83,22 +80,14 @@
   public UserPasswordSyntax()
   {
     super();
-
   }
 
 
 
   /**
-   * Initializes this attribute syntax based on the information in the provided
-   * configuration entry.
-   *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this attribute syntax.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in the
-   *                           process of performing the initialization.
+   * {@inheritDoc}
    */
-  public void initializeSyntax(ConfigEntry configEntry)
+  public void initializeSyntax(AttributeSyntaxCfg configuration)
          throws ConfigException
   {
     defaultEqualityMatchingRule =
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringSyntaxTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringSyntaxTest.java
index 907087d..0998397 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringSyntaxTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringSyntaxTest.java
@@ -76,10 +76,8 @@
   @Test(dataProvider= "acceptableValues")
   public void testAcceptableValues(String value, Boolean result) throws Exception
   {
-    AttributeSyntax syntax = new BitStringSyntax();
-    ConfigEntry configEntry = DirectoryServer.getConfigEntry(
-                        DN.decode("cn=Bit String,cn=Syntaxes,cn=config"));
-    syntax.initializeSyntax(configEntry);
+    BitStringSyntax syntax = new BitStringSyntax();
+    syntax.initializeSyntax(null);
 
     ByteString byteStringValue = new ASN1OctetString(value);
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ConfigurableAttributeSyntaxTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ConfigurableAttributeSyntaxTest.java
index dce1845..7fe30b1 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ConfigurableAttributeSyntaxTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ConfigurableAttributeSyntaxTest.java
@@ -32,8 +32,10 @@
 import java.util.ArrayList;
 
 import org.opends.server.TestCaseUtils;
+import org.opends.server.admin.server.AdminTestCaseUtils;
+import org.opends.server.admin.std.meta.TelephoneNumberAttributeSyntaxCfgDefn;
+import org.opends.server.admin.std.server.TelephoneNumberAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;
-import org.opends.server.api.ConfigurableComponent;
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -45,12 +47,12 @@
 public class ConfigurableAttributeSyntaxTest extends SchemaTestCase
 {
   /**
-   * Build the data for the test of the hasAcceptableValue Methods 
+   * Build the data for the test of the hasAcceptableValue Methods
    * of the class extending the AttributeSyntax class and having
    * some configuration capabilities.
    */
   @DataProvider(name="acceptableValues")
-  public Object[][] createapproximateMatchingRuleTest() throws Exception
+  public Object[][] createSyntaxTest() throws Exception
   {
     // some config object used later in the test
     ConfigEntry strictConfig = new ConfigEntry(TestCaseUtils.makeEntry(
@@ -77,7 +79,7 @@
 
     // fill this table with tables containing :
     // - the configEntry that must be applied before the test.
-    // - the name of the Syntax rule to test.
+    // - the name of the Syntax to test.
     // - a value that must be tested for correctness.
     // - a boolean indicating if the value is correct.
     return new Object[][] {
@@ -89,8 +91,8 @@
          {strictConfig, SYNTAX_TELEPHONE_OID, "+1x512x315x0280", false},
          {strictConfig, SYNTAX_TELEPHONE_OID, "   ", false},
          {strictConfig, SYNTAX_TELEPHONE_OID, "", false},
-         
-         
+
+
          {relaxedConfig, SYNTAX_TELEPHONE_OID, "+1+512 315 0280", true},
          {relaxedConfig, SYNTAX_TELEPHONE_OID, "+1x512x315x0280", true},
          {strictConfig, SYNTAX_TELEPHONE_OID, "   ", false},
@@ -106,30 +108,35 @@
   public void testAcceptableValues(ConfigEntry config, String oid, String value,
       Boolean result) throws Exception
   {
-    AttributeSyntax rule = DirectoryServer.getAttributeSyntax(oid, false);
-    ConfigurableComponent component = (ConfigurableComponent) rule;
-    
+    TelephoneNumberAttributeSyntaxCfg configuration =
+         AdminTestCaseUtils.getConfiguration(
+              TelephoneNumberAttributeSyntaxCfgDefn.getInstance(),
+              config.getEntry());
+
+    TelephoneNumberSyntax syntax =
+         (TelephoneNumberSyntax) DirectoryServer.getAttributeSyntax(oid, false);
+
     // apply the configuration.
     ArrayList<String> unacceptableReasons = new ArrayList<String>();
-    assertTrue(
-        component.hasAcceptableConfiguration(config, unacceptableReasons));
+    assertTrue(syntax.isConfigurationChangeAcceptable(configuration,
+                                                      unacceptableReasons));
     ConfigChangeResult configResult =
-      component.applyNewConfiguration(config, false);
+         syntax.applyConfigurationChange(configuration);
     assertEquals(configResult.getResultCode(), ResultCode.SUCCESS);
-    
-    // check the syntax of the given value. 
-    Boolean liveResult = rule.valueIsAcceptable(
+
+    // check the syntax of the given value.
+    Boolean liveResult = syntax.valueIsAcceptable(
         new ASN1OctetString(value), new StringBuilder());
     assertEquals(result, liveResult);
 
     // call the getters to increase code coverage...
-    rule.getApproximateMatchingRule();
-    rule.getDescription();
-    rule.getEqualityMatchingRule();
-    rule.getOID();
-    rule.getOrderingMatchingRule();
-    rule.getSubstringMatchingRule();
-    rule.getSyntaxName();
-    rule.toString();
+    syntax.getApproximateMatchingRule();
+    syntax.getDescription();
+    syntax.getEqualityMatchingRule();
+    syntax.getOID();
+    syntax.getOrderingMatchingRule();
+    syntax.getSubstringMatchingRule();
+    syntax.getSyntaxName();
+    syntax.toString();
   }
 }

--
Gitblit v1.10.0