From 04f17d173c9945abfc931d0794fa8d69f821a264 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 29 Aug 2007 22:55:03 +0000
Subject: [PATCH] Update the CreateRCScript tool so that it provides the ability to specify the user that the server should run as (invoked via "su"), and also lets the user specify the JAVA_HOME and JAVA_ARGS settings that should be used.

---
 opendj-sdk/opends/src/server/org/opends/server/tools/CreateRCScript.java |   71 +++++++++++++++++++++++++++++++----
 1 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/CreateRCScript.java b/opendj-sdk/opends/src/server/org/opends/server/tools/CreateRCScript.java
index afb0f1d..b1689cf 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/CreateRCScript.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/CreateRCScript.java
@@ -138,7 +138,10 @@
          new ArgumentParser(CreateRCScript.class.getName(), description, false);
 
     BooleanArgument showUsage  = null;
+    StringArgument  javaArgs   = null;
+    StringArgument  javaHome   = null;
     StringArgument  outputFile = null;
+    StringArgument  userName   = null;
 
     try
     {
@@ -148,6 +151,24 @@
       argParser.addArgument(outputFile);
 
 
+      userName = new StringArgument("username", 'u', "userName", false, false,
+                                    true, "{username}", null, null,
+                                    INFO_CREATERC_USER_DESCRIPTION.get());
+      argParser.addArgument(userName);
+
+
+      javaHome = new StringArgument("javahome", 'j', "javaHome", false, false,
+                                    true, "{path}", null, null,
+                                    INFO_CREATERC_JAVA_HOME_DESCRIPTION.get());
+      argParser.addArgument(javaHome);
+
+
+      javaArgs = new StringArgument("javaargs", 'J', "javaArgs", false, false,
+                                    true, "{args}", null,null,
+                                    INFO_CREATERC_JAVA_ARGS_DESCRIPTION.get());
+      argParser.addArgument(javaArgs);
+
+
       showUsage = new BooleanArgument("help", 'H', "help",
                                       INFO_DESCRIPTION_SHOWUSAGE.get());
       argParser.addArgument(showUsage);
@@ -169,17 +190,40 @@
       return 1;
     }
 
-    if (showUsage.isPresent())
+    if (argParser.usageOrVersionDisplayed())
     {
       return 0;
     }
 
 
     // Determine the path to the Java installation that should be used.
-    String javaHomeDir = System.getenv("JAVA_HOME");
-    if (javaHomeDir == null)
+    String javaHomeDir;
+    if (javaHome.isPresent())
     {
-      javaHomeDir = System.getProperty("java.home");
+      File f = new File(javaHome.getValue());
+      if (! (f.exists() && f.isDirectory()))
+      {
+        err.println(ERR_CREATERC_JAVA_HOME_DOESNT_EXIST.get(
+                         javaHome.getValue()).toString());
+        return 1;
+      }
+
+      javaHomeDir = f.getAbsolutePath();
+    }
+    else
+    {
+      javaHomeDir = System.getenv("JAVA_HOME");
+      if (javaHomeDir == null)
+      {
+        javaHomeDir = System.getProperty("java.home");
+      }
+    }
+
+
+    String suString = "";
+    if (userName.isPresent())
+    {
+      suString = "/bin/su " + userName.getValue() + " ";
     }
 
 
@@ -201,27 +245,36 @@
       w.println();
 
       w.println("# Set the path to the OpenDS instance to manage");
-      w.println("INSTANCE_ROOT=" + serverRoot.getAbsolutePath());
+      w.println("INSTANCE_ROOT=\"" + serverRoot.getAbsolutePath() + "\"");
       w.println("export INSTANCE_ROOT");
       w.println();
 
       w.println("# Specify the path to the Java installation to use");
-      w.println("JAVA_HOME=" + javaHomeDir);
+      w.println("JAVA_HOME=\"" + javaHomeDir + "\"");
       w.println("export JAVA_HOME");
       w.println();
 
+      if (javaArgs.isPresent())
+      {
+        w.println("# Specify arguments that should be provided to the JVM");
+        w.println("JAVA_ARGS=\"" + javaArgs.getValue() + "\"");
+        w.println("export JAVA_ARGS");
+        w.println();
+      }
+
       w.println("# Determine what action should be performed on the server");
       w.println("case \"${1}\" in");
       w.println("start)");
-      w.println("  ${INSTANCE_ROOT}/bin/start-ds");
+      w.println("  " + suString + "\"${INSTANCE_ROOT}/bin/start-ds\" --quiet");
       w.println("  exit ${?}");
       w.println("  ;;");
       w.println("stop)");
-      w.println("  ${INSTANCE_ROOT}/bin/stop-ds");
+      w.println("  " + suString + "\"${INSTANCE_ROOT}/bin/stop-ds\" --quiet");
       w.println("  exit ${?}");
       w.println("  ;;");
       w.println("restart)");
-      w.println("  ${INSTANCE_ROOT}/bin/stop-ds --restart");
+      w.println("  " + suString + "\"${INSTANCE_ROOT}/bin/stop-ds\" " +
+                "--restart --quiet");
       w.println("  exit ${?}");
       w.println("  ;;");
       w.println("*)");

--
Gitblit v1.10.0