From 7efcfb8936b64d492be5c85f232c9dc39006456d Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 20 Feb 2008 13:32:35 +0000
Subject: [PATCH] Fix for issue 2972 (The usage of stop-ds.bat shows the class name)

---
 opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusPanelLauncher.java |  118 ++++++++++++++++++++++------------------------------------
 1 files changed, 45 insertions(+), 73 deletions(-)

diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusPanelLauncher.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusPanelLauncher.java
index 92c5722..1375b89 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusPanelLauncher.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusPanelLauncher.java
@@ -28,17 +28,17 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.IOException;
 import java.io.PrintStream;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.opends.guitools.statuspanel.StatusCli.ErrorReturnCode;
+import org.opends.messages.Message;
 import org.opends.quicksetup.util.Utils;
 import org.opends.quicksetup.Installation;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.util.ServerConstants;
 import org.opends.server.util.StaticUtils;
+import org.opends.server.util.args.ArgumentException;
 import org.opends.server.util.args.ArgumentParser;
 import org.opends.server.util.args.BooleanArgument;
 
@@ -53,6 +53,8 @@
  */
 public class StatusPanelLauncher
 {
+  static private ArgumentParser argParser;
+
   /** Prefix for log files. */
   static public final String LOG_FILE_PREFIX = "opends-status-";
 
@@ -75,47 +77,48 @@
       System.err.println("Unable to initialize log");
       t.printStackTrace();
     }
-    boolean printUsage = false;
-    boolean printVersion = false;
-    if ((args != null) && (args.length > 4))
-    {
-      printUsage = true;
-    }
-    for (int i=0; i<args.length; i++)
-    {
-      if (args[i].equalsIgnoreCase("-H") ||
-          args[i].equalsIgnoreCase("--help") ||
-          args[i].equalsIgnoreCase("-?"))
-      {
-        printUsage = true;
-      }
-      else
-      if (args[i].equalsIgnoreCase("-" + OPTION_SHORT_PRODUCT_VERSION) ||
-          args[i].equalsIgnoreCase("--" + OPTION_LONG_PRODUCT_VERSION))
-      {
-        printVersion = true;
-      }
-    }
-    // We first check if we have to print the version
-    if(printVersion)
-    {
-      try
-      {
-        DirectoryServer.printVersion(System.out);
-      }
-      catch (IOException e)
-      {
-        // TODO Auto-generated catch block
-      }
-      System.exit(ErrorReturnCode.SUCCESSFUL_NOP.getReturnCode());
-    }
-    else
-    if (printUsage)
-    {
-      printUsage(System.out);
-      System.exit(ErrorReturnCode.SUCCESSFUL_NOP.getReturnCode());
 
-    } else
+    argParser = new ArgumentParser(StatusPanelLauncher.class.getName(),
+        INFO_STATUS_PANEL_LAUNCHER_USAGE_DESCRIPTION.get(), false);
+    BooleanArgument showUsage;
+    String scriptName;
+    if (Utils.isWindows()) {
+      scriptName = Installation.WINDOWS_STATUSPANEL_FILE_NAME;
+    } else {
+      scriptName = Installation.UNIX_STATUSPANEL_FILE_NAME;
+    }
+    if (System.getProperty(ServerConstants.PROPERTY_SCRIPT_NAME) == null)
+    {
+      System.setProperty(ServerConstants.PROPERTY_SCRIPT_NAME, scriptName);
+    }
+    try
+    {
+      showUsage = new BooleanArgument("showusage", OPTION_SHORT_HELP,
+          OPTION_LONG_HELP,
+          INFO_DESCRIPTION_USAGE.get());
+      argParser.addArgument(showUsage);
+      argParser.setUsageArgument(showUsage);
+    }
+    catch (Throwable t)
+    {
+      System.err.println("ERROR: "+t);
+      t.printStackTrace();
+    }
+
+//  Validate user provided data
+    try
+    {
+      argParser.parseArguments(args);
+    }
+    catch (ArgumentException ae)
+    {
+      Message message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
+      System.err.println(message);
+      System.out.println(Message.raw(argParser.getUsage()));
+
+      System.exit(ErrorReturnCode.ERROR_PARSING_ARGS.getReturnCode());
+    }
+    if (!argParser.usageOrVersionDisplayed())
     {
       int exitCode = launchGuiStatusPanel(args);
       if (exitCode != 0)
@@ -218,37 +221,6 @@
     return returnValue[0];
   }
 
-  private static void printUsage(PrintStream stream)
-  {
-    ArgumentParser argParser =
-      new ArgumentParser(StatusPanelLauncher.class.getName(),
-        INFO_STATUS_PANEL_LAUNCHER_USAGE_DESCRIPTION.get(), false);
-    BooleanArgument showUsage;
-    String scriptName;
-    if (Utils.isWindows()) {
-      scriptName = Installation.WINDOWS_STATUSPANEL_FILE_NAME;
-    } else {
-      scriptName = Installation.UNIX_STATUSPANEL_FILE_NAME;
-    }
-    System.setProperty(ServerConstants.PROPERTY_SCRIPT_NAME, scriptName);
-    try
-    {
-      showUsage = new BooleanArgument("showusage", OPTION_SHORT_HELP,
-        OPTION_LONG_HELP,
-        INFO_DESCRIPTION_USAGE.get());
-      argParser.addArgument(showUsage);
-      argParser.setUsageArgument(showUsage);
-
-      String msg = argParser.getUsage();
-      stream.println(msg);
-    }
-    catch (Throwable t)
-    {
-      System.err.println("ERROR: "+t);
-      t.printStackTrace();
-    }
-  }
-
   /**
    * This class is used to avoid displaying the error message related to display
    * problems that we might have when trying to display the SplashWindow.

--
Gitblit v1.10.0