From afe88363f70903f207a25edab27e7adcb9fc66e0 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 09 Sep 2016 09:45:24 +0000
Subject: [PATCH] OPENDJ-3089 Fix calls to server Schema methods that are not available in SDK Schema

---
 opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java                                             |    6 +
 opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java                             |   51 +++++++++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java              |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java                  |    2 
 opendj-server-legacy/src/test/java/org/opends/server/api/MonitorDataTestCase.java                                   |    3 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java                   |    2 
 opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java                              |   21 ++--
 opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java                           |   37 ++++++++-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java                     |    2 
 opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java                                      |   18 +++
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java                     |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java                             |    6 
 opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java |    2 
 opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java                                           |    6 +
 opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java                                    |    6 
 opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java                                               |    4 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java                |    2 
 opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java                                    |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java                       |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java                 |    2 
 opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/AciBodyTest.java                      |    3 
 21 files changed, 128 insertions(+), 53 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
index fb2af0a..92c9076 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
@@ -493,7 +493,7 @@
       }
       final String oid = ocToDelete.getOID();
       final Schema schema = getInfo().getServerDescriptor().getSchema();
-      return new SchemaBuilder(schema.getSchemaNG()).buildObjectClass(oid)
+      return new SchemaBuilder(schema).buildObjectClass(oid)
           .names(ocToDelete.getNames())
           .description(ocToDelete.getDescription())
           .superiorObjectClasses(getNameOrOIDsForOCs(newSuperiors))
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java
index a7d5c6d..a1aab07 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java
@@ -183,7 +183,7 @@
 
       Schema schema = getInfo().getServerDescriptor().getSchema();
       String oid = ocToDelete.getOID();
-      return new SchemaBuilder(schema.getSchemaNG()).buildObjectClass(oid)
+      return new SchemaBuilder(schema).buildObjectClass(oid)
           .names(ocToDelete.getNames())
           .description(ocToDelete.getDescription())
           .superiorObjectClasses(getNameOrOIDsForOCs(ocToDelete.getSuperiorClasses()))
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
index 041f7d6..417f9f2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
@@ -163,7 +163,7 @@
       }
       final String oid = ocToDelete.getOID();
       final Schema schema = getInfo().getServerDescriptor().getSchema();
-      return new SchemaBuilder(schema.getSchemaNG()).buildObjectClass(oid)
+      return new SchemaBuilder(schema).buildObjectClass(oid)
           .names(ocToDelete.getNames())
           .description(ocToDelete.getDescription())
           .superiorObjectClasses(getNameOrOIDsForOCs(newSups))
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
index 273ce03..ca1162c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
@@ -964,7 +964,7 @@
 
   private ObjectClass getNewObjectClass()
   {
-    return new SchemaBuilder(schema.getSchemaNG()).buildObjectClass(getOID())
+    return new SchemaBuilder(schema).buildObjectClass(getOID())
         .names(getAllNames())
         .description(getDescription())
         .superiorObjectClasses(getNameOrOIDsForOCs(getObjectClassSuperiors()))
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
index f660052..e1ca186 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
@@ -683,7 +683,7 @@
   {
     AttributeType superior = getSuperior();
     Syntax selectedSyntax = (Syntax) syntax.getSelectedItem();
-    return new SchemaBuilder(schema.getSchemaNG()).buildAttributeType(getOID())
+    return new SchemaBuilder(schema).buildAttributeType(getOID())
       .names(getAllNames())
       .description(getDescription())
       .superiorType(superior != null ? superior.getNameOrOID() : null)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
index 603c903..8a3d28e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
@@ -680,7 +680,7 @@
 
   private ObjectClass getObjectClass()
   {
-    return new SchemaBuilder(schema.getSchemaNG()).buildObjectClass(getOID())
+    return new SchemaBuilder(schema).buildObjectClass(getOID())
         .names(getAllNames())
         .description(getDescription())
         .superiorObjectClasses(getNameOrOIDsForOCs(getObjectClassSuperiors()))
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
index bc12f17..749242f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
@@ -1428,7 +1428,7 @@
                 Object o = comps.iterator().next().getValue();
                 if (o instanceof String)
                 {
-                  AttributeDescription attrDesc = AttributeDescription.valueOf(attrName, schema.getSchemaNG());
+                  AttributeDescription attrDesc = AttributeDescription.valueOf(attrName, schema);
                   AttributeType attrType = attrDesc.getAttributeType();
                   if (!attrType.isPlaceHolder())
                   {
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
index d421a6a..d60833c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
@@ -311,7 +311,7 @@
               Object o = table.getValueAt(i, 1);
               if (o instanceof String)
               {
-                AttributeDescription attrDesc = AttributeDescription.valueOf(attrName, schema.getSchemaNG());
+                AttributeDescription attrDesc = AttributeDescription.valueOf(attrName, schema);
                 AttributeType attrType = attrDesc.getAttributeType();
                 if (!attrType.isPlaceHolder())
                 {
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
index 21151d7..9a8ca1d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
@@ -2030,7 +2030,7 @@
     // Check all the attributes that we consider binaries.
     if (schema != null)
     {
-      AttributeType attrType = AttributeDescription.valueOf(attrName, schema.getSchemaNG()).getAttributeType();
+      AttributeType attrType = AttributeDescription.valueOf(attrName, schema).getAttributeType();
       if (!attrType.isPlaceHolder())
       {
         String syntaxOID = attrType.getSyntax().getOID();
@@ -2064,7 +2064,7 @@
   {
     if (schema != null)
     {
-      AttributeType attrType = AttributeDescription.valueOf(attrName, schema.getSchemaNG()).getAttributeType();
+      AttributeType attrType = AttributeDescription.valueOf(attrName, schema).getAttributeType();
       if (!attrType.isPlaceHolder())
       {
         PasswordType passwordType = SchemaUtils.checkPasswordType(attrType);
@@ -2078,7 +2078,7 @@
   {
     if (schema != null)
     {
-      AttributeType attrType = AttributeDescription.valueOf(attrName, schema.getSchemaNG()).getAttributeType();
+      AttributeType attrType = AttributeDescription.valueOf(attrName, schema).getAttributeType();
       if (!attrType.isPlaceHolder())
       {
         return oids.contains(attrType.getSyntax().getOID());
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
index db3826c..d790865 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
@@ -18,7 +18,6 @@
 
 import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
 import static org.opends.messages.BackendMessages.*;
-import static org.opends.server.util.SchemaUtils.getElementSchemaFile;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
@@ -36,6 +35,7 @@
 import org.forgerock.opendj.ldap.SearchScope;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.forgerock.opendj.server.config.server.BackendCfg;
 import org.opends.server.api.Backend;
 import org.opends.server.controls.PagedResultsControl;
@@ -44,6 +44,7 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.ServerContext;
 import org.opends.server.types.BackupConfig;
@@ -103,6 +104,9 @@
   /** The map of null entry object classes. */
   private Map<ObjectClass,String> objectClasses;
 
+  /** The server context. */
+  private ServerContext serverContext;
+
   /**
    * Creates a new backend with the provided information.  All backend
    * implementations must implement a default constructor that use
@@ -118,6 +122,7 @@
   @Override
   public void configureBackend(BackendCfg config, ServerContext serverContext) throws ConfigException
   {
+    this.serverContext = serverContext;
     if (config != null)
     {
       this.baseDNs = config.getBaseDN();
@@ -148,9 +153,16 @@
     objectClasses.put(getExtensibleObjectObjectClass(), "extensibleobject");
 
     String nulOCName = "nullbackendobject";
-    ObjectClass nulOC = DirectoryServer.getSchema().getObjectClass(nulOCName);
+    final ObjectClass nulOC = serverContext.getSchema().getObjectClass(nulOCName);
     try {
-      DirectoryServer.getSchema().registerObjectClass(nulOC, getElementSchemaFile(nulOC), false);
+      serverContext.getSchemaHandler().updateSchema(new SchemaUpdater()
+      {
+        @Override
+        public void update(SchemaBuilder builder) throws DirectoryException
+        {
+          builder.buildObjectClass(nulOC);
+        }
+      });
     } catch (DirectoryException de) {
       logger.traceException(de);
       throw new InitializationException(de.getMessageObject());
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
index a0ae904..d8e1879 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -16,6 +16,8 @@
  */
 package org.opends.server.backends;
 
+import static org.forgerock.opendj.ldap.schema.SchemaOptions.STRIP_UPPER_BOUND_FOR_ATTRIBUTE_TYPE;
+
 import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
 import static org.forgerock.util.Reject.*;
 import static org.opends.messages.BackendMessages.*;
@@ -33,7 +35,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -80,7 +81,6 @@
 import org.opends.server.core.SchemaHandler;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.ServerContext;
-import org.opends.server.schema.AttributeTypeSyntax;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeBuilder;
 import org.opends.server.types.Attributes;
@@ -375,7 +375,7 @@
     Schema schema = schemaHandler.getSchema();
     buildSchemaAttribute(schema.getAttributeTypes(), userAttrs,
         operationalAttrs, attributeTypesType, includeSchemaFile,
-        AttributeTypeSyntax.isStripSyntaxMinimumUpperBound(),
+        schema.getOption(STRIP_UPPER_BOUND_FOR_ATTRIBUTE_TYPE),
         ignoreShowAllOption);
     buildSchemaAttribute(schema.getObjectClasses(), userAttrs,
         operationalAttrs, objectClassesType, includeSchemaFile, false,
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
index 6329e22..836870c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
@@ -146,7 +146,7 @@
     try
     {
       final boolean allowMalformedNames = globalConfig.isAllowAttributeNameExceptions();
-      serverContext.getSchema().updateSchemaOption(ALLOW_MALFORMED_NAMES_AND_OPTIONS, allowMalformedNames);
+      serverContext.getSchemaHandler().updateSchemaOption(ALLOW_MALFORMED_NAMES_AND_OPTIONS, allowMalformedNames);
     }
     catch (DirectoryException e)
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java
index 0f4fefa..1ee6498 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java
@@ -179,7 +179,7 @@
       return null;
     }
     Schema schema = DirectoryServer.getSchema();
-    Collection<NameForm> listForms = schema.getNameForm(oc);
+    Collection<NameForm> listForms = schema.getNameForms(oc);
     NameForm nameForm = null;
     DITStructureRule ditRule = null;
     //We iterate over all the nameforms while creating the entry and
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
index a110d05..10dcde5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
@@ -1641,7 +1641,7 @@
          * DITStructureRules corresponding to other non-acceptable
          * nameforms are not applied.
          */
-        Collection<NameForm> forms = DirectoryServer.getSchema().getNameForm(structuralClass);
+        Collection<NameForm> forms = DirectoryServer.getSchema().getNameForms(structuralClass);
         if (forms != null)
         {
           List<NameForm> listForms = new ArrayList<>(forms);
@@ -2186,7 +2186,7 @@
         }
         else
         {
-          Collection<NameForm> allNFs = DirectoryServer.getSchema().getNameForm(parentStructuralClass);
+          Collection<NameForm> allNFs = DirectoryServer.getSchema().getNameForms(parentStructuralClass);
           if(allNFs != null)
           {
             for(NameForm parentNF : allNFs)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java b/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
index 08fd8b7..76663c9 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
@@ -238,7 +238,7 @@
   public static void startFakeServer() throws Exception
   {
     schemaBeforeStartingFakeServer = DirectoryServer.getSchema();
-    DirectoryServer.setSchema(new Schema(org.forgerock.opendj.ldap.schema.Schema.getDefaultSchema()));
+    DirectoryServer.setSchema(Schema.getDefaultSchema());
   }
 
   /**
@@ -747,9 +747,11 @@
   /**
    * Undo all the setup done by #startFakeServer().
    *
+   * @throws DirectoryException
+   *            If the initial schema contains warning
    * @see #startFakeServer() Matching method that starts the fake server
    */
-  public static void shutdownFakeServer()
+  public static void shutdownFakeServer() throws DirectoryException
   {
     DirectoryServer.setSchema(schemaBeforeStartingFakeServer);
   }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/api/MonitorDataTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/api/MonitorDataTestCase.java
index 89a4db9..a9534b3 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/api/MonitorDataTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/api/MonitorDataTestCase.java
@@ -33,6 +33,7 @@
 import org.forgerock.opendj.ldap.schema.Syntax;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.types.Attribute;
+import org.opends.server.types.DirectoryException;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -48,7 +49,7 @@
   }
 
   @AfterClass
-  public void tearDown()
+  public void tearDown() throws DirectoryException
   {
     TestCaseUtils.shutdownFakeServer();
   }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/AciBodyTest.java b/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/AciBodyTest.java
index e0c769f..66136a6 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/AciBodyTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/AciBodyTest.java
@@ -17,6 +17,7 @@
 
 import org.opends.server.DirectoryServerTestCase;
 import org.opends.server.TestCaseUtils;
+import org.opends.server.types.DirectoryException;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
@@ -35,7 +36,7 @@
   }
 
   @AfterClass
-  public void tearDown()
+  public void tearDown() throws DirectoryException
   {
     TestCaseUtils.shutdownFakeServer();
   }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java
index e7cbc18..e7032b5 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java
@@ -27,11 +27,15 @@
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.CoreSchema;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.forgerock.opendj.server.config.meta.EntryUUIDPluginCfgDefn;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.api.plugin.PluginType;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.SchemaHandler;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
 import org.opends.server.extensions.InitializationUtils;
+import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.LDIFImportConfig;
@@ -58,7 +62,10 @@
     TestCaseUtils.startServer();
   }
 
-
+  private SchemaHandler getSchemaHandler()
+  {
+    return DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+  }
 
   /**
    * Retrieves a set of valid configuration entries that may be used to
@@ -139,17 +146,39 @@
   public void testInitializeWithValidConfigsWithoutSchema(Entry e)
          throws Exception
   {
-    AttributeType entryUUIDType = CoreSchema.getEntryUUIDAttributeType();
-    DirectoryServer.getSchema().deregisterAttributeType(entryUUIDType);
+    final AttributeType entryUUIDType = CoreSchema.getEntryUUIDAttributeType();
+    removeAttributeType(entryUUIDType);
 
     EntryUUIDPlugin plugin = initializePlugin(e);
     plugin.finalizePlugin();
 
 
-    DirectoryServer.getSchema().registerAttributeType(entryUUIDType, null, false);
+    addAttributeType(entryUUIDType);
   }
 
+  private void addAttributeType(final AttributeType at) throws DirectoryException
+  {
+    getSchemaHandler().updateSchema(new SchemaUpdater()
+    {
+      @Override
+      public void update(SchemaBuilder builder) throws DirectoryException
+      {
+        builder.buildAttributeType(at).addToSchema();
+      }
+    });
+  }
 
+  private void removeAttributeType(final AttributeType at) throws DirectoryException
+  {
+    getSchemaHandler().updateSchema(new SchemaUpdater()
+    {
+      @Override
+      public void update(SchemaBuilder builder) throws DirectoryException
+      {
+        builder.removeAttributeType(at.getOID());
+      }
+    });
+  }
 
   /**
    * Retrieves a set of invalid configuration entries.
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java
index e1f756a..473405f 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java
@@ -30,16 +30,20 @@
 import org.forgerock.opendj.ldap.RDN;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.forgerock.opendj.server.config.meta.LastModPluginCfgDefn;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.api.plugin.PluginType;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
+import org.opends.server.core.SchemaHandler;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
 import org.opends.server.extensions.InitializationUtils;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.types.Attributes;
 import org.opends.server.types.DirectoryConfig;
+import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.Modification;
@@ -66,7 +70,40 @@
     TestCaseUtils.startServer();
   }
 
+  private SchemaHandler getSchemaHandler()
+  {
+    return DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+  }
 
+  private void registerAttributeTypes(final AttributeType...types) throws Exception
+  {
+    getSchemaHandler().updateSchema(new SchemaUpdater()
+    {
+      @Override
+      public void update(SchemaBuilder builder) throws DirectoryException
+      {
+        for (AttributeType at : types)
+        {
+          builder.buildAttributeType(at).addToSchema();
+        }
+      }
+    });
+  }
+
+  private void deregisterAttributeTypes(final AttributeType...types) throws Exception
+  {
+    getSchemaHandler().updateSchema(new SchemaUpdater()
+    {
+      @Override
+      public void update(SchemaBuilder builder) throws DirectoryException
+      {
+        for (AttributeType at : types)
+        {
+          builder.removeAttributeType(at.getOID());
+        }
+      }
+    });
+  }
 
   /**
    * Retrieves a set of valid configuration entries that may be used to
@@ -164,24 +201,14 @@
     AttributeType mtType = getModifyTimestampAttributeType();
     AttributeType mnType = getModifiersNameAttributeType();
 
-    DirectoryServer.getSchema().deregisterAttributeType(ctType);
-    DirectoryServer.getSchema().deregisterAttributeType(cnType);
-    DirectoryServer.getSchema().deregisterAttributeType(mtType);
-    DirectoryServer.getSchema().deregisterAttributeType(mnType);
-
+    deregisterAttributeTypes(ctType, cnType, mtType, mnType);
 
     LastModPlugin plugin = initializePlugin(e);
     plugin.finalizePlugin();
 
-
-    DirectoryServer.getSchema().registerAttributeType(ctType, null, false);
-    DirectoryServer.getSchema().registerAttributeType(cnType, null, false);
-    DirectoryServer.getSchema().registerAttributeType(mtType, null, false);
-    DirectoryServer.getSchema().registerAttributeType(mnType, null, false);
+    registerAttributeTypes(ctType, cnType, mtType, mnType);
   }
 
-
-
   /**
    * Retrieves a set of invalid configuration entries.
    *
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
index febb750..fa6808c 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
@@ -29,8 +29,6 @@
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.forgerock.opendj.ldap.schema.NameForm;
-import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.forgerock.opendj.ldap.schema.Syntax;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.core.DirectoryServer;
@@ -39,6 +37,7 @@
 import org.opends.server.types.LDIFImportConfig;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.opends.server.util.LDIFReader;
+import org.opends.server.util.SchemaUtils;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -111,10 +110,10 @@
       {
         for (ByteString v : a)
         {
-          AttributeType at = DirectoryServer.getSchema().parseAttributeType(v.toString());
-          if (! isNumericOID(at.getOID()))
+          String oid = SchemaUtils.parseAttributeTypeOID(v.toString());
+          if (! isNumericOID(oid))
           {
-            invalidOIDs.add(at.getNameOrOID());
+            invalidOIDs.add(oid);
           }
         }
       }
@@ -141,10 +140,10 @@
       {
         for (ByteString v : a)
         {
-          ObjectClass oc = DirectoryServer.getSchema().parseObjectClass(v.toString());
-          if (! isNumericOID(oc.getOID()))
+          String oid = SchemaUtils.parseObjectClassOID(v.toString());
+          if (! isNumericOID(oid))
           {
-            invalidOIDs.add(oc.getNameOrOID());
+            invalidOIDs.add(oid);
           }
         }
       }
@@ -170,10 +169,10 @@
       {
         for (ByteString v : a)
         {
-          NameForm nf = DirectoryServer.getSchema().parseNameForm(v.toString());
-          if (! isNumericOID(nf.getOID()))
+          String oid = SchemaUtils.parseNameFormOID(v.toString());
+          if (! isNumericOID(oid))
           {
-            invalidOIDs.add(nf.getNameOrOID());
+            invalidOIDs.add(oid);
           }
         }
       }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
index 6d1a57e..caf5f3b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
@@ -38,8 +38,10 @@
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.CoreSchema;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.SchemaHandler;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -208,7 +210,9 @@
     String string = "( 2.5.18.6 NAME 'subtreeSpecification' "
         + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.45 )";
 
-    AttributeType type = DirectoryServer.getSchema().parseAttributeType(string);
+    SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+    SchemaBuilder builder = new SchemaBuilder(schemaHandler.getSchema());
+    AttributeType type = builder.addAttributeType(string, false).toSchema().getAttributeType("2.5.18.6");
 
     // Test values.
     String[] values = new String[] { "{ }",

--
Gitblit v1.10.0