mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Gaetan Boismal
27.02.2015 0fd845d18cfaf23fc9f54e92775c735955e4e859
OPENDJ-2027 CR-7646 Change tools message on error

This commit makes all tools consistent in the way that if no arguments are provided on the command line (or only the non prompt argument for interactive tools), tool prints the error and the help reference message on error stream.
Changes details:
* ArgumentParser
** Create method displayMessageAndUsageReference(), this method is used by tools to print both an error message and the help usage reference message
** getHelpUsageReference() has been moved from SubCommandArgumentParser

* DSConfig
** displayErrorMessageAndUsageReference() has been moved to ArgumentParser

* CreateRCScript
** Moves the server root path check after the argument parsing in order to have a consistent error message if arguments are invalid.

* RebuildIndex
* VerifyIndex
** Removed dead code which printed usage if no args were provided (if so, an argument exception is raised before).

* MakeLDIF
** Add a main method for test purpose

* ArgumentParserToolsTestCase
** Test that tools are consistent if an invalid argument is provided or if no args are provided.

Tools modified by this commit are the following:
Server tools
* Does not print usage anymore
** backup
** base64 (only if no args are provided)
** control-panel
** create-rc-script
** dbtest
** dsjavaproperties
** dsreplication
** encode-password
** export-ldif
** import-ldif
** ldapcompare
** ldapdelete
** ldapmodify
** ldappasswordmodify
** ldapsearch
** ldif-diff
** ldifmodify
** ldifsearch
** make-ldif
** manage-account
** manage-tasks
** rebuild-index
** restore
** setup
** start-ds
** status
** stop-ds
** uninstall
** upgrade
** verify-index

* Usage reference message added
** base64 (only if invalid args are provided)

SDK tools
* Does not print usage anymore
** addrate
** makeldif

* Usage reference message added
** authrate
** ldapcompare
** ldapmodify
** ldappasswordmodify
** ldapsearch
** ldifdiff
** ldifmodify
** ldifsearch
** modrate
** searchrate
1 files added
61 files modified
841 ■■■■■ changed files
opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java 29 ●●●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java 2 ●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java 14 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java 20 ●●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AddRate.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java 21 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java 6 ●●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDIFDiff.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDIFModify.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDIFSearch.java 6 ●●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/MakeLDIF.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java 3 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java 4 ●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AuthRateITCase.java 2 ●●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPCompareITCase.java 7 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchITCase.java 7 ●●●● patch | view | raw | blame | history
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/MakeLDIFITCase.java 11 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ControlPanelLauncher.java 5 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallCliHelper.java 22 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallLauncher.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java 6 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java 8 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/plugins/profiler/ProfileViewer.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/BackUpDB.java 24 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureDS.java 5 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureWindowsService.java 9 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java 23 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/EncodePassword.java 9 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java 13 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java 5 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPCompare.java 8 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPDelete.java 16 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPModify.java 16 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPPasswordModify.java 18 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java 14 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java 6 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageAccount.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageTasks.java 4 ●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java 33 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/StopDS.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java 14 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/WaitForFileDelete.java 5 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java 32 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java 22 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCli.java 22 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java 8 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeCli.java 11 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/Base64.java 2 ●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/EMailMessage.java 2 ●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/args/LDAPConnectionArgumentParser.java 28 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/tools/ArgumentParserToolsTestCase.java 244 ●●●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
@@ -35,6 +35,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
@@ -1800,6 +1801,34 @@
    }
    /**
     * Displays the provided message on the provided stream followed by a help usage reference.
     *
     * @param printStream
     *            The stream to print error message and help reference message.
     * @param message
     *            The error message to print.
     */
    public void displayMessageAndUsageReference(final PrintStream printStream, final LocalizableMessage message) {
        printWrappedText(printStream, message);
        printStream.println();
        printWrappedText(printStream, getHelpUsageReference());
    }
    /**
     * Retrieves a string describing how the user can get more help.
     *
     * @return A string describing how the user can get more help.
     */
    public LocalizableMessage getHelpUsageReference() {
        setUsageOrVersionDisplayed(true);
        LocalizableMessageBuilder buffer = new LocalizableMessageBuilder();
        buffer.append(INFO_GLOBAL_HELP_REFERENCE.get(getScriptNameOrJava()));
        buffer.append(EOL);
        return buffer.toMessage();
    }
    /**
     * Get the password which has to be used for the command without prompting the user. If no password was specified,
     * return null.
     *
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java
@@ -668,7 +668,7 @@
     *
     * @return The error stream that should be used with this application.
     */
    private PrintStream getErrStream() {
    protected PrintStream getErrStream() {
        if (isInteractive()) {
            return out;
        }
opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
@@ -860,20 +860,6 @@
    }
    /**
     * Retrieves a string describing how the user can get more help.
     *
     * @return A string describing how the user can get more help.
     */
    public LocalizableMessage getHelpUsageReference() {
        setUsageOrVersionDisplayed(true);
        LocalizableMessageBuilder buffer = new LocalizableMessageBuilder();
        buffer.append(INFO_GLOBAL_HELP_REFERENCE.get(getScriptNameOrJava()));
        buffer.append(EOL);
        return buffer.toMessage();
    }
    /**
     * Adds the provided subcommand to this argument parser. This is only intended for use by the
     * <CODE>SubCommand</CODE> constructor and does not do any validation of its own to ensure that there are no
     * conflicts with the subcommand or any of its arguments.
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -963,13 +963,6 @@
        return verboseArgument.isPresent();
    }
    /** Displays the provided error message followed by a help usage reference. */
    private void displayErrorMessageAndUsageReference(LocalizableMessage message) {
        errPrintln(message);
        errPrintln();
        errPrintln(parser.getHelpUsageReference());
    }
    /**
     * Registers the global arguments with the argument parser.
     *
@@ -1123,7 +1116,7 @@
            parser.parseArguments(args);
            checkForConflictingArguments();
        } catch (ArgumentException ae) {
            displayErrorMessageAndUsageReference(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            parser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ReturnCode.CONFLICTING_ARGS.get();
        }
@@ -1150,7 +1143,7 @@
        try {
            factory = new LDAPManagementContextFactory(cfp);
        } catch (ArgumentException e) {
            displayErrorMessageAndUsageReference(ERR_ERROR_PARSING_ARGS.get(e.getMessage()));
            parser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(e.getMessage()));
            return ReturnCode.CONFLICTING_ARGS.get();
        }
@@ -1167,8 +1160,8 @@
                // Top-level interactive mode.
                retCode = runInteractiveMode();
            } else {
                displayErrorMessageAndUsageReference(
                    ERR_ERROR_PARSING_ARGS.get(ERR_DSCFG_ERROR_MISSING_SUBCOMMAND.get()));
                parser.displayMessageAndUsageReference(
                        getErrStream(), ERR_ERROR_PARSING_ARGS.get(ERR_DSCFG_ERROR_MISSING_SUBCOMMAND.get()));
                retCode = ReturnCode.ERROR_USER_DATA.get();
            }
        } else {
@@ -1277,7 +1270,10 @@
        try {
            // Force retrieval of management context.
            factory.getManagementContext(app);
        } catch (ArgumentException | ClientException e) {
        } catch (ArgumentException e) {
            parser.displayMessageAndUsageReference(getErrStream(), e.getMessageObject());
            return ReturnCode.ERROR_USER_DATA.get();
        } catch (ClientException e) {
            app.errPrintln(e.getMessageObject());
            return ReturnCode.ERROR_UNEXPECTED.get();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AddRate.java
@@ -503,8 +503,7 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
            runner.validate(deleteMode, deleteSizeThreshold, deleteAgeThreshold, noPurgeArgument);
        } catch (final ArgumentException ae) {
            errPrintln(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            errPrintln(argParser.getUsageMessage());
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
@@ -490,8 +490,7 @@
                        .raw("Authentication information must be provided to use this tool"));
            }
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java
@@ -226,19 +226,20 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
        try {
            final int versionNumber = version.getIntValue();
            if (versionNumber != 2 && versionNumber != 3) {
                errPrintln(ERR_DESCRIPTION_INVALID_VERSION.get(String.valueOf(versionNumber)));
                argParser.displayMessageAndUsageReference(
                    getErrStream(), ERR_DESCRIPTION_INVALID_VERSION.get(String.valueOf(versionNumber)));
                return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
            }
        } catch (final ArgumentException ae) {
            errPrintln(ERR_DESCRIPTION_INVALID_VERSION.get(String.valueOf(version.getValue())));
            argParser.displayMessageAndUsageReference(
                getErrStream(), ERR_DESCRIPTION_INVALID_VERSION.get(String.valueOf(version.getValue())));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
@@ -246,8 +247,7 @@
        final ArrayList<String> attrAndDNStrings = argParser.getTrailingArguments();
        if (attrAndDNStrings.isEmpty()) {
            final LocalizableMessage message = ERR_LDAPCOMPARE_NO_ATTR.get();
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_LDAPCOMPARE_NO_ATTR.get());
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
@@ -258,23 +258,22 @@
        // If no DNs were provided, then exit with an error.
        if (dnStrings.isEmpty() && !filename.isPresent()) {
            errPrintln(ERR_LDAPCOMPARE_NO_DNS.get());
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_LDAPCOMPARE_NO_DNS.get());
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
        /* If trailing DNs were provided and the filename argument was also
         provided, exit with an error.*/
        if (!dnStrings.isEmpty() && filename.isPresent()) {
            errPrintln(ERR_LDAPCOMPARE_FILENAME_AND_DNS.get());
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_LDAPCOMPARE_FILENAME_AND_DNS.get());
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
        // parse the attribute string
        final int idx = attributeString.indexOf(":");
        if (idx == -1) {
            final LocalizableMessage message =
                    ERR_LDAPCOMPARE_INVALID_ATTR_STRING.get(attributeString);
            errPrintln(message);
            argParser.displayMessageAndUsageReference(
                getErrStream(), ERR_LDAPCOMPARE_INVALID_ATTR_STRING.get(attributeString));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
        final String attributeType = attributeString.substring(0, idx);
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
@@ -369,8 +369,7 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java
@@ -196,8 +196,7 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java
@@ -446,8 +446,7 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
@@ -507,8 +506,7 @@
        }
        if (filters.isEmpty()) {
            errPrintln(ERR_SEARCH_NO_FILTERS.get());
            errPrintln(argParser.getUsageMessage());
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_SEARCH_NO_FILTERS.get());
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDIFDiff.java
@@ -116,8 +116,7 @@
                return ResultCode.SUCCESS.intValue();
            }
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDIFModify.java
@@ -127,8 +127,7 @@
                return ResultCode.SUCCESS.intValue();
            }
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDIFSearch.java
@@ -168,8 +168,7 @@
                return ResultCode.SUCCESS.intValue();
            }
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
@@ -224,8 +223,7 @@
        }
        if (filters.isEmpty()) {
            errPrintln(ERR_SEARCH_NO_FILTERS.get());
            errPrintln(argParser.getUsageMessage());
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_SEARCH_NO_FILTERS.get());
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/MakeLDIF.java
@@ -128,8 +128,7 @@
        try {
            argParser.parseArguments(args);
        } catch (ArgumentException ae) {
            errPrintln(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            errPrintln(argParser.getUsageMessage());
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return EXIT_CODE_FAILURE;
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java
@@ -230,8 +230,7 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
            runner.validate();
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java
@@ -292,8 +292,7 @@
            connectionFactory = connectionFactoryProvider.getAuthenticatedConnectionFactory();
            runner.validate();
        } catch (final ArgumentException ae) {
            final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
            errPrintln(message);
            argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
            return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
        }
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java
@@ -28,6 +28,7 @@
import static org.fest.assertions.Assertions.*;
import static org.forgerock.util.Utils.*;
import static com.forgerock.opendj.cli.CliMessages.*;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
import java.io.PrintStream;
@@ -88,7 +89,8 @@
            { args("-C", "off", "-s", "30000", TEMPLATE_NAME), ERR_ADDRATE_DELMODE_OFF_THRESHOLD_ON.get() },
            { args("-C", "fifo", "-a", "3", "-s", "20000", TEMPLATE_NAME), ERR_ADDRATE_THRESHOLD_SIZE_AND_AGE.get() },
            { args("-C", "random", "-a", "3", TEMPLATE_NAME), ERR_ADDRATE_DELMODE_RAND_THRESHOLD_AGE.get() },
            { args("-s", "999", TEMPLATE_NAME), ERR_ADDRATE_SIZE_THRESHOLD_LOWER_THAN_ITERATIONS.get() }
            { args("-s", "999", TEMPLATE_NAME), ERR_ADDRATE_SIZE_THRESHOLD_LOWER_THAN_ITERATIONS.get() },
            { args("-42"), INFO_GLOBAL_HELP_REFERENCE.get("java " + AddRate.class.getCanonicalName()) }
        };
    }
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AuthRateITCase.java
@@ -25,6 +25,7 @@
 */
package com.forgerock.opendj.ldap.tools;
import static com.forgerock.opendj.cli.CliMessages.*;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_ERROR_PARSING_ARGS;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_TOOL_WARMING_UP;
import static org.fest.assertions.Assertions.assertThat;
@@ -45,6 +46,7 @@
    public Object[][] authRateArgs() throws Exception {
        return new Object[][] {
            { args(""), "", ERR_ERROR_PARSING_ARGS.get("") },
            { args("-42"), "", INFO_GLOBAL_HELP_REFERENCE.get("java " + AuthRate.class.getCanonicalName()) },
            // Warm-up test case
            {
                args("-h", TestCaseUtils.getServerSocketAddress().getHostName(),
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPCompareITCase.java
@@ -25,6 +25,7 @@
 */
package com.forgerock.opendj.ldap.tools;
import static com.forgerock.opendj.cli.CliMessages.*;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_COMPARE_OPERATION_RESULT_FALSE;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_COMPARE_OPERATION_RESULT_TRUE;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_LDAPCOMPARE_TOOL_DESCRIPTION;
@@ -42,7 +43,7 @@
public class LDAPCompareITCase extends ToolsITCase {
    private static final int NB_RAND_SIMPLE_COMPARE = 10;
    private static final int NB_OTHER_SIMPLE_SEARCH = 1;
    private static final int NB_OTHER_SIMPLE_SEARCH = 2;
    @DataProvider
    public Object[][] ldapCompareArgs() throws Exception {
@@ -53,6 +54,10 @@
        // Check if the help message is correctly prompted
        data[0] = new Object[] { args("--help"), INFO_LDAPCOMPARE_TOOL_DESCRIPTION.get(), "" };
        // Check if the help reference message is prompted if arguments failed to be parsed
        data[1] = new Object[] {
            args("-42"), "", INFO_GLOBAL_HELP_REFERENCE.get("java " + LDAPCompare.class.getCanonicalName()) };
        // Perform some basic comparison on random user from the test server
        for (int i = 0; i < NB_RAND_SIMPLE_COMPARE; i++) {
            randUIDs[i] = Math.round(rand.nextInt(1000));
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/LDAPSearchITCase.java
@@ -25,6 +25,7 @@
 */
package com.forgerock.opendj.ldap.tools;
import static com.forgerock.opendj.cli.CliMessages.*;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_ERROR_PARSING_ARGS;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_TOOL_RESULT_CODE;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_LDAPSEARCH_MATCHING_ENTRY_COUNT;
@@ -47,7 +48,7 @@
@SuppressWarnings("javadoc")
public class LDAPSearchITCase extends ToolsITCase {
    private static final int NB_RAND_SIMPLE_SEARCH = 10;
    private static final int NB_OTHER_SIMPLE_SEARCH = 2;
    private static final int NB_OTHER_SIMPLE_SEARCH = 3;
    @DataProvider
    public Object[][] ldapSearchArgs() throws Exception {
@@ -60,6 +61,10 @@
        // ldapsearch command
        data[1] = new Object[] { args(""), "", ERR_ERROR_PARSING_ARGS.get("") };
        // Check if the help reference message is prompted if arguments failed to be parsed
        data[2] = new Object[] {
            args("-42"), "", INFO_GLOBAL_HELP_REFERENCE.get("java " + LDAPSearch.class.getCanonicalName()) };
        // Perform some basic ldapsearch for random user in the test server
        for (int i = 0; i < NB_RAND_SIMPLE_SEARCH; i++) {
            long userID = new Random().nextInt(1000);
opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/MakeLDIFITCase.java
@@ -21,7 +21,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2013-2014 ForgeRock AS.
 *      Copyright 2013-2015 ForgeRock AS.
 */
package com.forgerock.opendj.ldap.tools;
@@ -29,6 +29,7 @@
import static org.forgerock.util.Utils.*;
import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_GLOBAL_HELP_REFERENCE;
import java.io.PrintStream;
@@ -82,11 +83,11 @@
        return new Object[][] {
            { // check that usage is written to output when arguments are invalid
              args(),
              expectedOutput(INFO_MAKELDIF_TOOL_DESCRIPTION.get()) },
              expectedOutput(INFO_GLOBAL_HELP_REFERENCE.get("java " + MakeLDIF.class.getCanonicalName())) },
            { // check that there is an argument error when no arg provided
              args(),
              expectedOutput(ERR_ERROR_PARSING_ARGS.get("")) },
            { // Check if the help reference message is prompted if arguments failed to be parsed
              args("-42"),
              expectedOutput(INFO_GLOBAL_HELP_REFERENCE.get("java " + MakeLDIF.class.getCanonicalName())) },
            { args("-r", "unknown/path" , "example.template"),
              expectedOutput(ERR_LDIF_GEN_TOOL_NO_SUCH_RESOURCE_DIRECTORY.get("unknown/path")) },
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ControlPanelLauncher.java
@@ -92,10 +92,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      System.err.println(message);
      System.out.println(LocalizableMessage.raw(argParser.getUsage()));
      argParser.displayMessageAndUsageReference(System.err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(ErrorReturnCode.ERROR_PARSING_ARGS.getReturnCode());
    }
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallCliHelper.java
@@ -26,6 +26,14 @@
 */
package org.opends.guitools.uninstaller;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.util.ConnectionUtils.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.Utils.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
@@ -77,14 +85,6 @@
import com.forgerock.opendj.cli.MenuResult;
import com.forgerock.opendj.cli.ReturnCode;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.Utils.*;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.util.ConnectionUtils.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
/**
 * The class used to provide some CLI interface in the uninstall.
 *
@@ -888,7 +888,11 @@
        userData.setLocalServerUrl(adminConnectorUrl);
        couldConnect = true;
      }
      catch (ArgumentException | ClientException e) {
      catch (ArgumentException e)
      {
        parser.displayMessageAndUsageReference(getErrStream(), e.getMessageObject());
      }
      catch (ClientException e) {
        printErrorMessage(e.getMessageObject());
        println();
      }
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallLauncher.java
@@ -127,11 +127,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      System.err.println(message);
      System.err.println();
      System.err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(System.err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(ReturnCode.USER_DATA_ERROR.getReturnCode());
    }
  }
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java
@@ -159,11 +159,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      System.err.println(message);
      System.err.println();
      System.err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(System.err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(ReturnCode.USER_DATA_ERROR.getReturnCode());
    }
    catch (IncompatibleVersionException ive)
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java
@@ -377,8 +377,7 @@
    try {
      parser.parseArguments(args);
    } catch (ArgumentException ae) {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(parser.getUsage());
      parser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
@@ -490,8 +489,7 @@
    // Make sure that we have a sub-command.
    if (parser.getSubCommand() == null)
    {
      printWrappedText(err, ERR_DBTEST_MISSING_SUBCOMMAND.get());
      err.println(parser.getUsage());
      parser.displayMessageAndUsageReference(err, ERR_DBTEST_MISSING_SUBCOMMAND.get());
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -7175,9 +7175,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message = ERR_DSCORE_ERROR_PARSING_ARGS.get(ae.getMessage());
      System.err.println(message);
      System.err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(System.err, ERR_DSCORE_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(1);
    }
@@ -7248,9 +7246,7 @@
      return;
    }
    else if (noDetach.isPresent() && timeout.isPresent()) {
      LocalizableMessage message = ERR_DSCORE_ERROR_NODETACH_TIMEOUT.get();
      System.err.println(message);
      System.err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(System.err, ERR_DSCORE_ERROR_NODETACH_TIMEOUT.get());
      System.exit(1);
    }
opendj-server-legacy/src/main/java/org/opends/server/plugins/profiler/ProfileViewer.java
@@ -152,11 +152,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message =
              ERR_PROFILEVIEWER_ERROR_PARSING_ARGS.get(ae.getMessage());
      System.err.println(message);
      System.err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(System.err, ERR_PROFILEVIEWER_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(1);
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/BackUpDB.java
@@ -292,8 +292,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
    catch (ClientException ce)
@@ -317,17 +316,15 @@
    {
      if (backendID.isPresent())
      {
        printWrappedText(err, ERR_BACKUPDB_CANNOT_MIX_BACKUP_ALL_AND_BACKEND_ID.get(
        argParser.displayMessageAndUsageReference(err, ERR_BACKUPDB_CANNOT_MIX_BACKUP_ALL_AND_BACKEND_ID.get(
                backUpAll.getLongIdentifier(), backendID.getLongIdentifier()));
        err.println(argParser.getUsage());
        return 1;
      }
    }
    else if (! backendID.isPresent())
    {
      printWrappedText(err, ERR_BACKUPDB_NEED_BACKUP_ALL_OR_BACKEND_ID.get(
      argParser.displayMessageAndUsageReference(err, ERR_BACKUPDB_NEED_BACKUP_ALL_OR_BACKEND_ID.get(
              backUpAll.getLongIdentifier(), backendID.getLongIdentifier()));
      err.println(argParser.getUsage());
      return 1;
    }
    else
@@ -345,8 +342,8 @@
      }
      if (!repeatedBackendIds.isEmpty())
      {
        printWrappedText(err, ERR_BACKUPDB_REPEATED_BACKEND_ID.get(Utils.joinAsString(", ", repeatedBackendIds)));
        err.println(argParser.getUsage());
        argParser.displayMessageAndUsageReference(err,
            ERR_BACKUPDB_REPEATED_BACKEND_ID.get(Utils.joinAsString(", ", repeatedBackendIds)));
        return 1;
      }
    }
@@ -355,9 +352,8 @@
    // incremental backup.
    if (incrementalBaseID.isPresent() && ! incremental.isPresent())
    {
      printWrappedText(err, ERR_BACKUPDB_INCREMENTAL_BASE_REQUIRES_INCREMENTAL.get(
      argParser.displayMessageAndUsageReference(err, ERR_BACKUPDB_INCREMENTAL_BASE_REQUIRES_INCREMENTAL.get(
              incrementalBaseID.getLongIdentifier(), incremental.getLongIdentifier()));
      err.println(argParser.getUsage());
      return 1;
    }
@@ -366,9 +362,8 @@
    //  are present, infer an offline backup.
    if ((encrypt.isPresent() || signHash.isPresent())
            && ! argParser.connectionArgumentsPresent()) {
      printWrappedText(err, ERR_BACKUPDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE.get(
      argParser.displayMessageAndUsageReference(err, ERR_BACKUPDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE.get(
              encrypt.getLongIdentifier(), signHash.getLongIdentifier()));
      err.println(argParser.getUsage());
      return 1;
    }
@@ -376,9 +371,8 @@
    // was given.
    if (signHash.isPresent() && !hash.isPresent())
    {
      printWrappedText(
              err, ERR_BACKUPDB_SIGN_REQUIRES_HASH.get(signHash.getLongIdentifier(), hash.getLongIdentifier()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err,
          ERR_BACKUPDB_SIGN_REQUIRES_HASH.get(signHash.getLongIdentifier(), hash.getLongIdentifier()));
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureDS.java
@@ -343,9 +343,12 @@
    {
     if (e.isWrongUsage())
     {
       err.println(argParser.getUsage());
       argParser.displayMessageAndUsageReference(err, e.getErrorMessage());
     }
     else
     {
     printWrappedText(err, e.getErrorMessage());
     }
     return e.getErrorCode();
    }
    finally
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureWindowsService.java
@@ -205,8 +205,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return ERROR;
    }
@@ -234,10 +233,8 @@
      }
      if (nArgs != 1)
      {
        LocalizableMessage message = nArgs == 0 ? ERR_CONFIGURE_WINDOWS_SERVICE_TOO_FEW_ARGS.get()
                                                : ERR_CONFIGURE_WINDOWS_SERVICE_TOO_MANY_ARGS.get();
        printWrappedText(err, message);
        err.println(argParser.getUsage());
        argParser.displayMessageAndUsageReference(err, nArgs == 0 ? ERR_CONFIGURE_WINDOWS_SERVICE_TOO_FEW_ARGS.get()
                                                                  : ERR_CONFIGURE_WINDOWS_SERVICE_TOO_MANY_ARGS.get());
        return ERROR;
      }
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java
@@ -101,23 +101,12 @@
    PrintStream err = NullOutputStream.wrapOrNullStream(errStream);
    JDKLogging.disableLogging();
    EmbeddedUtils.initializeForClientUse();
    if (! OperatingSystem.isUnixBased())
    {
      printWrappedText(err, ERR_CREATERC_ONLY_RUNS_ON_UNIX.get());
      return 1;
    }
    File serverRoot = DirectoryServer.getEnvironmentConfig().getServerRoot();
    if (serverRoot == null)
    {
      printWrappedText(
          err, ERR_CREATERC_UNABLE_TO_DETERMINE_SERVER_ROOT.get(PROPERTY_SERVER_ROOT, ENV_VAR_INSTALL_ROOT));
      return 1;
    }
    LocalizableMessage description = INFO_CREATERC_TOOL_DESCRIPTION.get();
    ArgumentParser argParser =
         new ArgumentParser(CreateRCScript.class.getName(), description, false);
@@ -176,8 +165,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
@@ -186,6 +174,15 @@
      return 0;
    }
    EmbeddedUtils.initializeForClientUse();
    File serverRoot = DirectoryServer.getEnvironmentConfig().getServerRoot();
    if (serverRoot == null)
    {
      printWrappedText(
          err, ERR_CREATERC_UNABLE_TO_DETERMINE_SERVER_ROOT.get(PROPERTY_SERVER_ROOT, ENV_VAR_INSTALL_ROOT));
      return 1;
    }
    // Determine the path to the Java installation that should be used.
    String javaHomeDir;
    if (javaHome.isPresent())
opendj-server-legacy/src/main/java/org/opends/server/tools/EncodePassword.java
@@ -263,8 +263,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return OPERATIONS_ERROR;
    }
@@ -325,8 +324,7 @@
        && !encodedPasswordFile.isPresent()
        && !schemeName.isPresent())
    {
      printWrappedText(err, ERR_ENCPW_NO_SCHEME.get(schemeName.getLongIdentifier()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ENCPW_NO_SCHEME.get(schemeName.getLongIdentifier()));
      return OPERATIONS_ERROR;
    }
@@ -859,9 +857,8 @@
    }
    else
    {
      printWrappedText(err, ERR_ENCPW_NO_CLEAR_PW.get(clearPassword.getLongIdentifier(),
      argParser.displayMessageAndUsageReference(err, ERR_ENCPW_NO_CLEAR_PW.get(clearPassword.getLongIdentifier(),
                            clearPasswordFile.getLongIdentifier(), interactivePassword.getLongIdentifier()));
      err.println(argParser.getUsage());
      return null;
    }
  }
opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java
@@ -328,8 +328,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
    catch (ClientException ce)
opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
@@ -222,8 +222,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
    catch (ClientException ce)
@@ -253,9 +252,8 @@
    }
    else if (! templateFile.isPresent())
    {
      printWrappedText(err, ERR_LDIFIMPORT_MISSING_REQUIRED_ARGUMENT.get(
      argParser.displayMessageAndUsageReference(err, ERR_LDIFIMPORT_MISSING_REQUIRED_ARGUMENT.get(
          ldifFiles.getLongIdentifier(), templateFile.getLongIdentifier()));
      err.println(argParser.getUsage());
      return 1;
    }
@@ -263,9 +261,8 @@
    // "backendID" argument was provided.
    if(!includeBranchStrings.isPresent() && !backendID.isPresent())
    {
      printWrappedText(err, ERR_LDIFIMPORT_MISSING_BACKEND_ARGUMENT.get(
      argParser.displayMessageAndUsageReference(err, ERR_LDIFIMPORT_MISSING_BACKEND_ARGUMENT.get(
          includeBranchStrings.getLongIdentifier(), backendID.getLongIdentifier()));
      err.println(argParser.getUsage());
      return 1;
    }
@@ -274,8 +271,8 @@
    // the task framework.
    if (countRejects.isPresent() && argParser.connectionArgumentsPresent())
    {
      printWrappedText(err, ERR_LDIFIMPORT_COUNT_REJECTS_REQUIRES_OFFLINE.get(countRejects.getLongIdentifier()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_LDIFIMPORT_COUNT_REJECTS_REQUIRES_OFFLINE.get(
          countRejects.getLongIdentifier()));
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
@@ -339,10 +339,7 @@
    }
    catch (final ArgumentException ae)
    {
      println(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      println();
      println(LocalizableMessage.raw(argParser.getUsage()));
      argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return InstallReturnCode.ERROR_USER_DATA.getReturnCode();
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java
@@ -222,11 +222,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      println(message);
      println();
      println(LocalizableMessage.raw(argParser.getUsage()));
      argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return ErrorReturnCode.ERROR_USER_DATA.getReturnCode();
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPCompare.java
@@ -657,8 +657,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -759,7 +758,7 @@
      portNumber = port.getIntValue();
    } catch (ArgumentException ae)
    {
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -774,7 +773,7 @@
      connectionOptions.setVersionNumber(versionNumber);
    } catch(ArgumentException ae)
    {
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -829,7 +828,6 @@
        if(ctrl == null)
        {
          printWrappedText(err, ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString));
          err.println(argParser.getUsage());
          return CLIENT_SIDE_PARAM_ERROR;
        }
        compareOptions.getControls().add(ctrl);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPDelete.java
@@ -559,8 +559,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -587,7 +586,7 @@
    } catch(ArgumentException ae)
    {
      logger.traceException(ae);
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -603,7 +602,7 @@
    } catch(ArgumentException ae)
    {
      logger.traceException(ae);
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -659,7 +658,6 @@
        if(ctrl == null)
        {
          printWrappedText(err, ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString));
          err.println(argParser.getUsage());
          return CLIENT_SIDE_PARAM_ERROR;
        }
        deleteOptions.getControls().add(ctrl);
@@ -778,7 +776,13 @@
                                      lce.getErrorMessage(),
                                      lce.getMatchedDN());
      return lce.getResultCode();
    } catch(Exception e)
    }
    catch(ArgumentException e)
    {
      argParser.displayMessageAndUsageReference(err, e.getMessageObject());
      return 1;
    }
    catch (Exception e)
    {
      logger.traceException(e);
      printWrappedText(err, e.getMessage());
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPModify.java
@@ -879,8 +879,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -906,7 +905,7 @@
    } catch(ArgumentException ae)
    {
      logger.traceException(ae);
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -922,7 +921,7 @@
    } catch(ArgumentException ae)
    {
      logger.traceException(ae);
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -978,7 +977,6 @@
        if(ctrl == null)
        {
          printWrappedText(err, ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString));
          err.println(argParser.getUsage());
          return CLIENT_SIDE_PARAM_ERROR;
        }
        modifyOptions.getControls().add(ctrl);
@@ -1137,7 +1135,13 @@
      logger.traceException(fe);
      printWrappedText(err, fe.getMessage());
      return CLIENT_SIDE_PARAM_ERROR;
    } catch(Exception e)
    }
    catch(ArgumentException e)
    {
      argParser.displayMessageAndUsageReference(err, e.getMessageObject());
      return 1;
    }
    catch(Exception e)
    {
      logger.traceException(e);
      printWrappedText(err, e.getMessage());
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPPasswordModify.java
@@ -426,8 +426,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -492,31 +491,27 @@
    {
      if (!bindPW.isPresent() && !bindPWFile.isPresent())
      {
        printWrappedText(err, ERR_LDAPPWMOD_BIND_DN_AND_PW_MUST_BE_TOGETHER.get());
        err.println(argParser.getUsage());
        argParser.displayMessageAndUsageReference(err, ERR_LDAPPWMOD_BIND_DN_AND_PW_MUST_BE_TOGETHER.get());
        return CLIENT_SIDE_PARAM_ERROR;
      }
    }
    else if (bindPW.isPresent() || bindPWFile.isPresent())
    {
      printWrappedText(err, ERR_LDAPPWMOD_BIND_DN_AND_PW_MUST_BE_TOGETHER.get());
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_LDAPPWMOD_BIND_DN_AND_PW_MUST_BE_TOGETHER.get());
      return CLIENT_SIDE_PARAM_ERROR;
    }
    else
    {
      if (provideDNForAuthzID.isPresent())
      {
        printWrappedText(
            err, ERR_LDAPPWMOD_DEPENDENT_ARGS.get(provideDNForAuthzID.getLongIdentifier(), bindDN.getLongIdentifier()));
        err.println(argParser.getUsage());
        argParser.displayMessageAndUsageReference(err,
            ERR_LDAPPWMOD_DEPENDENT_ARGS.get(provideDNForAuthzID.getLongIdentifier(), bindDN.getLongIdentifier()));
        return CLIENT_SIDE_PARAM_ERROR;
      }
      if (!authzID.isPresent() || (!currentPW.isPresent() && !currentPWFile.isPresent()))
      {
        printWrappedText(err, ERR_LDAPPWMOD_ANON_REQUIRES_AUTHZID_AND_CURRENTPW.get());
        err.println(argParser.getUsage());
        argParser.displayMessageAndUsageReference(err, ERR_LDAPPWMOD_ANON_REQUIRES_AUTHZID_AND_CURRENTPW.get());
        return CLIENT_SIDE_PARAM_ERROR;
      }
    }
@@ -547,7 +542,6 @@
        if(ctrl == null)
        {
          printWrappedText(err, ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString));
          err.println(argParser.getUsage());
          return CLIENT_SIDE_PARAM_ERROR;
        }
        controls.add(ctrl);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java
@@ -1076,8 +1076,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -1149,7 +1148,7 @@
    } catch(ArgumentException ae)
    {
      logger.traceException(ae);
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -1166,7 +1165,7 @@
    } catch(ArgumentException ae)
    {
      logger.traceException(ae);
      printWrappedText(err, ae.getMessage());
      argParser.displayMessageAndUsageReference(err, ae.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -1229,7 +1228,7 @@
      searchOptions.setSizeLimit(sizeLimit.getIntValue());
    } catch(ArgumentException ex1)
    {
      printWrappedText(err, ex1.getMessage());
      argParser.displayMessageAndUsageReference(err, ex1.getMessageObject());
      return CLIENT_SIDE_PARAM_ERROR;
    }
    if (!searchOptions.setSearchScope(searchScope.getValue(), err)
@@ -1246,7 +1245,6 @@
        if(ctrl == null)
        {
          printWrappedText(err, ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString));
          err.println(argParser.getUsage());
          return CLIENT_SIDE_PARAM_ERROR;
        }
        searchOptions.getControls().add(ctrl);
@@ -1257,7 +1255,6 @@
      String authzID=effectiveRightsUser.getValue();
      if (!authzID.startsWith("dn:")) {
        printWrappedText(err, ERR_EFFECTIVERIGHTS_INVALID_AUTHZID.get(authzID));
        err.println(argParser.getUsage());
        return CLIENT_SIDE_PARAM_ERROR;
      }
      Control effectiveRightsControl =
@@ -1578,8 +1575,7 @@
    if(filters.isEmpty())
    {
      printWrappedText(err, ERR_SEARCH_NO_FILTERS.get());
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_SEARCH_NO_FILTERS.get());
      return CLIENT_SIDE_PARAM_ERROR;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java
@@ -266,8 +266,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java
@@ -495,8 +495,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java
@@ -240,8 +240,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -333,8 +332,7 @@
      ArrayList<String> trailingArguments = argParser.getTrailingArguments();
      if (trailingArguments == null || trailingArguments.isEmpty())
      {
        printWrappedText(err, ERR_LDIFSEARCH_NO_FILTER.get());
        err.println(argParser.getUsage());
        argParser.displayMessageAndUsageReference(err, ERR_LDIFSEARCH_NO_FILTER.get());
        return 1;
      }
opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java
@@ -198,8 +198,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageAccount.java
@@ -1197,8 +1197,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -1336,7 +1335,8 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_PWPSTATE_CANNOT_DETERMINE_PORT.get(port.getLongIdentifier(), ae.getMessage()));
      argParser.displayMessageAndUsageReference(
          err, ERR_PWPSTATE_CANNOT_DETERMINE_PORT.get(port.getLongIdentifier(), ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
    catch (LDAPConnectionException lce)
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageTasks.java
@@ -281,9 +281,7 @@
      StaticUtils.checkOnlyOneArgPresent(task, summary, cancel);
    }
    catch (ArgumentException ae) {
      LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      println(message);
      println(argParser.getUsageMessage());
      argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java
@@ -164,8 +164,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
@@ -176,55 +175,43 @@
      return 0;
    }
    // If no arguments were provided, then display usage information and exit.
    final int numArgs = args.length;
    if (numArgs == 0)
    {
      out.println(argParser.getUsage());
      return 1;
    }
    if (indexList.getValues().isEmpty()
        && !rebuildAll.isPresent()
        && !rebuildDegraded.isPresent())
    {
      printWrappedText(err, ERR_REBUILDINDEX_REQUIRES_AT_LEAST_ONE_INDEX.get());
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_REBUILDINDEX_REQUIRES_AT_LEAST_ONE_INDEX.get());
      return 1;
    }
    if (rebuildAll.isPresent() && indexList.isPresent())
    {
      printWrappedText(err, ERR_REBUILDINDEX_REBUILD_ALL_ERROR.get());
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_REBUILDINDEX_REBUILD_ALL_ERROR.get());
      return 1;
    }
    if (rebuildDegraded.isPresent() && indexList.isPresent())
    {
      printWrappedText(err, ERR_REBUILDINDEX_REBUILD_DEGRADED_ERROR.get("index"));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_REBUILDINDEX_REBUILD_DEGRADED_ERROR.get("index"));
      return 1;
    }
    if (rebuildDegraded.isPresent() && clearDegradedState.isPresent())
    {
      printWrappedText(err, ERR_REBUILDINDEX_REBUILD_DEGRADED_ERROR.get("clearDegradedState"));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_REBUILDINDEX_REBUILD_DEGRADED_ERROR.get("clearDegradedState"));
      return 1;
    }
    if (rebuildAll.isPresent() && rebuildDegraded.isPresent())
    {
      printWrappedText(err, ERR_REBUILDINDEX_REBUILD_ALL_DEGRADED_ERROR.get("rebuildDegraded"));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err,
          ERR_REBUILDINDEX_REBUILD_ALL_DEGRADED_ERROR.get("rebuildDegraded"));
      return 1;
    }
    if (rebuildAll.isPresent() && clearDegradedState.isPresent())
    {
      printWrappedText(err, ERR_REBUILDINDEX_REBUILD_ALL_DEGRADED_ERROR.get("clearDegradedState"));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err,
          ERR_REBUILDINDEX_REBUILD_ALL_DEGRADED_ERROR.get("clearDegradedState"));
      return 1;
    }
@@ -691,7 +678,7 @@
      }
      catch (ArgumentException ae)
      {
        printWrappedText(out, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
        argParser.displayMessageAndUsageReference(out, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
        return 1;
      }
opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java
@@ -241,8 +241,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
    catch (ClientException ce)
opendj-server-legacy/src/main/java/org/opends/server/tools/StopDS.java
@@ -403,8 +403,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
@@ -570,7 +569,8 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_STOPDS_CANNOT_DETERMINE_PORT.get(port.getLongIdentifier(), ae.getMessage()));
      argParser.displayMessageAndUsageReference(
          err, ERR_STOPDS_CANNOT_DETERMINE_PORT.get(port.getLongIdentifier(), ae.getMessage()));
      return CLIENT_SIDE_PARAM_ERROR;
    }
    catch (LDAPConnectionException lce)
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
@@ -190,8 +190,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
@@ -203,18 +202,9 @@
      return 0;
    }
    // If no arguments were provided, then display usage information and exit.
    int numArgs = args.length;
    if (numArgs == 0)
    {
      out.println(argParser.getUsage());
      return 1;
    }
    if (cleanMode.isPresent() && indexList.getValues().size() != 1)
    {
      printWrappedText(err, ERR_VERIFYINDEX_VERIFY_CLEAN_REQUIRES_SINGLE_INDEX.get());
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_VERIFYINDEX_VERIFY_CLEAN_REQUIRES_SINGLE_INDEX.get());
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/WaitForFileDelete.java
@@ -242,10 +242,7 @@
    }
    catch (ArgumentException ae)
    {
      LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      println(message);
      println(LocalizableMessage.raw(argParser.getUsage()));
      argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return EXIT_CODE_INTERNAL_ERROR;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -374,9 +374,7 @@
    }
    catch (ArgumentException ae)
    {
      errPrintln(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      errPrintln();
      errPrintln(LocalizableMessage.raw(argParser.getUsage()));
      argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      logger.error(LocalizableMessage.raw("Complete error stack:"), ae);
      return ERROR_USER_DATA;
    }
@@ -1843,9 +1841,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception " + ae));
        errPrintln();
        errPrintln(ae.getMessageObject());
        errPrintln();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        return null;
      }
      firstTry = false;
@@ -1962,9 +1958,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception "+ae));
        errPrintln();
        errPrintln(ae.getMessageObject());
        errPrintln();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        cancelled = true;
      }
    }
@@ -2226,9 +2220,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception "+ae));
        errPrintln();
        errPrintln(ae.getMessageObject());
        errPrintln();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        cancelled = true;
      }
      finally
@@ -2535,9 +2527,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception "+ae));
        errPrintln();
        errPrintln(ae.getMessageObject());
        errPrintln();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        cancelled = true;
      }
    }
@@ -2824,9 +2814,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception " + ae));
        errPrintln();
        errPrintln(ae.getMessageObject());
        errPrintln();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        return null;
      }
    }
@@ -2944,9 +2932,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception "+ae));
        errPrintln();
        errPrintln(ae.getMessageObject());
        errPrintln();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        cancelled = true;
      }
    }
@@ -3020,9 +3006,7 @@
      catch (ArgumentException ae)
      {
        logger.warn(LocalizableMessage.raw("Argument exception "+ae));
        println();
        println(ae.getMessageObject());
        println();
        argParser.displayMessageAndUsageReference(getErrStream(), ae.getMessageObject());
        cancelled = true;
      }
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java
@@ -96,7 +96,24 @@
    }
  }
  /**
   * Provides the command-line arguments to the main application for
   * processing and returns the exit code as an integer.
   *
   * @param args
   *          The set of command-line arguments provided to this
   *          program.
   * @param outStream
   *          The output stream for standard output.
   * @param errStream
   *          The output stream for standard error.
   * @return Zero to indicate that the program completed successfully,
   *         or non-zero to indicate that an error occurred.
   */
  public static int main(final String[] args, final OutputStream outStream, final OutputStream errStream)
  {
    return new MakeLDIF().makeLDIFMain(args, false, false, outStream, errStream);
  }
  /**
   * Creates a new instance of this utility.  It should just be used for
@@ -217,8 +234,7 @@
    }
    catch (ArgumentException ae)
    {
      printWrappedText(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      err.println(argParser.getUsage());
      argParser.displayMessageAndUsageReference(err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return 1;
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCli.java
@@ -104,7 +104,7 @@
 * This class basically is in charge of parsing the data provided by the
 * user in the command line.
 */
class StatusCli extends ConsoleApplication
public class StatusCli extends ConsoleApplication
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -233,10 +233,7 @@
    try {
      argParser.parseArguments(args);
    } catch (ArgumentException ae) {
      println(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      println();
      println(LocalizableMessage.raw(argParser.getUsage()));
      argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return ReturnCode.CLIENT_SIDE_PARAM_ERROR.get();
    }
@@ -297,16 +294,23 @@
      secureArgsList.portArg.setPresent(true);
      secureArgsList.hostNameArg.addValue(secureArgsList.hostNameArg.getDefaultValue());
      secureArgsList.portArg.addValue(Integer.toString(port));
      try
      {
        // We already know if SSL or StartTLS can be used.  If we cannot
        // use them we will not propose them in the connection parameters
        // and if none of them can be used we will just not ask for the
        // protocol to be used.
        final LDAPConnectionConsoleInteraction ci =
            new LDAPConnectionConsoleInteraction(this, argParser.getSecureArgsList());
      try
      {
        ci.run(false);
      }
      catch (ArgumentException e)
      {
        argParser.displayMessageAndUsageReference(getErrStream(), e.getMessageObject());
        return ReturnCode.CLIENT_SIDE_PARAM_ERROR.get();
      }
      try
      {
        if (argParser.isInteractive())
        {
          bindDn = ci.getBindDN();
@@ -324,7 +328,7 @@
          controlInfo.setTrustManager(interactiveTrustManager);
          useInteractiveTrustManager = true;
        }
      } catch (ArgumentException | ClientException e) {
      } catch (ClientException e) {
        println(e.getMessageObject());
        return ReturnCode.CLIENT_SIDE_PARAM_ERROR.get();
      } finally {
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java
@@ -337,10 +337,14 @@
      } catch (LDAPException le) {
        printWrappedText(err, ERR_TASK_TOOL_LDAP_ERROR.get(le.getMessage()));
        ret = 1;
      } catch (ArgumentException | OpenDsException e) {
      } catch (OpenDsException e) {
        printWrappedText(err, e.getMessageObject());
        ret = 1;
      } finally
      } catch (ArgumentException e) {
        argParser.displayMessageAndUsageReference(err, e.getMessageObject());
        ret = 1;
      }
      finally
      {
        if (conn != null)
        {
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeCli.java
@@ -219,14 +219,6 @@
    return acceptLicense.isPresent();
  }
  /** Displays the provided message followed by a help usage reference. */
  private void displayMessageAndUsageReference(final LocalizableMessage message)
  {
    println(message);
    println();
    println(parser.getHelpUsageReference());
  }
  /** Initialize arguments provided by the command line. */
  private void initializeGlobalArguments() throws ArgumentException
  {
@@ -312,8 +304,7 @@
    }
    catch (ArgumentException ae)
    {
      final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
      displayMessageAndUsageReference(message);
      parser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      return EXIT_CODE_ERROR;
    }
opendj-server-legacy/src/main/java/org/opends/server/util/Base64.java
@@ -552,7 +552,7 @@
    }
    catch (ArgumentException ae)
    {
      System.err.println(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      argParser.displayMessageAndUsageReference(System.err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(1);
    }
opendj-server-legacy/src/main/java/org/opends/server/util/EMailMessage.java
@@ -567,7 +567,7 @@
    }
    catch (ArgumentException ae)
    {
      System.err.println(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      argParser.displayMessageAndUsageReference(System.err, ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
      System.exit(1);
    }
opendj-server-legacy/src/main/java/org/opends/server/util/args/LDAPConnectionArgumentParser.java
@@ -297,11 +297,12 @@
   *          stream to write error messages
   * @return LDAPConnection created by this class from parsed arguments
   * @throws LDAPConnectionException
   *           if there was a problem connecting to the server indicated by the
   *           input arguments
   *           if there was a problem connecting to the server
   * @throws ArgumentException
   *           if there was a problem indicated by the input arguments
   */
  public LDAPConnection connect(LDAPConnectionConsoleInteraction ui, PrintStream out, PrintStream err)
      throws LDAPConnectionException
      throws LDAPConnectionException, ArgumentException
  {
    try
    {
@@ -311,19 +312,20 @@
      return connect(ui.getHostName(), ui.getPortNumber(), ui.getBindDN(),
          ui.getBindPassword(), ui.populateLDAPOptions(options), ui.getConnectTimeout(), out, err);
    }
    catch (ArgumentException | OpenDsException e)
    catch (OpenDsException e)
    {
      if (e.getCause() != null && e.getCause().getCause() != null && e.getCause().getCause() instanceof SSLException)
      {
        err.println(ERR_TASKINFO_LDAP_EXCEPTION_SSL.get(ui.getHostName(), ui.getPortNumber()));
      }
      else
      {
        err.println(e.getMessageObject());
      }
    }
      err.println(isSSLException(e) ?
          ERR_TASKINFO_LDAP_EXCEPTION_SSL.get(ui.getHostName(), ui.getPortNumber()) : e.getMessageObject());
    return null;
  }
  }
  private boolean isSSLException(Exception e)
  {
    return e.getCause() != null
        && e.getCause().getCause() != null
        && e.getCause().getCause() instanceof SSLException;
  }
  /**
   * Creates a connection from information provided.
opendj-server-legacy/src/test/java/org/opends/server/tools/ArgumentParserToolsTestCase.java
New file
@@ -0,0 +1,244 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
 * or http://forgerock.org/license/CDDLv1.0.html.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at legal-notices/CDDLv1_0.txt.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Copyright 2015 ForgeRock AS.
 */
package org.opends.server.tools;
import static org.assertj.core.api.Assertions.*;
import static org.forgerock.util.Utils.*;
import static com.forgerock.opendj.cli.CliMessages.*;
import java.io.PrintStream;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.opends.server.backends.jeb.DBTest;
import org.opends.server.tools.dsreplication.ReplicationCliMain;
import org.opends.server.tools.makeldif.MakeLDIF;
import org.opends.server.tools.status.StatusCli;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
 * This class tests that help reference message is prompted for all tools when
 * no arguments are provided or if they failed to be parsed.
 */
public class ArgumentParserToolsTestCase extends ToolsTestCase
{
  private static final boolean ERRORS_ON_STDOUT = false;
  private ByteStringBuilder out;
  private ByteStringBuilder err;
  private PrintStream outStream;
  private PrintStream errStream;
  @BeforeMethod
  private void refreshStreams()
  {
    out = new ByteStringBuilder();
    err = new ByteStringBuilder();
    outStream = new PrintStream(out.asOutputStream());
    errStream = new PrintStream(err.asOutputStream());
  }
  @AfterMethod
  private void validateAndCloseStreams()
  {
    closeSilently(outStream, errStream);
  }
  private void assertToolFailsWithUsage(final int returnCode)
  {
    assertToolFailsWithUsage(returnCode, true);
  }
  private void assertToolFailsWithUsage(final int returnCode, boolean errorsOnStdErr)
  {
    assertThat(returnCode).isNotEqualTo(0);
    assertThat((errorsOnStdErr ? out : err).toString()).isEmpty();
    final String streamToCheck = (errorsOnStdErr ? err : out).toString()
                                                             .replace(System.getProperty("line.separator"), " ");
    assertThat(streamToCheck).matches(".*" + INFO_GLOBAL_HELP_REFERENCE.get("(.*)") + ".*");
    assertThat(streamToCheck).contains(ERR_ERROR_PARSING_ARGS.get(""));
  }
  @DataProvider
  public Object[][] invalidArg() throws Exception
  {
    return new Object[][] { { new String[] { "-42" } } };
  }
  @DataProvider
  public Object[][] invalidArgs() throws Exception
  {
    return new Object[][] { { new String[] { } }, { new String[] { "-42" } } };
  }
  @Test(dataProvider = "invalidArgs")
  public void testBackup(final String[] args)
  {
    assertToolFailsWithUsage(BackUpDB.mainBackUpDB(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testCreateRCScript(final String[] args)
  {
    assertToolFailsWithUsage(CreateRCScript.main(args, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testDBTest(final String[] args)
  {
    assertToolFailsWithUsage(DBTest.main(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testDSJavaProperties(final String[] args)
  {
    assertToolFailsWithUsage(JavaPropertiesTool.mainCLI(args, outStream, errStream, null));
  }
  @Test(dataProvider = "invalidArgs")
  public void testDSReplication(final String[] args)
  {
    assertToolFailsWithUsage(ReplicationCliMain.mainCLI(args, false, outStream, errStream), ERRORS_ON_STDOUT);
  }
  @Test(dataProvider = "invalidArgs")
  public void testEncodePassword(final String[] args)
  {
    assertToolFailsWithUsage(EncodePassword.encodePassword(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testExportLDIF(final String[] args)
  {
    assertToolFailsWithUsage(ExportLDIF.mainExportLDIF(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testImportLDIF(final String[] args)
  {
    assertToolFailsWithUsage(ImportLDIF.mainImportLDIF(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testLDAPCompare(final String[] args)
  {
    assertToolFailsWithUsage(LDAPCompare.mainCompare(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testLDAPDelete(final String[] args)
  {
    assertToolFailsWithUsage(LDAPDelete.mainDelete(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testLDAPModify(final String[] args)
  {
    assertToolFailsWithUsage(LDAPModify.mainModify(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testLDAPPasswordModify(final String[] args)
  {
    assertToolFailsWithUsage(LDAPPasswordModify.mainPasswordModify(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testLDAPSearch(final String[] args)
  {
    assertToolFailsWithUsage(LDAPSearch.mainSearch(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testLDIFDiff(final String[] args)
  {
    assertToolFailsWithUsage(LDIFDiff.mainDiff(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testLDIFModify(final String[] args)
  {
    assertToolFailsWithUsage(LDIFModify.ldifModifyMain(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testLDIFSearch(final String[] args)
  {
    assertToolFailsWithUsage(LDIFSearch.mainSearch(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testListBackends(final String[] args)
  {
    assertToolFailsWithUsage(ListBackends.listBackends(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testMakeLDIF(final String[] args)
  {
    assertToolFailsWithUsage(MakeLDIF.main(args, outStream, errStream));
  }
  @Test(dataProvider = "invalidArgs")
  public void testManageAccount(final String[] args)
  {
    assertToolFailsWithUsage(ManageAccount.main(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testManageTasks(final String[] args)
  {
    assertToolFailsWithUsage(ManageTasks.mainTaskInfo(args, null, outStream, errStream, false), ERRORS_ON_STDOUT);
  }
  @Test(dataProvider = "invalidArgs")
  public void testRebuildIndex(final String[] args)
  {
    assertToolFailsWithUsage(RebuildIndex.mainRebuildIndex(args, false, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testStopDS(final String[] args)
  {
    assertToolFailsWithUsage(StopDS.stopDS(args, outStream, errStream));
  }
  @Test(dataProvider = "invalidArg")
  public void testStatus(final String[] args)
  {
    assertToolFailsWithUsage(StatusCli.mainCLI(args, false, outStream, errStream, null), ERRORS_ON_STDOUT);
  }
  @Test(dataProvider = "invalidArgs")
  public void testVerifyIndex(final String[] args)
  {
    assertToolFailsWithUsage(VerifyIndex.mainVerifyIndex(args, false, outStream, errStream));
  }
}