From f2081ed7fa0035da4567342a9510fb0112c02ccf Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 09 Sep 2016 09:45:23 +0000
Subject: [PATCH] OPENDJ-3089 Remove simple references to SchemaConfigManager

---
 opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java                 |   55 ++++++++++--------
 opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java |    3 
 opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java    |   14 +++-
 opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java             |   11 +++
 opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java                 |   33 +++++++++--
 opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java            |    3 
 opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java            |    3 
 opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java     |    3 
 opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeUtils.java         |    4 
 9 files changed, 81 insertions(+), 48 deletions(-)

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 0d541bd..a0ae904 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
@@ -77,7 +77,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.SchemaConfigManager;
 import org.opends.server.core.SchemaHandler;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.ServerContext;
@@ -1872,7 +1871,15 @@
   @Override
   public File getDirectory()
   {
-    return new File(SchemaConfigManager.getSchemaDirectoryPath());
+    try
+    {
+      return schemaHandler.getSchemaDirectoryPath();
+    }
+    catch (InitializationException e)
+    {
+      logger.traceException(e);
+      return null;
+    }
   }
 
   private static final FileFilter BACKUP_FILES_FILTER = new FileFilter()
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
index c504013..cd1eb96 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
@@ -15,6 +15,9 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.ERR_CONFIG_SCHEMA_DIR_NOT_DIRECTORY;
+import static org.opends.messages.ConfigMessages.ERR_CONFIG_SCHEMA_NO_SCHEMA_DIR;
+
 import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
 import static org.opends.messages.SchemaMessages.NOTE_SCHEMA_IMPORT_FAILED;
 import static org.opends.server.util.SchemaUtils.getElementSchemaFile;
@@ -227,6 +230,31 @@
   }
 
   /**
+   * Retrieves the path to the directory containing the server schema files.
+   *
+   * @return The path to the directory containing the server schema files.
+   * @throws InitializationException
+   *            If the directory path does not exists or is not a directory
+   */
+  public File getSchemaDirectoryPath() throws InitializationException
+  {
+    final File dir = serverContext.getEnvironment().getSchemaDirectory();
+    if (dir == null)
+    {
+      throw new InitializationException(ERR_CONFIG_SCHEMA_NO_SCHEMA_DIR.get(null));
+    }
+    if (!dir.exists())
+    {
+      throw new InitializationException(ERR_CONFIG_SCHEMA_NO_SCHEMA_DIR.get(dir.getPath()));
+    }
+    if (!dir.isDirectory())
+    {
+      throw new InitializationException(ERR_CONFIG_SCHEMA_DIR_NOT_DIRECTORY.get(dir.getPath()));
+    }
+    return dir;
+  }
+
+  /**
    * Update the schema using the provided schema updater.
    * <p>
    * An implicit lock is performed, so it is in general not necessary
@@ -296,7 +324,7 @@
     {
       switchSchema(newSchema);
       this.extraAttributes = newExtraAttributes;
-      new SchemaWriter()
+      new SchemaWriter(serverContext)
         .updateSchemaFiles(schema, newExtraAttributes.values(), modifiedSchemaFileNames, alertGenerator);
       youngestModificationTime = System.currentTimeMillis();
     }
@@ -589,29 +617,6 @@
     }
   }
 
-  /**
-   * Retrieves the path to the directory containing the server schema files.
-   *
-   * @return The path to the directory containing the server schema files.
-   */
-  private File getSchemaDirectoryPath() throws InitializationException
-  {
-    final File dir = serverContext.getEnvironment().getSchemaDirectory();
-    if (dir == null)
-    {
-      throw new InitializationException(ERR_CONFIG_SCHEMA_NO_SCHEMA_DIR.get(null));
-    }
-    if (!dir.exists())
-    {
-      throw new InitializationException(ERR_CONFIG_SCHEMA_NO_SCHEMA_DIR.get(dir.getPath()));
-    }
-    if (!dir.isDirectory())
-    {
-      throw new InitializationException(ERR_CONFIG_SCHEMA_DIR_NOT_DIRECTORY.get(dir.getPath()));
-    }
-    return dir;
-  }
-
   /** Returns the LDIF reader on provided LDIF file. The caller must ensure the reader is closed. */
   private EntryReader getLDIFReader(final File ldifFile, final Schema schema)
       throws InitializationException
@@ -892,7 +897,7 @@
   }
 
   /** A file filter implementation that accepts only LDIF files. */
-  private static class SchemaFileFilter implements FilenameFilter
+  public static class SchemaFileFilter implements FilenameFilter
   {
     private static final String LDIF_SUFFIX = ".ldif";
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java
index 1548902..d70a4c4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java
@@ -100,8 +100,7 @@
 
     // Get the name(s) of the schema files to add and make sure they exist in
     // the schema directory.
-    String schemaInstanceDirectory =
-      SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaInstanceDirectory = DirectoryServer.getEnvironmentConfig().getSchemaDirectory().getPath();
     filesToAdd = new TreeSet<>();
     for (Attribute a : attrList)
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeUtils.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeUtils.java
index 262ca6c..c72189a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeUtils.java
@@ -56,7 +56,7 @@
 import org.forgerock.opendj.ldif.LDIFEntryReader;
 import org.forgerock.opendj.ldif.LDIFEntryWriter;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.SchemaConfigManager;
+import org.opends.server.core.SchemaHandler;
 import org.opends.server.util.ChangeOperationType;
 
 import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
@@ -632,7 +632,7 @@
     // and add all attribute/object classes in this new super entry which
     // will be read at start-up.
     Entry theNewSchemaEntry = new LinkedHashMapEntry();
-    final FilenameFilter filter = new SchemaConfigManager.SchemaFileFilter();
+    final FilenameFilter filter = new SchemaHandler.SchemaFileFilter();
     for (final File f : folder.listFiles(filter))
     {
       logger.debug(LocalizableMessage.raw("Processing %s", f.getAbsolutePath()));
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java b/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java
index 3aae5b2..a11f57c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java
@@ -66,7 +66,8 @@
 import org.forgerock.opendj.ldap.schema.Syntax;
 import org.opends.server.api.AlertGenerator;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.SchemaConfigManager;
+import org.opends.server.core.SchemaHandler;
+import org.opends.server.core.ServerContext;
 import org.opends.server.util.Base64;
 import org.opends.server.util.BuildVersion;
 import org.opends.server.util.LDIFException;
@@ -88,6 +89,19 @@
   private static final AttributeType nameFormsType = getNameFormsAttributeType();
   private static final AttributeType objectClassesType = getObjectClassesAttributeType();
 
+  private final ServerContext serverContext;
+
+  /**
+   * Creates a schema writer.
+   *
+   * @param serverContext
+   *            The server context.
+   */
+  public SchemaWriter(ServerContext serverContext)
+  {
+    this.serverContext = serverContext;
+  }
+
   /**
    * Compares the provided sets of schema element definitions and writes any differences found into
    * the given list of modifications.
@@ -139,9 +153,9 @@
   {
     // Get a sorted list of the files in the schema directory.
     TreeSet<File> schemaFiles = new TreeSet<>();
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = getSchemaDirectoryPath();
 
-    final FilenameFilter filter = new SchemaConfigManager.SchemaFileFilter();
+    final FilenameFilter filter = new SchemaHandler.SchemaFileFilter();
     for (File f : new File(schemaDirectory).listFiles(filter))
     {
       if (f.isFile())
@@ -170,6 +184,12 @@
     }
   }
 
+  private static String getSchemaDirectoryPath()
+  {
+    File schemaDir = DirectoryServer.getEnvironmentConfig().getSchemaDirectory();
+    return schemaDir != null ? schemaDir.getAbsolutePath() : null;
+  }
+
   /**
    * Reads data from the specified concatenated schema file into the provided sets.
    *
@@ -914,9 +934,11 @@
    *          The set of temporary schema files to be activated.
    * @throws DirectoryException
    *           If a problem occurs while attempting to install the temporary schema files.
+   * @throws InitializationException
+   *           If directory of schema files can't be retrieved
    */
   private void installSchemaFiles(AlertGenerator alertGenerator, HashMap<String,File> tempSchemaFiles)
-          throws DirectoryException
+          throws DirectoryException, InitializationException
   {
     // Create lists that will hold the three types of files we'll be dealing
     // with (the temporary files that will be installed, the installed schema
@@ -925,8 +947,7 @@
     ArrayList<File> tempFileList      = new ArrayList<>();
     ArrayList<File> origFileList      = new ArrayList<>();
 
-    File schemaInstanceDir =
-      new File(SchemaConfigManager.getSchemaDirectoryPath());
+    File schemaInstanceDir = serverContext.getSchemaHandler().getSchemaDirectoryPath();
 
     for (String name : tempSchemaFiles.keySet())
     {
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
index 16e2d05..a12f9ae 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
@@ -55,7 +55,6 @@
 import org.opends.server.core.DeleteOperationBasis;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperationBasis;
-import org.opends.server.core.SchemaConfigManager;
 import org.opends.server.core.ServerContext;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -3766,7 +3765,7 @@
 
   private File assertSchemaFileExists(String schemaFileName, boolean expectExists)
   {
-    File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(), schemaFileName);
+    File schemaFile = new File(DirectoryServer.getEnvironmentConfig().getSchemaDirectory(), schemaFileName);
     assertEquals(schemaFile.exists(), expectExists);
     return schemaFile;
   }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java
index ec55768..2eb7756 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java
@@ -42,7 +42,6 @@
 import org.opends.server.core.ModifyDNOperationBasis;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyOperationBasis;
-import org.opends.server.core.SchemaConfigManager;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.internal.SearchRequest;
 import org.opends.server.types.Attributes;
@@ -450,7 +449,7 @@
   {
     assertEquals(conn.hasPrivilege(Privilege.JMX_WRITE, null), hasPrivilege);
 
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = DirectoryServer.getEnvironmentConfig().getSchemaDirectory().getPath();
 
     String identifier;
     Entry authNEntry = conn.getAuthenticationInfo().getAuthenticationEntry();
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
index a8fc1d5..0888784 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
@@ -32,7 +32,6 @@
 import org.opends.server.TestCaseUtils;
 import org.opends.server.backends.SchemaTestMatchingRuleImpl;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.SchemaConfigManager;
 import org.opends.server.types.DirectoryException;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -107,7 +106,7 @@
     registerNewMatchingRule("testAddValidSchemaFileMatch", "1.3.6.1.4.1.26027.1.999.23");
 
 
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = getSchemaDirectory();
 
     String[] fileLines =
     {
@@ -197,7 +196,7 @@
            "APPLIES testAddMultipleValidSchemaFiles1AT )"
     };
 
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = getSchemaDirectory();
     File validFile1 = new File(schemaDirectory, "05-multiple-valid-1.ldif");
     writeLines(validFile1, fileLines1);
 
@@ -332,7 +331,7 @@
     Thread.sleep(2);
 
 
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = getSchemaDirectory();
 
     File emptyFile = new File(schemaDirectory, "05-empty.ldif");
     emptyFile.createNewFile();
@@ -364,7 +363,7 @@
   public void testAddInvalidSchemaFile()
          throws Exception
   {
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = getSchemaDirectory();
 
     File invalidFile = new File(schemaDirectory, "05-invalid.ldif");
     try (BufferedWriter writer = new BufferedWriter(new FileWriter(invalidFile)))
@@ -386,4 +385,9 @@
     assertFalse(resultCode == 0);
     invalidFile.delete();
   }
+
+  private String getSchemaDirectory()
+  {
+    return DirectoryServer.getEnvironmentConfig().getSchemaDirectory().getPath();
+  }
 }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java
index 6712e49..8959e13 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java
@@ -56,7 +56,6 @@
 import org.opends.server.core.ModifyDNOperationBasis;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyOperationBasis;
-import org.opends.server.core.SchemaConfigManager;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.internal.Requests;
@@ -909,7 +908,7 @@
           + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )"
     };
 
-    String schemaDirectory = SchemaConfigManager.getSchemaDirectoryPath();
+    String schemaDirectory = DirectoryServer.getEnvironmentConfig().getSchemaDirectory().getPath();
     File validFile = new File(schemaDirectory, "05-" + identifier + ".ldif");
     try (BufferedWriter writer = new BufferedWriter(new FileWriter(validFile)))
     {

--
Gitblit v1.10.0