From 8c323f960b774edfc8c197fb784ab045816884a7 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 21 Jan 2015 11:09:28 +0000
Subject: [PATCH] OPENDJ-1734 (CR-5811) V/-version option does not work for some tools

---
 opendj3-server-dev/src/server/org/opends/server/tools/InstallDSArgumentParser.java |  158 ++++++++++++++++++++--------------------------------
 1 files changed, 61 insertions(+), 97 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/InstallDSArgumentParser.java b/opendj3-server-dev/src/server/org/opends/server/tools/InstallDSArgumentParser.java
index 8926b3b..096824d 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/InstallDSArgumentParser.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/InstallDSArgumentParser.java
@@ -22,13 +22,14 @@
  *
  *
  *      Copyright 2008-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2011-2014 ForgeRock AS.
+ *      Portions Copyright 2011-2015 ForgeRock AS.
  */
 package org.opends.server.tools;
 
-import static org.opends.messages.ToolMessages.*;
 import static com.forgerock.opendj.cli.ArgumentConstants.*;
-import static com.forgerock.opendj.util.OperatingSystem.isWindows;
+import static com.forgerock.opendj.util.OperatingSystem.*;
+
+import static org.opends.messages.ToolMessages.*;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -36,12 +37,14 @@
 import java.util.Set;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.quicksetup.Constants;
 import org.opends.quicksetup.Installation;
 import org.opends.quicksetup.UserData;
 import org.opends.quicksetup.util.Utils;
 import org.opends.server.admin.AdministrationConnector;
+import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler;
 
 import com.forgerock.opendj.cli.Argument;
 import com.forgerock.opendj.cli.ArgumentException;
@@ -63,6 +66,8 @@
  */
 public class InstallDSArgumentParser extends ArgumentParser
 {
+  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+
   BooleanArgument   testOnlyArg;
   BooleanArgument   cliArg;
   BooleanArgument   addBaseEntryArg;
@@ -98,11 +103,9 @@
   StringArgument    keyStorePasswordArg;
   StringArgument    certNicknameArg;
   StringArgument    progNameArg;
-  IntegerArgument   connectTimeoutArg = null;
+  IntegerArgument   connectTimeoutArg;
   BooleanArgument   acceptLicense;
 
-  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
   /**
    * The default constructor for this class.
    * @param mainClassName the class name of the main class for the command-line
@@ -111,6 +114,7 @@
   public InstallDSArgumentParser(String mainClassName)
   {
     super(mainClassName, INFO_INSTALLDS_TOOL_DESCRIPTION.get(), false);
+    setVersionHandler(new DirectoryServerVersionHandler());
   }
 
   /**
@@ -394,10 +398,8 @@
     return cliArg.isPresent();
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public void parseArguments(String[] args) throws ArgumentException
   {
     LinkedHashSet<LocalizableMessage> errorMessages = new LinkedHashSet<LocalizableMessage>();
@@ -420,10 +422,8 @@
 
       if (errorMessages.size() > 0)
       {
-        LocalizableMessage message = ERR_CANNOT_INITIALIZE_ARGS.get(
-            Utils.getMessageFromCollection(errorMessages,
-                Constants.LINE_SEPARATOR));
-        throw new ArgumentException(message);
+        throw new ArgumentException(ERR_CANNOT_INITIALIZE_ARGS.get(
+            Utils.getMessageFromCollection(errorMessages, Constants.LINE_SEPARATOR)));
       }
     }
   }
@@ -435,16 +435,15 @@
    */
   public String getDirectoryManagerPassword()
   {
-    String pwd = null;
     if (directoryManagerPwdStringArg.isPresent())
     {
-      pwd = directoryManagerPwdStringArg.getValue();
+      return directoryManagerPwdStringArg.getValue();
     }
     else if (directoryManagerPwdFileArg.isPresent())
     {
-      pwd = directoryManagerPwdFileArg.getValue();
+      return directoryManagerPwdFileArg.getValue();
     }
-    return pwd;
+    return null;
   }
 
   /**
@@ -454,16 +453,15 @@
    */
   public String getKeyStorePassword()
   {
-    String pwd = null;
     if (keyStorePasswordArg.isPresent())
     {
-      pwd = keyStorePasswordArg.getValue();
+      return keyStorePasswordArg.getValue();
     }
     else if (keyStorePasswordFileArg.isPresent())
     {
-      pwd = keyStorePasswordFileArg.getValue();
+      return keyStorePasswordFileArg.getValue();
     }
-    return pwd;
+    return null;
   }
 
   /**
@@ -478,19 +476,17 @@
     if (directoryManagerPwdStringArg.isPresent() &&
         directoryManagerPwdFileArg.isPresent())
     {
-      LocalizableMessage message = ERR_INSTALLDS_TWO_CONFLICTING_ARGUMENTS.get(
+      errorMessages.add(ERR_INSTALLDS_TWO_CONFLICTING_ARGUMENTS.get(
           directoryManagerPwdStringArg.getLongIdentifier(),
-          directoryManagerPwdFileArg.getLongIdentifier());
-      errorMessages.add(message);
+          directoryManagerPwdFileArg.getLongIdentifier()));
     }
 
     if (noPromptArg.isPresent() && !directoryManagerPwdStringArg.isPresent() &&
         !directoryManagerPwdFileArg.isPresent())
     {
-      LocalizableMessage message = ERR_INSTALLDS_NO_ROOT_PASSWORD.get(
+      errorMessages.add(ERR_INSTALLDS_NO_ROOT_PASSWORD.get(
           directoryManagerPwdStringArg.getLongIdentifier(),
-          directoryManagerPwdFileArg.getLongIdentifier());
-      errorMessages.add(message);
+          directoryManagerPwdFileArg.getLongIdentifier()));
     }
   }
 
@@ -503,44 +499,20 @@
    */
   private void checkProvidedPorts(Collection<LocalizableMessage> errorMessages)
   {
-    /**
-     * Check that the provided ports do not match.
-     */
     try
     {
       Set<Integer> ports = new HashSet<Integer>();
       ports.add(ldapPortArg.getIntValue());
 
-      if (ports.contains(adminConnectorPortArg.getIntValue()))
-      {
-        errorMessages.add(ERR_CONFIGDS_PORT_ALREADY_SPECIFIED.get(adminConnectorPortArg.getIntValue()));
-      }
-      else
-      {
-        ports.add(adminConnectorPortArg.getIntValue());
-      }
-
+      checkPortAlreadyUsed(ports, adminConnectorPortArg.getIntValue(), errorMessages,
+          ERR_CONFIGDS_PORT_ALREADY_SPECIFIED);
       if (jmxPortArg.isPresent())
       {
-        if (ports.contains(jmxPortArg.getIntValue()))
-        {
-          errorMessages.add(ERR_CONFIGDS_PORT_ALREADY_SPECIFIED.get(jmxPortArg.getIntValue()));
-        }
-        else
-        {
-          ports.add(jmxPortArg.getIntValue());
-        }
+        checkPortAlreadyUsed(ports, jmxPortArg.getIntValue(), errorMessages, ERR_CONFIGDS_PORT_ALREADY_SPECIFIED);
       }
       if (ldapsPortArg.isPresent())
       {
-        if (ports.contains(ldapsPortArg.getIntValue()))
-        {
-          errorMessages.add(ERR_CONFIGDS_PORT_ALREADY_SPECIFIED.get(ldapsPortArg.getIntValue()));
-        }
-        else
-        {
-          ports.add(ldapsPortArg.getIntValue());
-        }
+        checkPortAlreadyUsed(ports, ldapsPortArg.getIntValue(), errorMessages, ERR_CONFIGDS_PORT_ALREADY_SPECIFIED);
       }
     }
     catch (ArgumentException ae)
@@ -550,6 +522,19 @@
     }
   }
 
+  private void checkPortAlreadyUsed(Set<Integer> ports, int port, Collection<LocalizableMessage> errorMessages,
+      Arg1<Object> errorMsg)
+  {
+    if (ports.contains(port))
+    {
+      errorMessages.add(errorMsg.get(port));
+    }
+    else
+    {
+      ports.add(port);
+    }
+  }
+
   /**
    * Checks that there are no conflicts with the import data arguments.
    * @param errorMessages the list of messages to which we add the error
@@ -563,55 +548,34 @@
     {
       if (importLDIFArg.isPresent())
       {
-        LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-                addBaseEntryArg.getLongIdentifier(),
-                importLDIFArg.getLongIdentifier());
-        errorMessages.add(message);
+        errorMessages.add(conflictingArgs(addBaseEntryArg, importLDIFArg));
       }
       else if (sampleDataArg.isPresent())
       {
-        LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-                addBaseEntryArg.getLongIdentifier(),
-                sampleDataArg.getLongIdentifier());
-        errorMessages.add(message);
+        errorMessages.add(conflictingArgs(addBaseEntryArg, sampleDataArg));
       }
     }
     else if (importLDIFArg.isPresent() && sampleDataArg.isPresent())
     {
-      LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-              importLDIFArg.getLongIdentifier(),
-              sampleDataArg.getLongIdentifier());
-      errorMessages.add(message);
+      errorMessages.add(conflictingArgs(importLDIFArg, sampleDataArg));
     }
 
     if (rejectedImportFileArg.isPresent() && addBaseEntryArg.isPresent())
     {
-      LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-          addBaseEntryArg.getLongIdentifier(),
-          rejectedImportFileArg.getLongIdentifier());
-      errorMessages.add(message);
+      errorMessages.add(conflictingArgs(addBaseEntryArg, rejectedImportFileArg));
     }
     else if (rejectedImportFileArg.isPresent() && sampleDataArg.isPresent())
     {
-      LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-          rejectedImportFileArg.getLongIdentifier(),
-          sampleDataArg.getLongIdentifier());
-      errorMessages.add(message);
+      errorMessages.add(conflictingArgs(rejectedImportFileArg, sampleDataArg));
     }
 
     if (skippedImportFileArg.isPresent() && addBaseEntryArg.isPresent())
     {
-      LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-          addBaseEntryArg.getLongIdentifier(),
-          skippedImportFileArg.getLongIdentifier());
-      errorMessages.add(message);
+      errorMessages.add(conflictingArgs(addBaseEntryArg, skippedImportFileArg));
     }
     else if (skippedImportFileArg.isPresent() && sampleDataArg.isPresent())
     {
-      LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(
-          skippedImportFileArg.getLongIdentifier(),
-          sampleDataArg.getLongIdentifier());
-      errorMessages.add(message);
+      errorMessages.add(conflictingArgs(skippedImportFileArg, sampleDataArg));
     }
 
     if (noPromptArg.isPresent() && !baseDNArg.isPresent() &&
@@ -629,6 +593,11 @@
     }
   }
 
+  private LocalizableMessage conflictingArgs(Argument arg1, Argument arg2)
+  {
+    return ERR_TOOL_CONFLICTING_ARGS.get(arg1.getLongIdentifier(), arg2.getLongIdentifier());
+  }
+
   /**
    * Checks that there are no conflicts with the security arguments.
    * If we are in no prompt mode, check that all the information required has
@@ -640,8 +609,7 @@
    */
   private void checkSecurityArguments(Collection<LocalizableMessage> errorMessages)
   {
-    boolean certificateRequired = ldapsPortArg.isPresent() ||
-    enableStartTLSArg.isPresent();
+    boolean certificateRequired = ldapsPortArg.isPresent() || enableStartTLSArg.isPresent();
 
     int certificateType = 0;
     if (generateSelfSignedCertificateArg.isPresent())
@@ -670,8 +638,7 @@
       errorMessages.add(ERR_INSTALLDS_SEVERAL_CERTIFICATE_TYPE_SPECIFIED.get());
     }
 
-    if (certificateRequired && noPromptArg.isPresent() &&
-        (certificateType == 0))
+    if (certificateRequired && noPromptArg.isPresent() && certificateType == 0)
     {
       errorMessages.add(
           ERR_INSTALLDS_CERTIFICATE_REQUIRED_FOR_SSL_OR_STARTTLS.get());
@@ -685,29 +652,26 @@
         if (keyStorePasswordArg.isPresent() &&
             keyStorePasswordFileArg.isPresent())
         {
-          LocalizableMessage message = ERR_INSTALLDS_TWO_CONFLICTING_ARGUMENTS.get(
+          errorMessages.add(ERR_INSTALLDS_TWO_CONFLICTING_ARGUMENTS.get(
               keyStorePasswordArg.getLongIdentifier(),
-              keyStorePasswordFileArg.getLongIdentifier());
-          errorMessages.add(message);
+              keyStorePasswordFileArg.getLongIdentifier()));
         }
 
         // Check that we have one password in no prompt mode.
         if (noPromptArg.isPresent() && !keyStorePasswordArg.isPresent() &&
             !keyStorePasswordFileArg.isPresent())
         {
-          LocalizableMessage message = ERR_INSTALLDS_NO_KEYSTORE_PASSWORD.get(
+          errorMessages.add(ERR_INSTALLDS_NO_KEYSTORE_PASSWORD.get(
               keyStorePasswordArg.getLongIdentifier(),
-              keyStorePasswordFileArg.getLongIdentifier());
-          errorMessages.add(message);
+              keyStorePasswordFileArg.getLongIdentifier()));
         }
       }
       if (noPromptArg.isPresent() && !ldapsPortArg.isPresent() &&
           !enableStartTLSArg.isPresent())
       {
-        LocalizableMessage message = ERR_INSTALLDS_SSL_OR_STARTTLS_REQUIRED.get(
+        errorMessages.add(ERR_INSTALLDS_SSL_OR_STARTTLS_REQUIRED.get(
             ldapsPortArg.getLongIdentifier(),
-            enableStartTLSArg.getLongIdentifier());
-        errorMessages.add(message);
+            enableStartTLSArg.getLongIdentifier()));
       }
     }
   }

--
Gitblit v1.10.0