From 09f3d42c36384ea6d48a518b41e84d87e093705b Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Thu, 16 Aug 2007 20:56:31 +0000
Subject: [PATCH] This commit gets the QuickSetup installer working again by specifying the server root during the directory configuration.  This is addressed by adding a hidden arg to ConfigureDS for the server root that the installer uses for the specification of the directory.

---
 opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java    |    8 ++++++--
 opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java        |    2 +-
 opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java |    3 +++
 opendj-sdk/opends/src/messages/messages/tools.properties                        |    2 ++
 opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java           |   21 +++++++++++++++++++++
 opendj-sdk/opends/src/server/org/opends/server/tools/ToolConstants.java         |    9 +++++++++
 6 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/opendj-sdk/opends/src/messages/messages/tools.properties b/opendj-sdk/opends/src/messages/messages/tools.properties
index f10fef6..dbe76fa 100644
--- a/opendj-sdk/opends/src/messages/messages/tools.properties
+++ b/opendj-sdk/opends/src/messages/messages/tools.properties
@@ -2166,3 +2166,5 @@
  semicolon is not followed by an integer.  The semicolon will be assumed to be \
  part of the value and not a delimiter to separate the value from its relative \
  weight
+FATAL_ERR_INITIALIZE_SERVER_ROOT_1293=An unexpected error occured \
+  attempting to set the server's root directory to %s: %s
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
index dcc6a71..c59d04a 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -839,6 +839,9 @@
       }
     }
 
+    argList.add("-R");
+    argList.add(getInstallation().getRootDirectory().getAbsolutePath());
+
     String[] args = new String[argList.size()];
     argList.toArray(args);
     try
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 9831ff6..f44cf36 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
@@ -791,7 +791,7 @@
    * @throws  InitializationException  If the Directory Server is currently
    *                                   running.
    */
-  private void setEnvironmentConfig(DirectoryEnvironmentConfig config)
+  public void setEnvironmentConfig(DirectoryEnvironmentConfig config)
           throws InitializationException
   {
     if (isRunning)
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 f94317b..fcdd15d 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
@@ -117,7 +117,11 @@
   {
     File schemaDir =
               DirectoryServer.getEnvironmentConfig().getSchemaDirectory();
-    return schemaDir.getAbsolutePath();
+    if (schemaDir != null) {
+      return schemaDir.getAbsolutePath();
+    } else {
+      return null;
+    }
   }
 
 
@@ -212,7 +216,7 @@
 
     try
     {
-      if (! schemaDir.exists())
+      if (schemaDirPath == null || ! schemaDir.exists())
       {
         Message message = ERR_CONFIG_SCHEMA_NO_SCHEMA_DIR.get(schemaDirPath);
         throw new InitializationException(message);
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java b/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java
index 7bee3b8..8da384a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java
@@ -32,6 +32,7 @@
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Set;
+import java.io.File;
 
 import org.opends.server.api.ConfigHandler;
 import org.opends.server.config.BooleanConfigAttribute;
@@ -46,6 +47,8 @@
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryEnvironmentConfig;
+import org.opends.server.types.InitializationException;
 import org.opends.server.util.SetupUtils;
 import org.opends.server.util.args.ArgumentException;
 import org.opends.server.util.args.ArgumentParser;
@@ -170,6 +173,7 @@
     StringArgument    trustManagerProviderDN;
     StringArgument    certNickName;
     StringArgument    keyManagerPath;
+    StringArgument    serverRoot;
 
     Message toolDescription = INFO_CONFIGDS_TOOL_DESCRIPTION.get();
     ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription,
@@ -290,6 +294,14 @@
                                       INFO_DESCRIPTION_USAGE.get());
       argParser.addArgument(showUsage);
       argParser.setUsageArgument(showUsage);
+
+      serverRoot = new StringArgument("serverRoot",
+              ToolConstants.OPTION_SHORT_SERVER_ROOT,
+              ToolConstants.OPTION_LONG_SERVER_ROOT,
+              false, false, true, "{serverRootDir}", null, null,
+              null);
+      serverRoot.setHidden(true);
+      argParser.addArgument(serverRoot);
     }
     catch (ArgumentException ae)
     {
@@ -377,6 +389,15 @@
       return 1;
     }
 
+    if (serverRoot.isPresent()) {
+      DirectoryEnvironmentConfig env = DirectoryServer.getEnvironmentConfig();
+      String root = serverRoot.getValue();
+      try {
+        env.setServerRoot(new File(serverRoot.getValue()));
+      } catch (InitializationException e) {
+        ERR_INITIALIZE_SERVER_ROOT.get(root, e.getMessageObject());
+      }
+    }
 
     // Initialize the Directory Server configuration handler using the
     // information that was provided.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/ToolConstants.java b/opendj-sdk/opends/src/server/org/opends/server/tools/ToolConstants.java
index f4abe7a..187491c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/ToolConstants.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/ToolConstants.java
@@ -636,5 +636,14 @@
   */
  public static final String OPTION_VALUE_SET = "{PROP:VAL}";
 
+  /**
+   * Value for the server root option short form.
+   */
+  public static final Character OPTION_SHORT_SERVER_ROOT = 'R';
+
+  /**
+   * Value for the server root option long form.
+   */
+  public static final String OPTION_LONG_SERVER_ROOT = "serverRoot";
 }
 

--
Gitblit v1.10.0