From a39783c0d0b94e6eef5e7836168d919442c77f56 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 03 Feb 2015 13:55:55 +0000
Subject: [PATCH] OPENDJ-1778 Tools --help display the java class name instead of the command name

---
 opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java  |    8 ++--
 opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java |   27 +++++--------
 opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java           |   54 +++++++++++++++++++++++---
 3 files changed, 61 insertions(+), 28 deletions(-)

diff --git a/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java b/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
index 4133815..c75d28d 100644
--- a/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
+++ b/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
@@ -74,6 +74,8 @@
     public static final String DEFAULT_OPENDJ_PROPERTIES_FILE_EXTENSION = ".properties";
     /** The name of a command-line script used to launch a tool. */
     public static final String PROPERTY_SCRIPT_NAME = "com.forgerock.opendj.ldap.tools.scriptName";
+    /** The legacy name of a command-line script used to launch a tool. */
+    public static final String PROPERTY_SCRIPT_NAME_LEGACY = "org.opends.server.scriptName";
 
     /** The argument that will be used to indicate the file properties. */
     private StringArgument filePropertiesPathArgument;
@@ -425,7 +427,7 @@
 
         // We have a location for the properties file.
         final Properties argumentProperties = new Properties();
-        final String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
+        final String scriptName = getScriptName();
         try {
             final Properties p = new Properties();
             final FileInputStream fis = new FileInputStream(propertiesFilePath);
@@ -651,13 +653,8 @@
      */
     private void getUsage(final StringBuilder buffer) {
         usageOrVersionDisplayed = true;
-        final String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
-        if (scriptName == null || scriptName.length() == 0) {
-            buffer.append(INFO_ARGPARSER_USAGE_JAVA_CLASSNAME.get(mainClassName));
-        } else {
-            buffer.append(INFO_ARGPARSER_USAGE_JAVA_SCRIPTNAME.get(scriptName));
-        }
 
+        buffer.append(getLocalizableScriptName());
         if (allowsTrailingArguments) {
             buffer.append(" ");
             if (trailingArgsDisplayName != null) {
@@ -741,6 +738,49 @@
     }
 
     /**
+     * Returns the script name or a Java equivalent command-line string.
+     *
+     * @return the script name or a Java equivalent command-line string
+     */
+    String getScriptNameOrJava() {
+        final String scriptName = getScriptName();
+        if (scriptName != null && scriptName.length() != 0) {
+            return scriptName;
+        }
+        return "java " + getMainClassName();
+    }
+
+    /**
+     * Returns the script name as a {@link LocalizableMessage}.
+     *
+     * @return the script name as a {@link LocalizableMessage}
+     */
+    LocalizableMessage getLocalizableScriptName() {
+        final String scriptName = getScriptName();
+        if (scriptName == null || scriptName.length() == 0) {
+            return INFO_ARGPARSER_USAGE_JAVA_CLASSNAME.get(mainClassName);
+        }
+        return INFO_ARGPARSER_USAGE_JAVA_SCRIPTNAME.get(scriptName);
+    }
+
+    /**
+     * Returns the script name if set.
+     *
+     * @return the script name, or {@code null} if not set
+     */
+    String getScriptName() {
+        final String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
+        if (scriptName != null && scriptName.length() != 0) {
+            return scriptName;
+        }
+        final String legacyScriptName = System.getProperty(PROPERTY_SCRIPT_NAME_LEGACY);
+        if (legacyScriptName != null && legacyScriptName.length() != 0) {
+            return legacyScriptName;
+        }
+        return null;
+    }
+
+    /**
      * Returns the usage argument.
      *
      * @return the usageArgument
diff --git a/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java b/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
index 5931b24..ed1c0e1 100644
--- a/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
+++ b/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
@@ -772,11 +772,8 @@
      *            The subcommand for which to display the usage information.
      */
     public void getSubCommandUsage(StringBuilder buffer, SubCommand subCommand) {
-        String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
-        if (scriptName == null || scriptName.length() == 0) {
-            scriptName = "java " + getMainClassName();
-        }
-        buffer.append(INFO_ARGPARSER_USAGE_JAVA_SCRIPTNAME.get(scriptName));
+        final String scriptName = getScriptNameOrJava();
+        buffer.append(getLocalizableScriptName());
         buffer.append("  ");
         buffer.append(scriptName);
 
@@ -867,13 +864,9 @@
      */
     public LocalizableMessage getHelpUsageReference() {
         setUsageOrVersionDisplayed(true);
-        String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
-        if (scriptName == null || scriptName.length() == 0) {
-            scriptName = "java " + getMainClassName();
-        }
 
         LocalizableMessageBuilder buffer = new LocalizableMessageBuilder();
-        buffer.append(INFO_GLOBAL_HELP_REFERENCE.get(scriptName));
+        buffer.append(INFO_GLOBAL_HELP_REFERENCE.get(getScriptNameOrJava()));
         buffer.append(EOL);
         return buffer.toMessage();
     }
@@ -919,13 +912,9 @@
             buffer.append(EOL).append(EOL);
         }
 
-        String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
-        if (scriptName == null || scriptName.length() == 0) {
-            scriptName = "java " + getMainClassName();
-        }
         buffer.append(INFO_ARGPARSER_USAGE.get());
         buffer.append("  ");
-        buffer.append(scriptName);
+        buffer.append(getScriptNameOrJava());
 
         if (subCommands.isEmpty()) {
             buffer.append(" ").append(INFO_SUBCMDPARSER_OPTIONS.get());
@@ -1175,10 +1164,14 @@
      * @return Refsect2 representation of the subcommand.
      */
     private String toRefSect2(SubCommand sc) {
-        final String toolName = "dsconfig";
+        final String scriptName = getScriptName();
+        if (scriptName == null) {
+            throw new RuntimeException("The script name should have been set via the environment property '"
+                    + PROPERTY_SCRIPT_NAME + "'.");
+        }
 
         final StringBuilder sb = new StringBuilder();
-        sb.append("<refsect2 xml:id=\"").append(toolName).append("-").append(sc.getName()).append("\">").append(EOL);
+        sb.append("<refsect2 xml:id=\"").append(scriptName).append("-").append(sc.getName()).append("\">").append(EOL);
         sb.append(" <title>dsconfig ").append(sc.getName()).append("</title>").append(EOL);
         sb.append(" <para>").append(sc.getDescription()).append("</para>").append(EOL);
 
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
index 642f113..3a403fd 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -167,7 +167,7 @@
                             new ArrayList<PropertyDefinition<?>>(defn.getAllPropertyDefinitions());
                     Collections.sort(props);
 
-                    final String propPrefix = DSCONFIGTOOLNAME + "-" + sc.getName() + "-" + argLongID + "-";
+                    final String propPrefix = getScriptName() + "-" + sc.getName() + "-" + argLongID + "-";
                     sb.append(EOL);
                     toSimpleList(props, propPrefix, sb);
                     sb.append(EOL);
@@ -1239,7 +1239,7 @@
      * @return <T> The builded command.
      */
     <T> CommandBuilder getCommandBuilder(final T subCommand) {
-        final String commandName = getCommandName();
+        final String commandName = getScriptName();
         final String subCommandName;
         if (subCommand instanceof SubCommandHandler) {
             subCommandName = ((SubCommandHandler) subCommand).getSubCommand().getName();
@@ -1272,7 +1272,7 @@
         return commandBuilder;
     }
 
-    private String getCommandName() {
+    private String getScriptName() {
         final String commandName = System.getProperty(PROPERTY_SCRIPT_NAME);
         if (commandName != null && commandName.length() != 0) {
             return commandName;
@@ -1338,7 +1338,7 @@
      */
     private String getSessionStartTimeMessage() {
         final String date = formatDateTimeStringForEquivalentCommand(new Date(sessionStartTime));
-        return INFO_DSCFG_SESSION_START_TIME_MESSAGE.get(getCommandName(), date).toString();
+        return INFO_DSCFG_SESSION_START_TIME_MESSAGE.get(getScriptName(), date).toString();
     }
 
     private void handleBatchFile(String[] args) {

--
Gitblit v1.10.0