From 356240c99bdb71f712e425f22eac7f456cfe6881 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 27 Feb 2014 10:48:18 +0000
Subject: [PATCH] Refactor retrieval of serverRoot and instanceRoot to have an unique implementation

---
 opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java |  104 ++++------------------------------------------------
 1 files changed, 8 insertions(+), 96 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java b/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
index fa175df..e548f1c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -175,8 +175,6 @@
   /** The instance root directory for the Directory Server. */
   private String instanceRoot;
 
-
-
   /**
    * Creates a new instance of this config file handler.  No initialization
    * should be performed here, as all of that work should be done in the
@@ -200,8 +198,7 @@
     // configuration.  If so, then only do so if such a file exists.  If it
     // doesn't exist, then fall back on the active configuration file.
     this.configFile = configFile;
-    DirectoryEnvironmentConfig envConfig =
-         DirectoryServer.getEnvironmentConfig();
+    DirectoryEnvironmentConfig envConfig = DirectoryServer.getEnvironmentConfig();
     useLastKnownGoodConfig = envConfig.useLastKnownGoodConfiguration();
     File f;
     if (useLastKnownGoodConfig)
@@ -497,107 +494,22 @@
     }
 
 
-    // Determine the appropriate server root.  If it's not defined in the
-    // environment config, then try to figure it out from the location of the
-    // configuration file.
+    // Get the server root
     File rootFile = envConfig.getServerRoot();
     if (rootFile == null)
     {
-      try
-      {
-        File configDirFile = f.getParentFile();
-        if (configDirFile != null &&
-            CONFIG_DIR_NAME.equals(configDirFile.getName()))
-        {
-          /*
-           * Do a best effort to avoid having a relative representation (for
-           * instance to avoid having ../../../).
-           */
-          try
-          {
-            serverRoot = configDirFile.getParentFile().getCanonicalPath();
-          }
-          catch (IOException ioe)
-          {
-            // Best effort
-            serverRoot = configDirFile.getParentFile().getAbsolutePath();
-          }
-        }
-
-        if (serverRoot == null)
-        {
-          LocalizableMessage message = ERR_CONFIG_CANNOT_DETERMINE_SERVER_ROOT.get(
-              ENV_VAR_INSTALL_ROOT);
-          throw new InitializationException(message);
-        }
-      }
-      catch (InitializationException ie)
-      {
-        logger.traceException(ie);
-
-        throw ie;
-      }
-      catch (Exception e)
-      {
-        logger.traceException(e);
-
-        LocalizableMessage message =
-            ERR_CONFIG_CANNOT_DETERMINE_SERVER_ROOT.get(ENV_VAR_INSTALL_ROOT);
-        throw new InitializationException(message);
-      }
+      throw new InitializationException(ERR_CONFIG_CANNOT_DETERMINE_SERVER_ROOT.get(
+          ENV_VAR_INSTALL_ROOT));
     }
-    else
-    {
-      /*
-       * Do a best effort to avoid having a relative representation (for
-       * instance to avoid having ../../../).
-       */
-      try
-      {
-        serverRoot = rootFile.getCanonicalPath();
-      }
-      catch (IOException ioe)
-      {
-        // Best effort
-        serverRoot = rootFile.getAbsolutePath();
-      }
-    }
+    serverRoot = rootFile.getAbsolutePath();
 
-    // Determine the appropriate server root.  If it's not defined in the
-    // environment config, then try to figure it out from the location of the
-    // configuration file.
-    File instanceFile =
-        DirectoryEnvironmentConfig.getInstanceRootFromServerRoot(new File(
-          serverRoot));
-    if (instanceFile == null)
-    {
-      LocalizableMessage message =
-        ERR_CONFIG_CANNOT_DETERMINE_SERVER_ROOT.get(ENV_VAR_INSTALL_ROOT);
-        throw new InitializationException(message);
-    }
-    else
-    {
-      /*
-       * Do a best effort to avoid having a relative representation (for
-       * instance to avoid having ../../../).
-       */
-      try
-      {
-        instanceRoot = instanceFile.getCanonicalPath();
-      }
-      catch (IOException ioe)
-      {
-        // Best effort
-        instanceRoot = instanceFile.getAbsolutePath();
-      }
-    }
-
-
+    // Get the server instance root
+    File instanceFile = envConfig.getInstanceRoot();
+    instanceRoot = instanceFile.getAbsolutePath();
 
     // Register with the Directory Server as an alert generator.
     DirectoryServer.registerAlertGenerator(this);
 
-
     // Register with the Directory Server as the backend that should be used
     // when accessing the configuration.
     baseDNs = new DN[] { configRootEntry.getDN() };

--
Gitblit v1.10.0