From c18591b0bb075c240849ec5d2520a0442dca330d Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Tue, 05 Apr 2016 10:09:16 +0000
Subject: [PATCH] Refactor initialization in tools for OPENDJ-2616 Support protection of pluggable backend data at rest

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java |   80 ++++++++++------------------------------
 1 files changed, 20 insertions(+), 60 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
index d4f1c5b..7d916b4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
@@ -47,7 +47,6 @@
 import org.opends.server.backends.pluggable.spi.ReadableTransaction;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
-import org.opends.server.core.CoreConfigManager;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler;
 import org.opends.server.core.LockFileManager;
@@ -285,8 +284,6 @@
   /** Flag indicating whether or not the global arguments have already been initialized. */
   private boolean globalArgumentsInitialized;
 
-  private DirectoryServer directoryServer;
-
   /**
    * Provides the command-line arguments to the main application for
    * processing.
@@ -578,61 +575,24 @@
     }
 
     // Perform the initial bootstrap of the Directory Server and process the configuration.
-    directoryServer = DirectoryServer.getInstance();
-    try
-    {
-      DirectoryServer.bootstrapClient();
-      DirectoryServer.initializeJMX();
-    }
-    catch (Exception e)
-    {
-      printWrappedText(err, ERR_SERVER_BOOTSTRAP_ERROR.get(getStartUpExceptionMessage(e)));
-      return 1;
-    }
-
-    try
-    {
-      directoryServer.initializeConfiguration(configFile.getValue());
-    }
-    catch (Exception e)
-    {
-      printWrappedText(err, ERR_CANNOT_LOAD_CONFIG.get(getStartUpExceptionMessage(e)));
-      return 1;
-    }
-
-    try
-    {
-      directoryServer.initializeSchema();
-    }
-    catch (Exception e)
-    {
-      printWrappedText(err, ERR_CANNOT_LOAD_SCHEMA.get(getStartUpExceptionMessage(e)));
-      return 1;
-    }
-
-    try
-    {
-      CoreConfigManager coreConfigManager = new CoreConfigManager(directoryServer.getServerContext());
-      coreConfigManager.initializeCoreConfig();
-    }
-    catch (Exception e)
-    {
-      printWrappedText(err, ERR_CANNOT_INITIALIZE_CORE_CONFIG.get(getStartUpExceptionMessage(e)));
-      return 1;
-    }
-
-    try
-    {
-      directoryServer.initializeCryptoManager();
-    }
-    catch (Exception e)
-    {
-      printWrappedText(err, ERR_CANNOT_INITIALIZE_CRYPTO_MANAGER.get(getStartUpExceptionMessage(e)));
-      return 1;
-    }
-
     SubCommand subCommand = parser.getSubCommand();
-    if (LIST_BACKENDS.equals(subCommand.getName()))
+    final String subCommandName = subCommand.getName();
+    try
+    {
+      DirectoryServer.InitializationBuilder initializationBuilder =
+          new DirectoryServer.InitializationBuilder(configFile.getValue());
+      if (subCommandName.equals(DUMP_INDEX) || subCommandName.equals(SHOW_INDEX_STATUS))
+      {
+        initializationBuilder.requireCryptoServices();
+      }
+      initializationBuilder.initialize();
+    }
+    catch (InitializationException e)
+    {
+      printWrappedText(err, ERR_CANNOT_INITIALIZE_SERVER_COMPONENTS.get(e.getLocalizedMessage()));
+      return 1;
+    }
+    if (LIST_BACKENDS.equals(subCommandName))
     {
       return listRootContainers();
     }
@@ -648,7 +608,7 @@
     }
     try
     {
-      switch (subCommand.getName())
+      switch (subCommandName)
       {
       case LIST_BASE_DNS:
         return listBaseDNs(rootContainer);
@@ -668,7 +628,7 @@
     }
     catch (Exception e)
     {
-      printWrappedText(err, ERR_BACKEND_TOOL_EXECUTING_COMMAND.get(subCommand.getName(),
+      printWrappedText(err, ERR_BACKEND_TOOL_EXECUTING_COMMAND.get(subCommandName,
           StaticUtils.stackTraceToString(e)));
       return 1;
     }
@@ -1053,7 +1013,7 @@
       {
         try
         {
-          b.configureBackend(backend.getKey(), directoryServer.getServerContext());
+          b.configureBackend(backend.getKey(), DirectoryServer.getInstance().getServerContext());
           return b;
         }
         catch (ConfigException ce)

--
Gitblit v1.10.0