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

Gaetan Boismal
27.32.2016 df993e4e7a2b5af0c8e0907a80e1a4cef10ee56d
OPENDJSDK-42 cli arguments fluent builder

PR-278 sdk PR-45
Consequences of changes done in sdk PR-45
All Arguments objects are now built with fluent builder.
* An argument has a mandatory long identifier
    * The name attribute has been merged with long identifier and removed
    * Remove useless null checks on argument long identifiers
* Now all argument can be set in a property file.
  The argument property name is always the same as the argument long identifier (i.e can not be set any more)
* Remove the possiblity to set if an argument needs a value.
* For IntegerArgument default lower bound is Integer.MIN_VALUE
and the default upper bound is Integer.MAX_VALUE
* Once every needed attributes are contributed, the argument can be
created by the builder or added to an argument parser or a subcommand.
This commit also includes additional related cleanup.
54 files modified
7166 ■■■■ changed files
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java 99 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java 63 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java 10 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java 31 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java 108 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java 89 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallCliHelper.java 8 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java 4 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallerArgumentParser.java 123 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/admin/client/cli/SecureConnectionCliArgs.java 83 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/admin/client/cli/TaskScheduleArgs.java 85 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java 178 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java 112 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/plugins/profiler/ProfileViewer.java 23 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/BackUpDB.java 163 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureDS.java 235 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureWindowsService.java 39 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java 54 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/EncodePassword.java 148 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java 210 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java 297 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java 78 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java 362 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesToolArgumentParser.java 32 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPCompare.java 367 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPDelete.java 340 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPModify.java 418 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPPasswordModify.java 337 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java 612 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java 127 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java 76 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java 147 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java 60 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageAccount.java 310 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageTasks.java 61 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java 86 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java 88 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/StopDS.java 307 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java 73 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/WaitForFileDelete.java 66 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java 501 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java 190 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java 90 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCli.java 12 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCliArgumentParser.java 13 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskScheduleUserData.java 21 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java 11 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeCli.java 18 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/Base64.java 81 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/EMailMessage.java 84 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/cli/LDAPConnectionConsoleInteraction.java 26 ●●●● patch | view | raw | blame | history
opendj-server/src/main/java/org/forgerock/opendj/server/setup/cli/SetupCli.java 4 ●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2013-2015 ForgeRock AS
 *      Portions Copyright 2013-2016 ForgeRock AS
 */
package org.forgerock.opendj.config.dsconfig;
@@ -917,32 +917,34 @@
        // Build the -t option usage.
        this.typeUsage = getSubTypesUsage(r.getChildDefinition());
        // Create the --property argument which is used to specify
        // property values.
        this.propertySetArgument = new StringArgument(OPTION_DSCFG_LONG_SET, OPTION_DSCFG_SHORT_SET,
                OPTION_DSCFG_LONG_SET, false, true, true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
        this.subCommand.addArgument(this.propertySetArgument);
        // Create the --property argument which is used to specify property values.
        this.propertySetArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_SET)
                        .shortIdentifier(OPTION_DSCFG_SHORT_SET)
                        .description(INFO_DSCFG_DESCRIPTION_PROP_VAL.get())
                        .multiValued()
                        .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
        final StringArgument.Builder typeArgumentBuilder = StringArgument.builder(OPTION_DSCFG_LONG_TYPE)
                .shortIdentifier(OPTION_DSCFG_SHORT_TYPE)
                .valuePlaceholder(INFO_TYPE_PLACEHOLDER.get());
        if (!types.containsKey(DSConfig.GENERIC_TYPE)) {
            // The option is mandatory when non-interactive.
            this.typeArgument = new StringArgument("type", OPTION_DSCFG_SHORT_TYPE, OPTION_DSCFG_LONG_TYPE, false,
                    false, true, INFO_TYPE_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_TYPE.get(r
                            .getChildDefinition().getUserFriendlyName(), typeUsage));
            typeArgumentBuilder.description(INFO_DSCFG_DESCRIPTION_TYPE.get(
                    r.getChildDefinition().getUserFriendlyName(), typeUsage));
        } else {
            // The option has a sensible default "generic".
            this.typeArgument = new StringArgument("type", OPTION_DSCFG_SHORT_TYPE, OPTION_DSCFG_LONG_TYPE, false,
                    false, true, INFO_TYPE_PLACEHOLDER.get(), DSConfig.GENERIC_TYPE, null,
                    INFO_DSCFG_DESCRIPTION_TYPE_DEFAULT.get(r.getChildDefinition().getUserFriendlyName(),
                            DSConfig.GENERIC_TYPE, typeUsage));
            // Hide the option if it defaults to generic and generic is the
            // only possible value.
            typeArgumentBuilder.description(INFO_DSCFG_DESCRIPTION_TYPE_DEFAULT.get(
                                       r.getChildDefinition().getUserFriendlyName(), DSConfig.GENERIC_TYPE, typeUsage))
                               .defaultValue(DSConfig.GENERIC_TYPE);
            // Hide the option if it defaults to generic and generic is the only possible value.
            if (types.size() == 1) {
                this.typeArgument.setHidden(true);
                typeArgumentBuilder.hidden();
            }
        }
        this.subCommand.addArgument(this.typeArgument);
        typeArgument = typeArgumentBuilder.buildAndAddToSubCommand(subCommand);
        // Register the tags associated with the child managed objects.
        addTags(relation.getChildDefinition().getAllTags());
@@ -1144,9 +1146,13 @@
            commandBuilder.addArgument(typeArgument);
        } else {
            // Set the type provided by the user
            StringArgument arg = new StringArgument(typeArgument.getName(), OPTION_DSCFG_SHORT_TYPE,
                    OPTION_DSCFG_LONG_TYPE, false, false, true, INFO_TYPE_PLACEHOLDER.get(),
                    typeArgument.getDefaultValue(), typeArgument.getPropertyName(), typeArgument.getDescription());
            StringArgument arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_TYPE)
                            .shortIdentifier(OPTION_DSCFG_SHORT_TYPE)
                            .description(typeArgument.getDescription())
                            .defaultValue(typeArgument.getDefaultValue())
                            .valuePlaceholder(INFO_TYPE_PLACEHOLDER.get())
                            .buildArgument();
            arg.addValue(getTypeName(d));
            commandBuilder.addArgument(arg);
        }
@@ -1155,9 +1161,13 @@
             * We might have some conflicts in terms of arguments: the user might have provided some values that
             * were not good and then these have overwritten when asking for them interactively: filter them
             */
            StringArgument filteredArg = new StringArgument(OPTION_DSCFG_LONG_SET, OPTION_DSCFG_SHORT_SET,
                    OPTION_DSCFG_LONG_SET, false, true, true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                    INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
            StringArgument filteredArg =
                    StringArgument.builder(OPTION_DSCFG_LONG_SET)
                            .shortIdentifier(OPTION_DSCFG_SHORT_SET)
                            .description(INFO_DSCFG_DESCRIPTION_PROP_VAL.get())
                            .multiValued()
                            .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                            .buildArgument();
            for (String value : propertySetArgument.getValues()) {
                if (canAddValue(commandBuilder, value)) {
                    filteredArg.addValue(value);
@@ -1172,16 +1182,18 @@
        List<Argument> argsCopy = new LinkedList<>(commandBuilder.getArguments());
        for (Argument arg : argsCopy) {
            if (arg != null
                    && (OPTION_DSCFG_LONG_RESET.equals(arg.getName())
                            || OPTION_DSCFG_LONG_REMOVE.equals(arg.getName()))) {
                    && (OPTION_DSCFG_LONG_RESET.equals(arg.getLongIdentifier())
                            || OPTION_DSCFG_LONG_REMOVE.equals(arg.getLongIdentifier()))) {
                commandBuilder.removeArgument(arg);
            }
        }
        if (isNameProvidedInteractively) {
            StringArgument arg = new StringArgument(providedNamingArgName, null, providedNamingArgName, false,
                    true, INFO_NAME_PLACEHOLDER.get(), INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d
                            .getUserFriendlyName()));
            StringArgument arg =
                    StringArgument.builder(providedNamingArgName)
                            .description(INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()))
                            .valuePlaceholder(INFO_NAME_PLACEHOLDER.get())
                            .buildArgument();
            arg.addValue(child.getManagedObjectPath().getName());
            commandBuilder.addArgument(arg);
        } else {
@@ -1201,7 +1213,7 @@
        String propName = value.substring(0, index);
        for (Argument arg : commandBuilder.getArguments()) {
            for (String value2 : arg.getValues()) {
                String prop2Name = getPropName(arg.getName(), value2);
                String prop2Name = getPropName(arg.getLongIdentifier(), value2);
                if (propName.equalsIgnoreCase(prop2Name)) {
                    return false;
                }
@@ -1245,18 +1257,31 @@
        switch (mod.getType()) {
        case ADD:
        case SET:
            arg = new StringArgument(OPTION_DSCFG_LONG_SET, OPTION_DSCFG_SHORT_SET, OPTION_DSCFG_LONG_SET, false, true,
                    true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_SET)
                            .shortIdentifier(OPTION_DSCFG_SHORT_SET)
                            .description(INFO_DSCFG_DESCRIPTION_PROP_VAL.get())
                            .multiValued()
                            .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                            .buildArgument();
            addValues(mod, arg);
            return arg;
        case RESET:
            arg = new StringArgument(OPTION_DSCFG_LONG_RESET, null, OPTION_DSCFG_LONG_RESET, false, true, true,
                    INFO_PROPERTY_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_RESET_PROP.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_RESET)
                            .description(INFO_DSCFG_DESCRIPTION_RESET_PROP.get())
                            .multiValued()
                            .valuePlaceholder(INFO_PROPERTY_PLACEHOLDER.get())
                            .buildArgument();
            arg.addValue(mod.getPropertyDefinition().getName());
            return arg;
        case REMOVE:
            arg = new StringArgument(OPTION_DSCFG_LONG_REMOVE, null, OPTION_DSCFG_LONG_REMOVE, false, true, true,
                    INFO_VALUE_SET_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_REMOVE)
                            .description(INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get())
                            .multiValued()
                            .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                            .buildArgument();
            addValues(mod, arg);
            return arg;
        default:
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS.
 *      Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.forgerock.opendj.config.dsconfig;
@@ -943,29 +943,36 @@
            advancedModeArgument = CommonArguments.getAdvancedMode();
            showUsageArgument = CommonArguments.getShowUsage();
            batchArgument = new BooleanArgument(OPTION_LONG_BATCH, null, OPTION_LONG_BATCH,
                    INFO_DESCRIPTION_BATCH.get());
            batchFileArgument = new StringArgument(OPTION_LONG_BATCH_FILE_PATH, OPTION_SHORT_BATCH_FILE_PATH,
                    OPTION_LONG_BATCH_FILE_PATH, false, false, true, INFO_BATCH_FILE_PATH_PLACEHOLDER.get(), null,
                    null, INFO_DESCRIPTION_BATCH_FILE_PATH.get());
            displayEquivalentArgument = new BooleanArgument(OPTION_LONG_DISPLAY_EQUIVALENT, null,
                    OPTION_LONG_DISPLAY_EQUIVALENT, INFO_DSCFG_DESCRIPTION_DISPLAY_EQUIVALENT.get());
            equivalentCommandFileArgument = new StringArgument(OPTION_LONG_EQUIVALENT_COMMAND_FILE_PATH, null,
                    OPTION_LONG_EQUIVALENT_COMMAND_FILE_PATH, false, false, true, INFO_PATH_PLACEHOLDER.get(), null,
                    null, INFO_DSCFG_DESCRIPTION_EQUIVALENT_COMMAND_FILE_PATH.get());
            propertiesFileArgument = new StringArgument("propertiesFilePath", null, OPTION_LONG_PROP_FILE_PATH, false,
                    false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
                    INFO_DESCRIPTION_PROP_FILE_PATH.get());
            noPropertiesFileArgument = new BooleanArgument("noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
                    INFO_DESCRIPTION_NO_PROP_FILE.get());
            batchArgument =
                    BooleanArgument.builder(OPTION_LONG_BATCH)
                            .description(INFO_DESCRIPTION_BATCH.get())
                            .buildArgument();
            batchFileArgument =
                    StringArgument.builder(OPTION_LONG_BATCH_FILE_PATH)
                            .shortIdentifier(OPTION_SHORT_BATCH_FILE_PATH)
                            .description(INFO_DESCRIPTION_BATCH_FILE_PATH.get())
                            .valuePlaceholder(INFO_BATCH_FILE_PATH_PLACEHOLDER.get())
                            .buildArgument();
            displayEquivalentArgument =
                    BooleanArgument.builder(OPTION_LONG_DISPLAY_EQUIVALENT)
                            .description(INFO_DSCFG_DESCRIPTION_DISPLAY_EQUIVALENT.get())
                            .buildArgument();
            equivalentCommandFileArgument =
                    StringArgument.builder(OPTION_LONG_EQUIVALENT_COMMAND_FILE_PATH)
                            .description(INFO_DSCFG_DESCRIPTION_EQUIVALENT_COMMAND_FILE_PATH.get())
                            .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                            .buildArgument();
            propertiesFileArgument =
                    StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                            .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                            .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                            .buildArgument();
            noPropertiesFileArgument =
                    BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                            .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                            .buildArgument();
            // Register the global arguments.
            ArgumentGroup toolOptionsGroup = new ArgumentGroup(INFO_DSCFG_DESCRIPTION_OPTIONS_ARGS.get(), 2);
            parser.addGlobalArgument(advancedModeArgument, toolOptionsGroup);
@@ -1033,8 +1040,10 @@
                String option = OPTION_LONG_HELP + "-" + tag.getName();
                String synopsis = tag.getSynopsis().toString().toLowerCase();
                BooleanArgument arg = new BooleanArgument(option, null, option,
                        INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE.get(synopsis));
                BooleanArgument arg =
                        BooleanArgument.builder(option)
                                .description(INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE.get(synopsis))
                                .buildArgument();
                parser.addGlobalArgument(arg);
                parser.setUsageGroupArgument(arg, subCommands);
@@ -1042,8 +1051,10 @@
            // Register the --help-all argument.
            String option = OPTION_LONG_HELP + "-all";
            BooleanArgument arg = new BooleanArgument(option, null, option,
                    INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE_ALL.get());
            BooleanArgument arg =
                    BooleanArgument.builder(option)
                            .description(INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE_ALL.get())
                            .buildArgument();
            parser.addGlobalArgument(arg);
            parser.setUsageGroupArgument(arg, allSubCommands);
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2009 Sun Microsystems, Inc.
 *      Portions Copyright 2014 ForgeRock AS
 *      Portions Copyright 2014-2016 ForgeRock AS
 */
package org.forgerock.opendj.config.dsconfig;
@@ -167,9 +167,11 @@
        this.namingArgs = createNamingArgs(subCommand, c, false);
        // Create the --force argument which is used to force deletion.
        this.forceArgument = new BooleanArgument(OPTION_DSCFG_LONG_FORCE, OPTION_DSCFG_SHORT_FORCE,
                OPTION_DSCFG_LONG_FORCE, INFO_DSCFG_DESCRIPTION_FORCE.get(ufpn));
        subCommand.addArgument(forceArgument);
        this.forceArgument =
                BooleanArgument.builder(OPTION_DSCFG_LONG_FORCE)
                        .shortIdentifier(OPTION_DSCFG_SHORT_FORCE)
                        .description(INFO_DSCFG_DESCRIPTION_FORCE.get(ufpn))
                        .buildAndAddToSubCommand(subCommand);
        // Register the tags associated with the child managed objects.
        addTags(relation.getChildDefinition().getAllTags());
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2008 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 */
package org.forgerock.opendj.config.dsconfig;
@@ -620,18 +620,23 @@
        LocalizableMessage desc = INFO_DSCFG_DESCRIPTION_SUBCMD_HELPPROP.get();
        this.subCommand = new SubCommand(parser, name, false, 0, 0, null, desc);
        this.categoryArgument = new StringArgument(OPTION_DSCFG_LONG_CATEGORY, OPTION_DSCFG_SHORT_CATEGORY,
                OPTION_DSCFG_LONG_CATEGORY, false, false, true, INFO_CATEGORY_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_HELP_CATEGORY.get());
        this.subCommand.addArgument(this.categoryArgument);
        this.typeArgument = new StringArgument(OPTION_DSCFG_LONG_TYPE, OPTION_DSCFG_SHORT_TYPE, OPTION_DSCFG_LONG_TYPE,
                false, false, true, INFO_TYPE_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_HELP_TYPE.get());
        this.subCommand.addArgument(this.typeArgument);
        this.inheritedModeArgument = new BooleanArgument(OPTION_DSCFG_LONG_INHERITED, OPTION_DSCFG_SHORT_INHERITED,
                OPTION_DSCFG_LONG_INHERITED, INFO_DSCFG_DESCRIPTION_HELP_INHERITED.get());
        subCommand.addArgument(inheritedModeArgument);
        categoryArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_CATEGORY)
                        .shortIdentifier(OPTION_DSCFG_SHORT_CATEGORY)
                        .description(INFO_DSCFG_DESCRIPTION_HELP_CATEGORY.get())
                        .valuePlaceholder(INFO_CATEGORY_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
        typeArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_TYPE)
                        .shortIdentifier(OPTION_DSCFG_SHORT_TYPE)
                        .description(INFO_DSCFG_DESCRIPTION_HELP_TYPE.get())
                        .valuePlaceholder(INFO_TYPE_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
        inheritedModeArgument =
                BooleanArgument.builder(OPTION_DSCFG_LONG_INHERITED)
                        .shortIdentifier(OPTION_DSCFG_SHORT_INHERITED)
                        .description(INFO_DSCFG_DESCRIPTION_HELP_INHERITED.get())
                        .buildAndAddToSubCommand(subCommand);
        // Register common arguments.
        registerPropertyNameArgument(this.subCommand);
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 *      Portions Copyright 2012 profiq, s.r.o.
 */
package org.forgerock.opendj.config.dsconfig;
@@ -80,7 +80,7 @@
/**
 * A sub-command handler which is used to modify the properties of a managed object.
 * <p>
 * <p/>
 * This sub-command implements the various set-xxx-prop sub-commands.
 */
final class SetPropSubCommandHandler extends SubCommandHandler {
@@ -414,9 +414,12 @@
                                                String argName = CLIProfile.getInstance().getNamingArgument(
                                                        path.getRelationDefinition());
                                                try {
                                                    StringArgument arg = new StringArgument(argName, null, argName,
                                                            false, true, INFO_NAME_PLACEHOLDER.get(),
                                                            INFO_DSCFG_DESCRIPTION_NAME.get(d.getUserFriendlyName()));
                                                    StringArgument arg =
                                                            StringArgument.builder(argName)
                                                                    .description(INFO_DSCFG_DESCRIPTION_NAME.get(
                                                                            d.getUserFriendlyName()))
                                                                    .valuePlaceholder(INFO_NAME_PLACEHOLDER.get())
                                                                    .buildArgument();
                                                    arg.addValue(name);
                                                    builder.addArgument(arg);
                                                } catch (Throwable t) {
@@ -426,10 +429,13 @@
                                            }
                                            try {
                                                StringArgument arg = new StringArgument(OPTION_DSCFG_LONG_SET,
                                                        OPTION_DSCFG_SHORT_SET, OPTION_DSCFG_LONG_SET, false, true,
                                                        true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                                                        INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
                                                StringArgument arg =
                                                        StringArgument.builder(OPTION_DSCFG_LONG_SET)
                                                                .shortIdentifier(OPTION_DSCFG_SHORT_SET)
                                                                .description(INFO_DSCFG_DESCRIPTION_PROP_VAL.get())
                                                                .multiValued()
                                                                .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                                                                .buildArgument();
                                                PropertyDefinition<?> propertyDefinition = cvc.getPropertyDefinition();
                                                arg.addValue(propertyDefinition.getName() + ':'
                                                        + castAndGetArgumentValue(propertyDefinition, cvc.getValue()));
@@ -567,28 +573,37 @@
        this.namingArgs = createNamingArgs(subCommand, path, false);
        // Create the --set argument.
        this.propertySetArgument = new StringArgument(OPTION_DSCFG_LONG_SET, OPTION_DSCFG_SHORT_SET,
                OPTION_DSCFG_LONG_SET, false, true, true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
        this.subCommand.addArgument(this.propertySetArgument);
        propertySetArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_SET)
                        .shortIdentifier(OPTION_DSCFG_SHORT_SET)
                        .description(INFO_DSCFG_DESCRIPTION_PROP_VAL.get())
                        .multiValued()
                        .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
        // Create the --reset argument.
        this.propertyResetArgument = new StringArgument(OPTION_DSCFG_LONG_RESET, OPTION_DSCFG_SHORT_RESET,
                OPTION_DSCFG_LONG_RESET, false, true, true, INFO_PROPERTY_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_RESET_PROP.get());
        this.subCommand.addArgument(this.propertyResetArgument);
        propertyResetArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_RESET)
                        .shortIdentifier(OPTION_DSCFG_SHORT_RESET)
                        .description(INFO_DSCFG_DESCRIPTION_RESET_PROP.get())
                        .multiValued()
                        .valuePlaceholder(INFO_PROPERTY_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
        // Create the --add argument.
        this.propertyAddArgument = new StringArgument(OPTION_DSCFG_LONG_ADD, OPTION_DSCFG_SHORT_ADD,
                OPTION_DSCFG_LONG_ADD, false, true, true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_ADD_PROP_VAL.get());
        this.subCommand.addArgument(this.propertyAddArgument);
        this.propertyAddArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_ADD)
                        .shortIdentifier(OPTION_DSCFG_SHORT_ADD)
                        .description(INFO_DSCFG_DESCRIPTION_ADD_PROP_VAL.get())
                        .multiValued()
                        .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
        // Create the --remove argument.
        this.propertyRemoveArgument = new StringArgument(OPTION_DSCFG_LONG_REMOVE, OPTION_DSCFG_SHORT_REMOVE,
                OPTION_DSCFG_LONG_REMOVE, false, true, true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get());
        this.subCommand.addArgument(this.propertyRemoveArgument);
        this.propertyRemoveArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_REMOVE)
                        .shortIdentifier(OPTION_DSCFG_SHORT_REMOVE)
                        .description(INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get())
                        .multiValued()
                        .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(this.subCommand);
        // Register the tags associated with the child managed objects.
        addTags(path.getManagedObjectDefinition().getAllTags());
@@ -879,28 +894,47 @@
        switch (mod.getType()) {
        case RESET:
            arg = new StringArgument(OPTION_DSCFG_LONG_RESET, OPTION_DSCFG_SHORT_RESET, OPTION_DSCFG_LONG_RESET, false,
                    true, true, INFO_PROPERTY_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_RESET_PROP.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_RESET)
                            .shortIdentifier(OPTION_DSCFG_SHORT_RESET)
                            .description(INFO_DSCFG_DESCRIPTION_RESET_PROP.get())
                            .multiValued()
                            .valuePlaceholder(INFO_PROPERTY_PLACEHOLDER.get())
                            .buildArgument();
            arg.addValue(propName);
            break;
        case REMOVE:
            arg = new StringArgument(OPTION_DSCFG_LONG_REMOVE, OPTION_DSCFG_SHORT_REMOVE, OPTION_DSCFG_LONG_REMOVE,
                    false, true, true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                    INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_REMOVE)
                            .shortIdentifier(OPTION_DSCFG_SHORT_REMOVE)
                            .description(INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get())
                            .multiValued()
                            .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                            .buildArgument();
            for (T value : mod.getModificationValues()) {
                arg.addValue(propName + ':' + getArgumentValue(propertyDefinition, value));
            }
            break;
        case ADD:
            arg = new StringArgument(OPTION_DSCFG_LONG_ADD, OPTION_DSCFG_SHORT_ADD, OPTION_DSCFG_LONG_ADD, false, true,
                    true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_ADD_PROP_VAL.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_ADD)
                            .shortIdentifier(OPTION_DSCFG_SHORT_ADD)
                            .description(INFO_DSCFG_DESCRIPTION_ADD_PROP_VAL.get())
                            .multiValued()
                            .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                            .buildArgument();
            for (T value : mod.getModificationValues()) {
                arg.addValue(propName + ':' + getArgumentValue(propertyDefinition, value));
            }
            break;
        case SET:
            arg = new StringArgument(OPTION_DSCFG_LONG_SET, OPTION_DSCFG_SHORT_SET, OPTION_DSCFG_LONG_SET, false, true,
                    true, INFO_VALUE_SET_PLACEHOLDER.get(), null, null, INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
            arg =
                    StringArgument.builder(OPTION_DSCFG_LONG_SET)
                            .shortIdentifier(OPTION_DSCFG_SHORT_SET)
                            .description(INFO_DSCFG_DESCRIPTION_PROP_VAL.get())
                            .multiValued()
                            .valuePlaceholder(INFO_VALUE_SET_PLACEHOLDER.get())
                            .buildArgument();
            for (T value : mod.getModificationValues()) {
                arg.addValue(propName + ':' + getArgumentValue(propertyDefinition, value));
            }
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 */
package org.forgerock.opendj.config.dsconfig;
@@ -494,28 +494,29 @@
            StringArgument arg;
            try {
                final StringArgument.Builder argBuilder = StringArgument.builder(argName);
                if (isCreate && sz == 0) {
                    // The final path element in create-xxx sub-commands should
                    // have a different usage.
                    PropertyDefinition<?> pd = r.getNamingPropertyDefinition();
                    if (pd != null) {
                        // Use syntax and description from naming property.
                        PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(false);
                        LocalizableMessage usage = LocalizableMessage.raw("{" + b.getUsage(pd) + "}");
                        arg = new StringArgument(argName, null, argName, false, true, usage,
                                INFO_DSCFG_DESCRIPTION_NAME_CREATE_EXT.get(d.getUserFriendlyName(), pd.getName(),
                                        pd.getSynopsis()));
                        argBuilder.description(INFO_DSCFG_DESCRIPTION_NAME_CREATE_EXT.get(
                                        d.getUserFriendlyName(), pd.getName(), pd.getSynopsis()))
                                  .valuePlaceholder(usage);
                    } else {
                        arg = new StringArgument(argName, null, argName, false, true, INFO_NAME_PLACEHOLDER.get(),
                                INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()));
                        argBuilder.description(INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()))
                                  .valuePlaceholder(INFO_NAME_PLACEHOLDER.get());
                    }
                } else {
                    // A normal naming argument.
                    arg = new StringArgument(argName, null, argName, false, true, INFO_NAME_PLACEHOLDER.get(),
                            INFO_DSCFG_DESCRIPTION_NAME.get(d.getUserFriendlyName()));
                    argBuilder.description(INFO_DSCFG_DESCRIPTION_NAME.get(d.getUserFriendlyName()))
                              .valuePlaceholder(INFO_NAME_PLACEHOLDER.get())
                              .buildArgument();
                }
                subCommand.addArgument(arg);
                arg = argBuilder.buildAndAddToSubCommand(subCommand);
                arguments.add(arg);
            } catch (ArgumentException e) {
                this.e = e;
@@ -542,13 +543,12 @@
            }
            String argName = CLIProfile.getInstance().getNamingArgument(r);
            StringArgument arg;
            try {
                arg = new StringArgument(argName, null, argName, false, true, INFO_NAME_PLACEHOLDER.get(),
                        INFO_DSCFG_DESCRIPTION_NAME.get(d.getUserFriendlyName()));
                subCommand.addArgument(arg);
                arguments.add(arg);
                arguments.add(StringArgument.builder(argName)
                        .description(INFO_DSCFG_DESCRIPTION_NAME.get(d.getUserFriendlyName()))
                        .valuePlaceholder(INFO_NAME_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand));
            } catch (ArgumentException e) {
                this.e = e;
            }
@@ -985,9 +985,11 @@
            if (app.confirmAction(msg, true)) {
                try {
                    String argName = CLIProfile.getInstance().getNamingArgument(r);
                    StringArgument arg = new StringArgument(argName, null, argName, false, true,
                            INFO_NAME_PLACEHOLDER.get(),
                            INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()));
                    StringArgument arg =
                            StringArgument.builder(argName)
                                    .description(INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()))
                                    .valuePlaceholder(INFO_NAME_PLACEHOLDER.get())
                                    .buildArgument();
                    if (r instanceof InstantiableRelationDefinition) {
                        arg.addValue(children.get(children.firstKey()));
                    } else {
@@ -1041,8 +1043,11 @@
                    return MenuResult.cancel();
                }
                String argName = CLIProfile.getInstance().getNamingArgument(r);
                StringArgument arg = new StringArgument(argName, null, argName, false, true,
                        INFO_NAME_PLACEHOLDER.get(), INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()));
                StringArgument arg =
                        StringArgument.builder(argName)
                                .description(INFO_DSCFG_DESCRIPTION_NAME_CREATE.get(d.getUserFriendlyName()))
                                .valuePlaceholder(INFO_NAME_PLACEHOLDER.get())
                                .buildArgument();
                if (r instanceof InstantiableRelationDefinition) {
                    arg.addValue(result.getValue());
                } else {
@@ -1095,10 +1100,13 @@
     *             If the property name argument could not be registered.
     */
    protected final void registerPropertyNameArgument(SubCommand subCommand) throws ArgumentException {
        this.propertyArgument = new StringArgument(OPTION_DSCFG_LONG_PROPERTY, OPTION_DSCFG_SHORT_PROPERTY,
                OPTION_DSCFG_LONG_PROPERTY, false, true, true, INFO_PROPERTY_PLACEHOLDER.get(), null, null,
                INFO_DSCFG_DESCRIPTION_PROP.get());
        subCommand.addArgument(propertyArgument);
        propertyArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_PROPERTY)
                        .shortIdentifier(OPTION_DSCFG_SHORT_PROPERTY)
                        .description(INFO_DSCFG_DESCRIPTION_PROP.get())
                        .multiValued()
                        .valuePlaceholder(INFO_PROPERTY_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
    }
    /**
@@ -1110,10 +1118,11 @@
     *             If the record mode argument could not be registered.
     */
    protected final void registerRecordModeArgument(SubCommand subCommand) throws ArgumentException {
        this.recordModeArgument = new BooleanArgument(OPTION_DSCFG_LONG_RECORD, OPTION_DSCFG_SHORT_RECORD,
                OPTION_DSCFG_LONG_RECORD, INFO_DSCFG_DESCRIPTION_RECORD.get());
        this.recordModeArgument.setPropertyName(OPTION_DSCFG_LONG_RECORD);
        subCommand.addArgument(recordModeArgument);
        recordModeArgument =
                BooleanArgument.builder(OPTION_DSCFG_LONG_RECORD)
                        .shortIdentifier(OPTION_DSCFG_SHORT_RECORD)
                        .description(INFO_DSCFG_DESCRIPTION_RECORD.get())
                        .buildAndAddToSubCommand(subCommand);
    }
    /**
@@ -1125,12 +1134,12 @@
     *             If the unit-size argument could not be registered.
     */
    protected final void registerUnitSizeArgument(SubCommand subCommand) throws ArgumentException {
        this.unitSizeArgument = new StringArgument(OPTION_DSCFG_LONG_UNIT_SIZE, OPTION_DSCFG_SHORT_UNIT_SIZE,
                OPTION_DSCFG_LONG_UNIT_SIZE, false, true, INFO_UNIT_PLACEHOLDER.get(),
                INFO_DSCFG_DESCRIPTION_UNIT_SIZE.get());
        this.unitSizeArgument.setPropertyName(OPTION_DSCFG_LONG_UNIT_SIZE);
        subCommand.addArgument(unitSizeArgument);
        unitSizeArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_UNIT_SIZE)
                        .shortIdentifier(OPTION_DSCFG_SHORT_UNIT_SIZE)
                        .description(INFO_DSCFG_DESCRIPTION_UNIT_SIZE.get())
                        .valuePlaceholder(INFO_UNIT_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
    }
    /**
@@ -1142,12 +1151,12 @@
     *             If the unit-time argument could not be registered.
     */
    protected final void registerUnitTimeArgument(SubCommand subCommand) throws ArgumentException {
        this.unitTimeArgument = new StringArgument(OPTION_DSCFG_LONG_UNIT_TIME, OPTION_DSCFG_SHORT_UNIT_TIME,
                OPTION_DSCFG_LONG_UNIT_TIME, false, true, INFO_UNIT_PLACEHOLDER.get(),
                INFO_DSCFG_DESCRIPTION_UNIT_TIME.get());
        this.unitTimeArgument.setPropertyName(OPTION_DSCFG_LONG_UNIT_TIME);
        subCommand.addArgument(unitTimeArgument);
        unitTimeArgument =
                StringArgument.builder(OPTION_DSCFG_LONG_UNIT_TIME)
                        .shortIdentifier(OPTION_DSCFG_SHORT_UNIT_TIME)
                        .description(INFO_DSCFG_DESCRIPTION_UNIT_TIME.get())
                        .valuePlaceholder(INFO_UNIT_PLACEHOLDER.get())
                        .buildAndAddToSubCommand(subCommand);
    }
    /**
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2009-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS.
 *      Portions Copyright 2011-2016 ForgeRock AS.
 */
package org.opends.guitools.controlpanel;
@@ -133,7 +133,6 @@
    addArgument(remoteArg);
    connectTimeoutArg = CommonArguments.getConnectTimeOut();
    connectTimeoutArg.setHidden(false);
    addArgument(connectTimeoutArg);
    showUsageArg = CommonArguments.getShowUsage();
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallCliHelper.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2014-2015 ForgeRock AS
 *      Portions Copyright 2014-2016 ForgeRock AS
 */
package org.opends.guitools.uninstaller;
@@ -1266,7 +1266,7 @@
        {
          println();
          printErrorMessage(ERR_UNINSTALL_ERROR_UPDATING_REMOTE_FORCE.get(
              "--"+parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
              "--"+parser.getSecureArgsList().adminUidHiddenArg.getLongIdentifier(),
              "--"+OPTION_LONG_BINDPWD,
              "--"+OPTION_LONG_BINDPWD_FILE,
              exceptionMsg));
@@ -1277,7 +1277,7 @@
          throw new UserDataException(null,
              ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE.get(
                  "--"+
                  parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
                  parser.getSecureArgsList().adminUidHiddenArg.getLongIdentifier(),
                  "--"+OPTION_LONG_BINDPWD,
                  "--"+OPTION_LONG_BINDPWD_FILE,
                  "--"+parser.forceOnErrorArg.getLongIdentifier(),
@@ -1431,7 +1431,7 @@
          LocalizableMessage msg =
            ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE.get(
              "--"+
              parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
              parser.getSecureArgsList().adminUidHiddenArg.getLongIdentifier(),
              "--"+OPTION_LONG_BINDPWD,
              "--"+OPTION_LONG_BINDPWD_FILE,
              "--"+parser.forceOnErrorArg.getLongIdentifier(),
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2014-2015 ForgeRock AS
 *      Portions Copyright 2014-2016 ForgeRock AS
 */
package org.opends.guitools.uninstaller;
@@ -1962,7 +1962,7 @@
          LocalizableMessage msg =
            ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE.get(
              "--"+
              parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
              parser.getSecureArgsList().adminUidHiddenArg.getLongIdentifier(),
              "--"+OPTION_LONG_BINDPWD,
              "--"+OPTION_LONG_BINDPWD_FILE,
              "--"+parser.forceOnErrorArg.getLongIdentifier(),
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallerArgumentParser.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2014-2015 ForgeRock AS.
 *      Portions Copyright 2014-2016 ForgeRock AS.
 */
package org.opends.guitools.uninstaller;
@@ -64,6 +64,7 @@
  private BooleanArgument removeLDIFFilesArg;
  private StringArgument referencedHostNameArg;
  private StringArgument adminUidArg;
  /** This CLI is always using the administration connector with SSL. */
  private final boolean alwaysSSL = true;
@@ -103,98 +104,92 @@
  throws ArgumentException
  {
    LinkedHashSet<Argument> args = new LinkedHashSet<>();
    adminUidArg = CommonArguments.getAdminUid(INFO_DESCRIPTION_ADMIN_UID.get());
    cliArg = CommonArguments.getCLI();
    args.add(cliArg);
    removeAllArg = new BooleanArgument(
        "remove-all",
        'a',
        "remove-all",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_ALL.get()
        );
    removeAllArg =
            BooleanArgument.builder("remove-all")
                    .shortIdentifier('a')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_ALL.get())
                    .buildArgument();
    args.add(removeAllArg);
    removeServerLibrariesArg = new BooleanArgument(
        "server-libraries",
        'l',
        "server-libraries",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_SERVER_LIBRARIES.get()
        );
    removeServerLibrariesArg =
            BooleanArgument.builder("server-libraries")
                    .shortIdentifier('l')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_SERVER_LIBRARIES.get())
                    .buildArgument();
    args.add(removeServerLibrariesArg);
    removeDatabasesArg = new BooleanArgument(
        "databases",
        'd',
        "databases",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_DATABASES.get()
        );
    removeDatabasesArg =
            BooleanArgument.builder("databases")
                    .shortIdentifier('d')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_DATABASES.get())
                    .buildArgument();
    args.add(removeDatabasesArg);
    removeLogFilesArg = new BooleanArgument(
        "log-files",
        'L',
        "log-files",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_LOG_FILES.get()
        );
    removeLogFilesArg =
            BooleanArgument.builder("log-files")
                    .shortIdentifier('L')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_LOG_FILES.get())
                    .buildArgument();
    args.add(removeLogFilesArg);
    removeConfigurationFilesArg = new BooleanArgument(
        "configuration-files",
        'c',
        "configuration-files",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_CONFIGURATION_FILES.get()
        );
    removeConfigurationFilesArg =
            BooleanArgument.builder("configuration-files")
                    .shortIdentifier('c')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_CONFIGURATION_FILES.get())
                    .buildArgument();
    args.add(removeConfigurationFilesArg);
    removeBackupFilesArg = new BooleanArgument(
        "backup-files",
        'b',
        "backup-files",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_BACKUP_FILES.get()
        );
    removeBackupFilesArg =
            BooleanArgument.builder("backup-files")
                    .shortIdentifier('b')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_BACKUP_FILES.get())
                    .buildArgument();
    args.add(removeBackupFilesArg);
    removeLDIFFilesArg = new BooleanArgument(
        "ldif-files",
        'e',
        "ldif-files",
        INFO_UNINSTALLDS_DESCRIPTION_REMOVE_LDIF_FILES.get()
        );
    removeLDIFFilesArg =
            BooleanArgument.builder("ldif-files")
                    .shortIdentifier('e')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_REMOVE_LDIF_FILES.get())
                    .buildArgument();
    args.add(removeLDIFFilesArg);
    noPromptArg = CommonArguments.getNoPrompt();
    args.add(noPromptArg);
    forceOnErrorArg = new BooleanArgument(
        "forceOnError",
        'f',
        "forceOnError",
        INFO_UNINSTALLDS_DESCRIPTION_FORCE.get(
            "--"+noPromptArg.getLongIdentifier()));
    forceOnErrorArg =
            BooleanArgument.builder("forceOnError")
                    .shortIdentifier('f')
                    .description(INFO_UNINSTALLDS_DESCRIPTION_FORCE.get("--" + noPromptArg.getLongIdentifier()))
                    .buildArgument();
    args.add(forceOnErrorArg);
    quietArg = CommonArguments.getQuiet();
    args.add(quietArg);
    for (Argument arg : args)
    {
      arg.setPropertyName(arg.getLongIdentifier());
    }
    ArrayList<Argument> defaultArgs = new ArrayList<>(createGlobalArguments(outStream, alwaysSSL));
    int index = defaultArgs.indexOf(secureArgsList.bindDnArg);
    if (index != -1)
    {
      defaultArgs.add(index, secureArgsList.adminUidArg);
      defaultArgs.add(index, adminUidArg);
      defaultArgs.remove(secureArgsList.bindDnArg);
    }
    else
    {
      defaultArgs.add(secureArgsList.adminUidArg);
      defaultArgs.add(adminUidArg);
    }
    secureArgsList.adminUidArg.setHidden(false);
    defaultArgs.remove(secureArgsList.hostNameArg);
    defaultArgs.remove(secureArgsList.portArg);
    referencedHostNameArg = new StringArgument("referencedHostName",
        OPTION_SHORT_HOST,
        OPTION_LONG_REFERENCED_HOST_NAME, false, false, true,
        INFO_HOST_PLACEHOLDER.get(),
        UserData.getDefaultHostName(), OPTION_LONG_REFERENCED_HOST_NAME,
        INFO_DESCRIPTION_REFERENCED_HOST.get());
    referencedHostNameArg =
            StringArgument.builder(OPTION_LONG_REFERENCED_HOST_NAME)
                    .shortIdentifier(OPTION_SHORT_HOST)
                    .description(INFO_DESCRIPTION_REFERENCED_HOST.get())
                    .defaultValue(UserData.getDefaultHostName())
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    defaultArgs.add(referencedHostNameArg);
    args.addAll(defaultArgs);
@@ -329,7 +324,7 @@
   */
  public String getDefaultAdministratorUID()
  {
    return secureArgsList.adminUidArg.getDefaultValue();
    return adminUidArg.getDefaultValue();
  }
  /**
opendj-server-legacy/src/main/java/org/opends/server/admin/client/cli/SecureConnectionCliArgs.java
@@ -22,11 +22,10 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 */
package org.opends.server.admin.client.cli;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.*;
import static com.forgerock.opendj.cli.ReturnCode.*;
import static com.forgerock.opendj.cli.Utils.*;
@@ -44,6 +43,7 @@
import java.util.List;
import java.util.Set;
import com.forgerock.opendj.cli.ArgumentParser;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
@@ -84,7 +84,7 @@
  /** The 'bindDN' global argument. */
  public StringArgument bindDnArg;
  /** The 'adminUID' global argument. */
  public StringArgument adminUidArg;
  public StringArgument adminUidHiddenArg;
  /** The 'bindPasswordFile' global argument. */
  public FileBasedArgument bindPasswordFileArg;
  /** The 'bindPassword' global argument. */
@@ -166,11 +166,11 @@
   */
  public String getAdministratorUID()
  {
    if (adminUidArg.isPresent())
    if (adminUidHiddenArg.isPresent())
    {
      return adminUidArg.getValue();
      return adminUidHiddenArg.getValue();
    }
    return adminUidArg.getDefaultValue();
    return adminUidHiddenArg.getDefaultValue();
  }
  /**
@@ -182,7 +182,7 @@
   */
  public boolean useAdminUID()
  {
    return !adminUidArg.isHidden();
    return !adminUidHiddenArg.isHidden();
  }
  /**
@@ -229,32 +229,17 @@
      argList.add(useStartTLSArg);
    }
    String defaultHostName;
    try
    {
      defaultHostName = InetAddress.getLocalHost().getHostName();
    }
    catch (Exception e)
    {
      defaultHostName = "Unknown (" + e + ")";
    }
    hostNameArg = CommonArguments.getHostName(defaultHostName);
    hostNameArg = CommonArguments.getHostName(getDefaultHostName());
    argList.add(hostNameArg);
    portArg = CommonArguments.getPort(AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT,
                                      alwaysSSL ? INFO_DESCRIPTION_ADMIN_PORT.get() : INFO_DESCRIPTION_PORT.get());
    portArg = createPortArgument(AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT);
    argList.add(portArg);
    bindDnArg = CommonArguments.getBindDN(CliConstants.DEFAULT_ROOT_USER_DN);
    argList.add(bindDnArg);
    // It is up to the classes that required admin UID to make this argument
    // visible and add it.
    adminUidArg = new StringArgument("adminUID", 'I', OPTION_LONG_ADMIN_UID, false, false, true,
                                     INFO_ADMINUID_PLACEHOLDER.get(), CliConstants.GLOBAL_ADMIN_UID,
                                     null, INFO_DESCRIPTION_ADMIN_UID.get());
    adminUidArg.setPropertyName(OPTION_LONG_ADMIN_UID);
    adminUidArg.setHidden(true);
    // Classes that required admin UID to be not hidden must use CommonsArguments.getAdminUid().
    adminUidHiddenArg = CommonArguments.getAdminUidHidden(INFO_DESCRIPTION_ADMIN_UID.get());
    bindPasswordArg = CommonArguments.getBindPassword();
    argList.add(bindPasswordArg);
@@ -290,7 +275,6 @@
    argList.add(certNicknameArg);
    connectTimeoutArg = CommonArguments.getConnectTimeOut();
    connectTimeoutArg.setHidden(false);
    argList.add(connectTimeoutArg);
    return argList;
@@ -312,6 +296,23 @@
  }
  /**
   * Returns the current hostname.
   *
   * If the hostname resolution fails, this method returns {@literal "localhost"}.
   * @return the current hostname
     */
  public String getDefaultHostName() {
    try
    {
      return InetAddress.getLocalHost().getHostName();
    }
    catch (Exception e)
    {
      return "localhost";
    }
  }
  /**
   * Get the port which has to be used for the command.
   *
   * @return The port specified by the command line argument, or the default
@@ -636,17 +637,27 @@
   * Updates the default values of the port and the trust store with what is
   * read in the configuration.
   *
   * @throws ConfigException
   *           if there is an error reading the configuration.
   * @param parser
   *        The argument parser where the secure connection arguments were added.
   */
  public void initArgumentsWithConfiguration() throws ConfigException
  public void initArgumentsWithConfiguration(final ArgumentParser parser) {
    try
  {
    portArg.setDefaultValue(String.valueOf(getPortFromConfig()));
    String truststoreFileAbsolute = getTruststoreFileFromConfig();
    if (truststoreFileAbsolute != null)
    {
      trustStorePathArg.setDefaultValue(truststoreFileAbsolute);
      portArg = createPortArgument(getPortFromConfig());
      trustStorePathArg = CommonArguments.getTrustStorePathArgument(getTruststoreFileFromConfig());
      parser.replaceArgument(portArg);
      parser.replaceArgument(trustStorePathArg);
    }
    catch (ConfigException | ArgumentException e)
    {
      logger.error(LocalizableMessage.raw(
              "Internal error while reading arguments of this program from configuration"), e);
    }
  }
  private IntegerArgument createPortArgument(final int defaultValue) throws ArgumentException
  {
    return CommonArguments.getPort(
            defaultValue, alwaysSSL ? INFO_DESCRIPTION_ADMIN_PORT.get() : INFO_DESCRIPTION_PORT.get());
  }
}
opendj-server-legacy/src/main/java/org/opends/server/admin/client/cli/TaskScheduleArgs.java
@@ -108,50 +108,49 @@
  private void createTaskArguments() throws ArgumentException
  {
    startArg = new StringArgument(OPTION_LONG_START_DATETIME,
        OPTION_SHORT_START_DATETIME, OPTION_LONG_START_DATETIME, false, false,
        true, INFO_START_DATETIME_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_START_DATETIME.get());
    startArg =
            StringArgument.builder(OPTION_LONG_START_DATETIME)
                    .shortIdentifier(OPTION_SHORT_START_DATETIME)
                    .description(INFO_DESCRIPTION_START_DATETIME.get())
                    .valuePlaceholder(INFO_START_DATETIME_PLACEHOLDER.get())
                    .buildArgument();
    recurringArg =
            StringArgument.builder(OPTION_LONG_RECURRING_TASK)
                    .shortIdentifier(OPTION_SHORT_RECURRING_TASK)
                    .description(INFO_DESCRIPTION_RECURRING_TASK.get())
                    .valuePlaceholder(INFO_RECURRING_TASK_PLACEHOLDER.get())
                    .buildArgument();
    completionNotificationArg =
            StringArgument.builder(OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL)
                    .shortIdentifier(OPTION_SHORT_COMPLETION_NOTIFICATION_EMAIL)
                    .description(INFO_DESCRIPTION_TASK_COMPLETION_NOTIFICATION.get())
                    .multiValued()
                    .valuePlaceholder(INFO_EMAIL_ADDRESS_PLACEHOLDER.get())
                    .buildArgument();
    errorNotificationArg =
            StringArgument.builder(OPTION_LONG_ERROR_NOTIFICATION_EMAIL)
                    .shortIdentifier(OPTION_SHORT_ERROR_NOTIFICATION_EMAIL)
                    .description(INFO_DESCRIPTION_TASK_ERROR_NOTIFICATION.get())
                    .multiValued()
                    .valuePlaceholder(INFO_EMAIL_ADDRESS_PLACEHOLDER.get())
                    .buildArgument();
    dependencyArg =
            StringArgument.builder(OPTION_LONG_DEPENDENCY)
                    .shortIdentifier(OPTION_SHORT_DEPENDENCY)
                    .description(INFO_DESCRIPTION_TASK_DEPENDENCY_ID.get())
                    .multiValued()
                    .valuePlaceholder(INFO_TASK_ID_PLACEHOLDER.get())
                    .buildArgument();
    recurringArg = new StringArgument(OPTION_LONG_RECURRING_TASK,
        OPTION_SHORT_RECURRING_TASK, OPTION_LONG_RECURRING_TASK, false, false,
        true, INFO_RECURRING_TASK_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_RECURRING_TASK.get());
    completionNotificationArg = new StringArgument(
        OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL,
        OPTION_SHORT_COMPLETION_NOTIFICATION_EMAIL,
        OPTION_LONG_COMPLETION_NOTIFICATION_EMAIL, false, true, true,
        INFO_EMAIL_ADDRESS_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_TASK_COMPLETION_NOTIFICATION.get());
    errorNotificationArg = new StringArgument(
        OPTION_LONG_ERROR_NOTIFICATION_EMAIL,
        OPTION_SHORT_ERROR_NOTIFICATION_EMAIL,
        OPTION_LONG_ERROR_NOTIFICATION_EMAIL, false, true, true,
        INFO_EMAIL_ADDRESS_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_TASK_ERROR_NOTIFICATION.get());
    dependencyArg = new StringArgument(OPTION_LONG_DEPENDENCY,
        OPTION_SHORT_DEPENDENCY, OPTION_LONG_DEPENDENCY, false, true, true,
        INFO_TASK_ID_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_TASK_DEPENDENCY_ID.get());
    Set<FailedDependencyAction> fdaValSet =
      EnumSet.allOf(FailedDependencyAction.class);
    failedDependencyActionArg = new StringArgument(
        OPTION_LONG_FAILED_DEPENDENCY_ACTION,
        OPTION_SHORT_FAILED_DEPENDENCY_ACTION,
        OPTION_LONG_FAILED_DEPENDENCY_ACTION, false, true, true,
        INFO_ACTION_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_TASK_FAILED_DEPENDENCY_ACTION.get(
            Utils.joinAsString(",", fdaValSet),
            FailedDependencyAction.defaultValue().name()));
    for (Argument arg : getArguments())
    {
      arg.setPropertyName(arg.getLongIdentifier());
    }
    final Set<FailedDependencyAction> fdaValSet = EnumSet.allOf(FailedDependencyAction.class);
    failedDependencyActionArg =
            StringArgument.builder(OPTION_LONG_FAILED_DEPENDENCY_ACTION)
            .shortIdentifier(OPTION_SHORT_FAILED_DEPENDENCY_ACTION)
            .description(INFO_DESCRIPTION_TASK_FAILED_DEPENDENCY_ACTION.get(
                    Utils.joinAsString(",", fdaValSet), FailedDependencyAction.defaultValue().name()))
            .multiValued()
            .valuePlaceholder(INFO_ACTION_PLACEHOLDER.get())
            .buildArgument();
  }
  /**
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
@@ -21,7 +21,7 @@
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2015 ForgeRock AS.
 *      Portions Copyright 2015-2016 ForgeRock AS.
 */
package org.opends.server.backends.pluggable;
@@ -362,15 +362,22 @@
    if (!globalArgumentsInitialized)
    {
      configClass =
          new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS, OPTION_LONG_CONFIG_CLASS, true, false, true,
              INFO_CONFIGCLASS_PLACEHOLDER.get(), ConfigFileHandler.class.getName(), null,
              INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildArgument();
      configFile =
          new StringArgument("configfile", 'f', "configFile", true, false, true, INFO_CONFIGFILE_PLACEHOLDER.get(),
              null, null, INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildArgument();
      showUsageArgument = CommonArguments.getShowUsage();
@@ -398,47 +405,60 @@
                           INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_BACKENDS.get());
      // list-base-dns
      SubCommand sub = new SubCommand(parser, LIST_BASE_DNS,
                                      INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_ENTRY_CONTAINERS.get());
      addBackendArgument(sub);
      addBackendArgument(new SubCommand(
              parser, LIST_BASE_DNS, INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_ENTRY_CONTAINERS.get()));
      // list-indexes
      sub = new SubCommand(parser, LIST_INDEXES, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEXES.get());
      addBackendBaseDNArguments(sub, false, false, true);
      final SubCommand listIndexes = new SubCommand(
              parser, LIST_INDEXES, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEXES.get());
      addBackendBaseDNArguments(listIndexes, false, false);
      // show-index-status
      sub = new SubCommand(parser, SHOW_INDEX_STATUS, INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_INDEX_STATUS.get());
      sub.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEX_STATUS.get());
      addBackendBaseDNArguments(sub, true, true, true);
      final SubCommand showIndexStatus = new SubCommand(
              parser, SHOW_INDEX_STATUS, INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_INDEX_STATUS.get());
      showIndexStatus.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEX_STATUS.get());
      addBackendBaseDNArguments(showIndexStatus, true, true);
      // dump-index
      sub = new SubCommand(parser, DUMP_INDEX, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_INDEX.get());
      addBackendBaseDNArguments(sub, true, false, true);
      sub.addArgument(new StringArgument(INDEXNAME_NAME, 'i', INDEXNAME, true, false, true,
                                         INFO_INDEX_NAME_PLACEHOLDER.get(), null, null,
                                         INFO_DESCRIPTION_BACKEND_DEBUG_INDEX_NAME.get()));
      addDumpSubCommandArguments(sub);
      BooleanArgument skipDecode =
          new BooleanArgument(SKIPDECODE_NAME, 'p', SKIPDECODE, INFO_DESCRIPTION_BACKEND_DEBUG_SKIP_DECODE.get());
      sub.addArgument(skipDecode);
      final SubCommand dumpIndex = new SubCommand(
              parser, DUMP_INDEX, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_INDEX.get());
      addBackendBaseDNArguments(dumpIndex, true, false);
      dumpIndex.addArgument(StringArgument.builder(INDEXNAME)
              .shortIdentifier('i')
              .description(INFO_DESCRIPTION_BACKEND_DEBUG_INDEX_NAME.get())
              .required()
              .valuePlaceholder(INFO_INDEX_NAME_PLACEHOLDER.get())
              .buildArgument());
      addDumpSubCommandArguments(dumpIndex);
      dumpIndex.addArgument(BooleanArgument.builder(SKIPDECODE)
              .shortIdentifier('p')
              .description(INFO_DESCRIPTION_BACKEND_DEBUG_SKIP_DECODE.get())
              .buildArgument());
      // list-raw-dbs
      sub = new SubCommand(parser, LIST_RAW_DBS, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_RAW_DBS.get());
      addBackendArgument(sub);
      BooleanArgument useSIUnits =
          new BooleanArgument(USESIUNITS_NAME, 'u', USESIUNITS, INFO_DESCRIPTION_BACKEND_TOOL_USE_SI_UNITS.get());
      sub.addArgument(useSIUnits);
      final SubCommand listRawDBs = new SubCommand(
              parser, LIST_RAW_DBS, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_RAW_DBS.get());
      addBackendArgument(listRawDBs);
      listRawDBs.addArgument(BooleanArgument.builder(USESIUNITS)
              .shortIdentifier('u')
              .description(INFO_DESCRIPTION_BACKEND_TOOL_USE_SI_UNITS.get())
              .buildArgument());
      // dump-raw-db
      sub = new SubCommand(parser, DUMP_RAW_DB, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_RAW_DB.get());
      addBackendArgument(sub);
      sub.addArgument(new StringArgument(DBNAME_NAME, 'd', DBNAME, true, false, true,
                                         INFO_DATABASE_NAME_PLACEHOLDER.get(), null, null,
                                         INFO_DESCRIPTION_BACKEND_DEBUG_RAW_DB_NAME.get()));
      addDumpSubCommandArguments(sub);
      BooleanArgument singleLine =
          new BooleanArgument(SINGLELINE_NAME, 'l', SINGLELINE, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_SINGLE_LINE.get());
      sub.addArgument(singleLine);
      final SubCommand dumbRawDB = new SubCommand(
              parser, DUMP_RAW_DB, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_RAW_DB.get());
      addBackendArgument(dumbRawDB);
      dumbRawDB.addArgument(StringArgument.builder(DBNAME)
              .shortIdentifier('d')
              .description(INFO_DESCRIPTION_BACKEND_DEBUG_RAW_DB_NAME.get())
              .required()
              .valuePlaceholder(INFO_DATABASE_NAME_PLACEHOLDER.get())
              .buildArgument());
      addDumpSubCommandArguments(dumbRawDB);
      dumbRawDB.addArgument(BooleanArgument.builder(SINGLELINE)
              .shortIdentifier('l')
              .description(INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_SINGLE_LINE.get())
              .buildArgument());
      subCommandsInitialized = true;
    }
@@ -447,44 +467,84 @@
  private void addBackendArgument(SubCommand sub) throws ArgumentException
  {
    sub.addArgument(
        new StringArgument(BACKENDID_NAME, 'n', BACKENDID, true, false, true, INFO_BACKENDNAME_PLACEHOLDER.get(), null,
            null, INFO_DESCRIPTION_BACKEND_DEBUG_BACKEND_ID.get()));
            StringArgument.builder(BACKENDID)
                    .shortIdentifier('n')
                    .description(INFO_DESCRIPTION_BACKEND_DEBUG_BACKEND_ID.get())
                    .required()
                    .valuePlaceholder(INFO_BACKENDNAME_PLACEHOLDER.get())
                    .buildArgument());
  }
  private void addBackendBaseDNArguments(SubCommand sub, boolean isRequired, boolean isMultiValued, boolean needsValue)
  private void addBackendBaseDNArguments(SubCommand sub, boolean isRequired, boolean isMultiValued)
      throws ArgumentException
  {
    addBackendArgument(sub);
    sub.addArgument(new StringArgument(BASEDN_NAME, 'b', BASEDN, isRequired, isMultiValued, needsValue,
        INFO_BASEDN_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_BASE_DN.get()));
    final StringArgument.Builder builder = StringArgument.builder(BASEDN)
            .shortIdentifier('b')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_BASE_DN.get())
            .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get());
    if (isMultiValued)
    {
      builder.multiValued();
    }
    if (isRequired) {
      builder.required();
    }
    sub.addArgument(builder.buildArgument());
  }
  private void addDumpSubCommandArguments(SubCommand sub) throws ArgumentException
  {
    sub.addArgument(new BooleanArgument(STATSONLY_NAME, 'q', STATSONLY,
        INFO_DESCRIPTION_BACKEND_DEBUG_STATS_ONLY.get()));
    sub.addArgument(BooleanArgument.builder(STATSONLY)
            .shortIdentifier('q')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_STATS_ONLY.get())
            .buildArgument());
    sub.addArgument(newMaxKeyValueArg());
    sub.addArgument(newMinKeyValueArg());
    sub.addArgument(new StringArgument(MAXHEXKEYVALUE_NAME, 'X', MAXHEXKEYVALUE, false, false, true,
        INFO_MAX_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get()));
    sub.addArgument(new StringArgument(MINHEXKEYVALUE_NAME, 'x', MINHEXKEYVALUE, false, false, true,
        INFO_MIN_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get()));
    sub.addArgument(new IntegerArgument(MAXDATASIZE_NAME, 'S', MAXDATASIZE, false, false, true,
        INFO_MAX_DATA_SIZE_PLACEHOLDER.get(), -1, null, INFO_DESCRIPTION_BACKEND_DEBUG_MAX_DATA_SIZE.get()));
    sub.addArgument(new IntegerArgument(MINDATASIZE_NAME, 's', MINDATASIZE, false, false, true,
        INFO_MIN_DATA_SIZE_PLACEHOLDER.get(), -1, null, INFO_DESCRIPTION_BACKEND_DEBUG_MIN_DATA_SIZE.get()));
    sub.addArgument(StringArgument.builder(MAXHEXKEYVALUE)
            .shortIdentifier('X')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get())
            .valuePlaceholder(INFO_MAX_KEY_VALUE_PLACEHOLDER.get())
            .buildArgument());
    sub.addArgument(StringArgument.builder(MINHEXKEYVALUE)
            .shortIdentifier('x')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get())
            .valuePlaceholder(INFO_MIN_KEY_VALUE_PLACEHOLDER.get())
            .buildArgument());
    sub.addArgument(IntegerArgument.builder(MAXDATASIZE)
            .shortIdentifier('S')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MAX_DATA_SIZE.get())
            .defaultValue(-1)
            .valuePlaceholder(INFO_MAX_DATA_SIZE_PLACEHOLDER.get())
            .buildArgument());
    sub.addArgument(IntegerArgument.builder(MINDATASIZE)
            .shortIdentifier('s')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MIN_DATA_SIZE.get())
            .defaultValue(-1)
            .valuePlaceholder(INFO_MIN_DATA_SIZE_PLACEHOLDER.get())
            .buildArgument());
  }
  private StringArgument newMinKeyValueArg() throws ArgumentException
  {
    return new StringArgument(MINKEYVALUE_NAME, 'k', MINKEYVALUE, false, false, true,
        INFO_MIN_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get());
    return StringArgument.builder(MINKEYVALUE)
            .shortIdentifier('k')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get())
            .valuePlaceholder(INFO_MIN_KEY_VALUE_PLACEHOLDER.get())
            .buildArgument();
  }
  private StringArgument newMaxKeyValueArg() throws ArgumentException
  {
    return new StringArgument(MAXKEYVALUE_NAME, 'K', MAXKEYVALUE, false, false, true,
        INFO_MAX_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get());
    return StringArgument.builder(MAXKEYVALUE)
            .shortIdentifier('K')
            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get())
            .valuePlaceholder(INFO_MAX_KEY_VALUE_PLACEHOLDER.get())
            .buildArgument();
  }
  /**
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -6831,11 +6831,10 @@
  public static void main(String[] args)
  {
    // Define the arguments that may be provided to the server.
    final BooleanArgument displayUsage;
    BooleanArgument checkStartability      = null;
    BooleanArgument quietMode              = null;
    IntegerArgument timeout                = null;
    BooleanArgument windowsNetStart        = null;
    BooleanArgument displayUsage           = null;
    BooleanArgument fullVersion            = null;
    BooleanArgument noDetach               = null;
    BooleanArgument systemInfo             = null;
@@ -6853,64 +6852,67 @@
    // Initialize all the command-line argument types and register them with the parser.
    try
    {
      configClass = new StringArgument("configclass", 'C', "configClass",
                                       true, false, true,
                                       INFO_CONFIGCLASS_PLACEHOLDER.get(),
                                       ConfigFileHandler.class.getName(), null,
                                       INFO_DSCORE_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      configFile = new StringArgument("configfile", 'f', "configFile",
                                      true, false, true,
                                      INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_DSCORE_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      checkStartability = new BooleanArgument("checkstartability", null,
                              "checkStartability",
                              INFO_DSCORE_DESCRIPTION_CHECK_STARTABILITY.get());
      checkStartability.setHidden(true);
      argParser.addArgument(checkStartability);
      windowsNetStart = new BooleanArgument("windowsnetstart", null, "windowsNetStart",
                              INFO_DSCORE_DESCRIPTION_WINDOWS_NET_START.get());
      windowsNetStart.setHidden(true);
      argParser.addArgument(windowsNetStart);
      fullVersion = new BooleanArgument("fullversion", 'F', "fullVersion",
                                        INFO_DSCORE_DESCRIPTION_FULLVERSION.get());
      fullVersion.setHidden(true);
      argParser.addArgument(fullVersion);
      systemInfo = new BooleanArgument("systeminfo", 's', "systemInfo",
                                       INFO_DSCORE_DESCRIPTION_SYSINFO.get());
      argParser.addArgument(systemInfo);
      BooleanArgument.builder("windowsNetStart")
              .description(INFO_DSCORE_DESCRIPTION_WINDOWS_NET_START.get())
              .hidden()
              .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder("configClass")
                      .shortIdentifier('C')
                      .description(INFO_DSCORE_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DSCORE_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      checkStartability =
              BooleanArgument.builder("checkStartability")
                      .description(INFO_DSCORE_DESCRIPTION_CHECK_STARTABILITY.get())
                      .hidden()
                      .buildAndAddToParser(argParser);
      fullVersion =
              BooleanArgument.builder("fullVersion")
                      .shortIdentifier('F')
                      .description(INFO_DSCORE_DESCRIPTION_FULLVERSION.get())
                      .hidden()
                      .buildAndAddToParser(argParser);
      systemInfo =
              BooleanArgument.builder("systemInfo")
                      .shortIdentifier('s')
                      .description(INFO_DSCORE_DESCRIPTION_SYSINFO.get())
                      .buildAndAddToParser(argParser);
      useLastKnownGoodConfig =
           new BooleanArgument("lastknowngoodconfig", 'L',
                               "useLastKnownGoodConfig",
                               INFO_DSCORE_DESCRIPTION_LASTKNOWNGOODCFG.get());
      argParser.addArgument(useLastKnownGoodConfig);
      noDetach = new BooleanArgument("nodetach", 'N', "nodetach",
                                     INFO_DSCORE_DESCRIPTION_NODETACH.get());
      argParser.addArgument(noDetach);
              BooleanArgument.builder("useLastKnownGoodConfig")
                      .shortIdentifier('L')
                      .description(INFO_DSCORE_DESCRIPTION_LASTKNOWNGOODCFG.get())
                      .buildAndAddToParser(argParser);
      noDetach =
              BooleanArgument.builder("nodetach")
                      .shortIdentifier('N')
                      .description(INFO_DSCORE_DESCRIPTION_NODETACH.get())
                      .buildAndAddToParser(argParser);
      quietMode = CommonArguments.getQuiet();
      argParser.addArgument(quietMode);
      // Not used in this class, but required by the start-ds script
      // (see issue #3814)
      timeout = new IntegerArgument("timeout", 't', "timeout", true, false,
                                    true, INFO_SECONDS_PLACEHOLDER.get(),
                                    DEFAULT_TIMEOUT,
                                    null, true, 0, false,
                                    0, INFO_DSCORE_DESCRIPTION_TIMEOUT.get());
      argParser.addArgument(timeout);
      // Not used in this class, but required by the start-ds script (see issue #3814)
      timeout =
              IntegerArgument.builder("timeout")
                      .shortIdentifier('t')
                      .description(INFO_DSCORE_DESCRIPTION_TIMEOUT.get())
                      .required()
                      .lowerBound(0)
                      .defaultValue(DEFAULT_TIMEOUT)
                      .valuePlaceholder(INFO_SECONDS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
      argParser.setUsageArgument(displayUsage);
opendj-server-legacy/src/main/java/org/opends/server/plugins/profiler/ProfileViewer.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS
 *      Portions Copyright 2012-2016 ForgeRock AS
 */
package org.opends.server.plugins.profiler;
@@ -121,15 +121,18 @@
    try
    {
      fileNames =
        new StringArgument("filenames", 'f', "fileName", true, true, true,
                           INFO_FILE_PLACEHOLDER.get(), null, null,
                           INFO_PROFILEVIEWER_DESCRIPTION_FILENAMES.get());
      argParser.addArgument(fileNames);
      useGUI = new BooleanArgument(
              "usegui", 'g', "useGUI",
              INFO_PROFILEVIEWER_DESCRIPTION_USE_GUI.get());
      argParser.addArgument(useGUI);
              StringArgument.builder("fileName")
                      .shortIdentifier('f')
                      .description(INFO_PROFILEVIEWER_DESCRIPTION_FILENAMES.get())
                      .multiValued()
                      .required()
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      useGUI =
              BooleanArgument.builder("useGUI")
                      .shortIdentifier('g')
                      .description(INFO_PROFILEVIEWER_DESCRIPTION_USE_GUI.get())
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/BackUpDB.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2013-2015 ForgeRock AS.
 *      Portions Copyright 2013-2016 ForgeRock AS.
 */
package org.opends.server.tools;
@@ -143,7 +143,6 @@
  /** Define the command-line arguments that may be used with this program. */
  private BooleanArgument backUpAll;
  private BooleanArgument compress;
  private BooleanArgument displayUsage;
  private BooleanArgument encrypt;
  private BooleanArgument hash;
  private BooleanArgument incremental;
@@ -174,97 +173,80 @@
    try
    {
      configClass =
           new StringArgument(
                   "configclass", OPTION_SHORT_CONFIG_CLASS,
                   OPTION_LONG_CONFIG_CLASS, true, false,
                   true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                   ConfigFileHandler.class.getName(), null,
                   INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
           new StringArgument(
                   "configfile", 'f', "configFile", true, false,
                   true, INFO_CONFIGFILE_PLACEHOLDER.get(), null, null,
                   INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backendID =
           new StringArgument(
                   "backendid", 'n', "backendID", false, true, true,
                   INFO_BACKENDNAME_PLACEHOLDER.get(), null, null,
                   INFO_BACKUPDB_DESCRIPTION_BACKEND_ID.get());
      argParser.addArgument(backendID);
      backUpAll = new BooleanArgument(
                  "backupall", 'a', "backUpAll",
                  INFO_BACKUPDB_DESCRIPTION_BACKUP_ALL.get());
      argParser.addArgument(backUpAll);
              StringArgument.builder("backendID")
                      .shortIdentifier('n')
                      .description(INFO_BACKUPDB_DESCRIPTION_BACKEND_ID.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BACKENDNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backUpAll =
              BooleanArgument.builder("backUpAll")
                      .shortIdentifier('a')
                      .description(INFO_BACKUPDB_DESCRIPTION_BACKUP_ALL.get())
                      .buildAndAddToParser(argParser);
      backupIDString =
           new StringArgument(
                   "backupid", 'I', "backupID", false, false, true,
                   INFO_BACKUPID_PLACEHOLDER.get(), null, null,
                   INFO_BACKUPDB_DESCRIPTION_BACKUP_ID.get());
      argParser.addArgument(backupIDString);
              StringArgument.builder("backupID")
                      .shortIdentifier('I')
                      .description(INFO_BACKUPDB_DESCRIPTION_BACKUP_ID.get())
                      .valuePlaceholder(INFO_BACKUPID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backupDirectory =
           new StringArgument(
                   "backupdirectory", 'd', "backupDirectory", true,
                   false, true, INFO_BACKUPDIR_PLACEHOLDER.get(), null, null,
                   INFO_BACKUPDB_DESCRIPTION_BACKUP_DIR.get());
      argParser.addArgument(backupDirectory);
      incremental = new BooleanArgument(
                  "incremental", 'i', "incremental",
                  INFO_BACKUPDB_DESCRIPTION_INCREMENTAL.get());
      argParser.addArgument(incremental);
              StringArgument.builder("backupDirectory")
                      .shortIdentifier('d')
                      .description(INFO_BACKUPDB_DESCRIPTION_BACKUP_DIR.get())
                      .required()
                      .valuePlaceholder(INFO_BACKUPDIR_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      incremental =
              BooleanArgument.builder("incremental")
                      .shortIdentifier('i')
                      .description(INFO_BACKUPDB_DESCRIPTION_INCREMENTAL.get())
                      .buildAndAddToParser(argParser);
      incrementalBaseID =
           new StringArgument(
                   "incrementalbaseid", 'B', "incrementalBaseID",
                   false, false, true, INFO_BACKUPID_PLACEHOLDER.get(), null,
                   null,
                   INFO_BACKUPDB_DESCRIPTION_INCREMENTAL_BASE_ID.get());
      argParser.addArgument(incrementalBaseID);
      compress = new BooleanArgument(
                  "compress", OPTION_SHORT_COMPRESS,
                  OPTION_LONG_COMPRESS,
                  INFO_BACKUPDB_DESCRIPTION_COMPRESS.get());
      argParser.addArgument(compress);
      encrypt = new BooleanArgument(
                  "encrypt", 'y', "encrypt",
                  INFO_BACKUPDB_DESCRIPTION_ENCRYPT.get());
      argParser.addArgument(encrypt);
      hash = new BooleanArgument(
                  "hash", 'A', "hash",
                  INFO_BACKUPDB_DESCRIPTION_HASH.get());
      argParser.addArgument(hash);
              StringArgument.builder("incrementalBaseID")
                      .shortIdentifier('B')
                      .description(INFO_BACKUPDB_DESCRIPTION_INCREMENTAL_BASE_ID.get())
                      .valuePlaceholder(INFO_BACKUPID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      compress =
              BooleanArgument.builder(OPTION_LONG_COMPRESS)
                      .shortIdentifier(OPTION_SHORT_COMPRESS)
                      .description(INFO_BACKUPDB_DESCRIPTION_COMPRESS.get())
                      .buildAndAddToParser(argParser);
      encrypt =
              BooleanArgument.builder("encrypt")
                      .shortIdentifier('y')
                      .description(INFO_BACKUPDB_DESCRIPTION_ENCRYPT.get())
                      .buildAndAddToParser(argParser);
      hash =
              BooleanArgument.builder("hash")
                      .shortIdentifier('A')
                      .description(INFO_BACKUPDB_DESCRIPTION_HASH.get())
                      .buildAndAddToParser(argParser);
      signHash =
           new BooleanArgument(
                   "signhash", 's', "signHash",
                   INFO_BACKUPDB_DESCRIPTION_SIGN_HASH.get());
      argParser.addArgument(signHash);
              BooleanArgument.builder("signHash")
                      .shortIdentifier('s')
                      .description(INFO_BACKUPDB_DESCRIPTION_SIGN_HASH.get())
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      final BooleanArgument displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
      argParser.setUsageArgument(displayUsage);
    }
@@ -275,14 +257,7 @@
    }
    // Init the default values so that they can appear also on the usage.
    try
    {
      argParser.getArguments().initArgumentsWithConfiguration();
    }
    catch (ConfigException ce)
    {
      // Ignore.
    }
    argParser.getArguments().initArgumentsWithConfiguration(argParser);
    // Parse the command-line arguments provided to this program.
    try
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureDS.java
@@ -22,10 +22,13 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS.
 *      Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.CliMessages.INFO_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_JMXPORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_PORT_PLACEHOLDER;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.messages.ExtensionMessages.*;
import static org.opends.messages.ProtocolMessages.*;
@@ -365,19 +368,22 @@
  {
    try
    {
      configFile = new StringArgument(
          "configfile", 'c', "configFile",
          true, false, true, INFO_CONFIGFILE_PLACEHOLDER.get(),
          null, null, INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      configClass = new StringArgument(
          "configclass", OPTION_SHORT_CONFIG_CLASS, OPTION_LONG_CONFIG_CLASS,
          false, false, true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
          ConfigFileHandler.class.getName(), null, INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      String defaultHostName;
      try
@@ -390,106 +396,117 @@
        defaultHostName = "localhost";
      }
      hostName = new StringArgument(
          OPTION_LONG_HOST.toLowerCase(), OPTION_SHORT_HOST, OPTION_LONG_HOST,
          false, false, true, INFO_HOST_PLACEHOLDER.get(),
          defaultHostName, null, INFO_INSTALLDS_DESCRIPTION_HOST_NAME.get());
      argParser.addArgument(hostName);
      ldapPort = new IntegerArgument(
          "ldapport", OPTION_SHORT_PORT, "ldapPort",
          false, false, true, INFO_LDAPPORT_PLACEHOLDER.get(),
          389, null, true, 1, true, 65535, INFO_CONFIGDS_DESCRIPTION_LDAP_PORT.get());
      argParser.addArgument(ldapPort);
      adminConnectorPort = new IntegerArgument(
          "adminConnectorPort".toLowerCase(), null, "adminConnectorPort",
          false, false, true, INFO_PORT_PLACEHOLDER.get(),
          4444, "adminConnectorPort", true, 1, true, 65535, INFO_INSTALLDS_DESCRIPTION_ADMINCONNECTORPORT.get());
      argParser.addArgument(adminConnectorPort);
      ldapsPort = new IntegerArgument(
          "ldapsPort", 'P', "ldapsPort",
          false, false, true, INFO_LDAPPORT_PLACEHOLDER.get(),
          636, null, true, 1, true, 65535, INFO_CONFIGDS_DESCRIPTION_LDAPS_PORT.get());
      argParser.addArgument(ldapsPort);
      enableStartTLS = new BooleanArgument(
          "enableStartTLS", OPTION_SHORT_START_TLS, "enableStartTLS",
          INFO_CONFIGDS_DESCRIPTION_ENABLE_START_TLS.get());
      argParser.addArgument(enableStartTLS);
      jmxPort = new IntegerArgument(
          "jmxport", 'x', "jmxPort",
          false, false, true, INFO_JMXPORT_PLACEHOLDER.get(),
          CliConstants.DEFAULT_JMX_PORT, null, true, 1, true, 65535, INFO_CONFIGDS_DESCRIPTION_JMX_PORT.get());
      argParser.addArgument(jmxPort);
      keyManagerProviderDN = new StringArgument(
          "keymanagerproviderdn", 'k', "keyManagerProviderDN",
          false, false, true, INFO_KEY_MANAGER_PROVIDER_DN_PLACEHOLDER.get(),
          null, null, INFO_CONFIGDS_DESCRIPTION_KEYMANAGER_PROVIDER_DN.get());
      argParser.addArgument(keyManagerProviderDN);
      trustManagerProviderDN = new StringArgument(
          "trustmanagerproviderdn", 't', "trustManagerProviderDN",
          false, false, true, INFO_TRUST_MANAGER_PROVIDER_DN_PLACEHOLDER.get(),
          null, null, INFO_CONFIGDS_DESCRIPTION_TRUSTMANAGER_PROVIDER_DN.get());
      argParser.addArgument(trustManagerProviderDN);
      keyManagerPath = new StringArgument(
          "keymanagerpath", 'm', "keyManagerPath",
          false, false, true, INFO_KEY_MANAGER_PATH_PLACEHOLDER.get(),
          null, null, INFO_CONFIGDS_DESCRIPTION_KEYMANAGER_PATH.get());
      argParser.addArgument(keyManagerPath);
      certNickNames = new StringArgument(
          "certnickname", 'a', "certNickName",
          false, true, true, INFO_NICKNAME_PLACEHOLDER.get(),
          null, null, INFO_CONFIGDS_DESCRIPTION_CERTNICKNAME.get());
      argParser.addArgument(certNickNames);
      baseDNString = new StringArgument(
          "basedn", OPTION_SHORT_BASEDN, OPTION_LONG_BASEDN,
          false, true, true, INFO_BASEDN_PLACEHOLDER.get(),
          "dc=example,dc=com", null, INFO_CONFIGDS_DESCRIPTION_BASE_DN.get());
      argParser.addArgument(baseDNString);
      rootDNString = new StringArgument(
          "rootdn", OPTION_SHORT_ROOT_USER_DN, OPTION_LONG_ROOT_USER_DN,
          false, false, true, INFO_ROOT_USER_DN_PLACEHOLDER.get(),
          "cn=Directory Manager", null, INFO_CONFIGDS_DESCRIPTION_ROOT_DN.get());
      argParser.addArgument(rootDNString);
      rootPassword = new StringArgument(
          "rootpw", OPTION_SHORT_BINDPWD, "rootPassword",
          false, false, true, INFO_ROOT_USER_PWD_PLACEHOLDER.get(),
          null, null, INFO_CONFIGDS_DESCRIPTION_ROOT_PW.get());
      argParser.addArgument(rootPassword);
      rootPasswordFile = new FileBasedArgument(
          "rootpwfile", OPTION_SHORT_BINDPWD_FILE, "rootPasswordFile",
          false, false, INFO_FILE_PLACEHOLDER.get(),
          null, null, INFO_CONFIGDS_DESCRIPTION_ROOT_PW_FILE.get());
      argParser.addArgument(rootPasswordFile);
      hostName =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_INSTALLDS_DESCRIPTION_HOST_NAME.get())
                      .defaultValue(defaultHostName)
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ldapPort =
              IntegerArgument.builder("ldapPort")
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_CONFIGDS_DESCRIPTION_LDAP_PORT.get())
                      .range(1, 65535)
                      .defaultValue(389)
                      .valuePlaceholder(INFO_LDAPPORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      adminConnectorPort =
              IntegerArgument.builder("adminConnectorPort")
                      .description(INFO_INSTALLDS_DESCRIPTION_ADMINCONNECTORPORT.get())
                      .range(1, 65535)
                      .defaultValue(4444)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ldapsPort =
              IntegerArgument.builder("ldapsPort")
                      .shortIdentifier('P')
                      .description(INFO_CONFIGDS_DESCRIPTION_LDAPS_PORT.get())
                      .range(1, 65535)
                      .defaultValue(636)
                      .valuePlaceholder(INFO_LDAPPORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      enableStartTLS =
              BooleanArgument.builder("enableStartTLS")
                      .shortIdentifier(OPTION_SHORT_START_TLS)
                      .description(INFO_CONFIGDS_DESCRIPTION_ENABLE_START_TLS.get())
                      .buildAndAddToParser(argParser);
      jmxPort =
              IntegerArgument.builder("jmxPort")
                      .shortIdentifier('x')
                      .description(INFO_CONFIGDS_DESCRIPTION_JMX_PORT.get())
                      .range(1, 65535)
                      .defaultValue(CliConstants.DEFAULT_JMX_PORT)
                      .valuePlaceholder(INFO_JMXPORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyManagerProviderDN =
              StringArgument.builder("keyManagerProviderDN")
                      .shortIdentifier('k')
                      .description(INFO_CONFIGDS_DESCRIPTION_KEYMANAGER_PROVIDER_DN.get())
                      .valuePlaceholder(INFO_KEY_MANAGER_PROVIDER_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustManagerProviderDN =
              StringArgument.builder("trustManagerProviderDN")
                      .shortIdentifier('t')
                      .description(INFO_CONFIGDS_DESCRIPTION_TRUSTMANAGER_PROVIDER_DN.get())
                      .valuePlaceholder(INFO_TRUST_MANAGER_PROVIDER_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyManagerPath =
              StringArgument.builder("keyManagerPath")
                      .shortIdentifier('m')
                      .description(INFO_CONFIGDS_DESCRIPTION_KEYMANAGER_PATH.get())
                      .valuePlaceholder(INFO_KEY_MANAGER_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickNames =
              StringArgument.builder("certNickName")
                      .shortIdentifier('a')
                      .description(INFO_CONFIGDS_DESCRIPTION_CERTNICKNAME.get())
                      .multiValued()
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      baseDNString =
              StringArgument.builder(OPTION_LONG_BASEDN)
                      .shortIdentifier(OPTION_SHORT_BASEDN)
                      .description(INFO_CONFIGDS_DESCRIPTION_BASE_DN.get())
                      .multiValued()
                      .defaultValue("dc=example,dc=com")
                      .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      rootDNString =
              StringArgument.builder(OPTION_LONG_ROOT_USER_DN)
                      .shortIdentifier(OPTION_SHORT_ROOT_USER_DN)
                      .description(INFO_CONFIGDS_DESCRIPTION_ROOT_DN.get())
                      .defaultValue("cn=Directory Manager")
                      .valuePlaceholder(INFO_ROOT_USER_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      rootPassword =
              StringArgument.builder("rootPassword")
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_CONFIGDS_DESCRIPTION_ROOT_PW.get())
                      .valuePlaceholder(INFO_ROOT_USER_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      rootPasswordFile =
              FileBasedArgument.builder("rootPasswordFile")
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_CONFIGDS_DESCRIPTION_ROOT_PW_FILE.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
      argParser.setUsageArgument(showUsage);
      serverRoot = new StringArgument(
          "serverRoot", OPTION_SHORT_SERVER_ROOT, OPTION_LONG_SERVER_ROOT,
          false, false, true, INFO_SERVER_ROOT_DIR_PLACEHOLDER.get(),
          null, null, null);
      serverRoot.setHidden(true);
      argParser.addArgument(serverRoot);
      backendType = new StringArgument(
          OPTION_LONG_BACKEND_TYPE.toLowerCase(), null, OPTION_LONG_BACKEND_TYPE,
          false, false, true, INFO_INSTALLDS_BACKEND_TYPE_PLACEHOLDER.get(),
          null, OPTION_LONG_BACKEND_TYPE, INFO_INSTALLDS_DESCRIPTION_BACKEND_TYPE.get()
      );
      argParser.addArgument(backendType);
      serverRoot =
              StringArgument.builder(OPTION_LONG_SERVER_ROOT)
                      .shortIdentifier(OPTION_SHORT_SERVER_ROOT)
                      .hidden()
                      .valuePlaceholder(INFO_SERVER_ROOT_DIR_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backendType =
              StringArgument.builder(OPTION_LONG_BACKEND_TYPE)
                      .description(INFO_INSTALLDS_DESCRIPTION_BACKEND_TYPE.get())
                      .valuePlaceholder(INFO_INSTALLDS_BACKEND_TYPE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
    }
    catch (final ArgumentException ae)
    {
opendj-server-legacy/src/main/java/org/opends/server/tools/ConfigureWindowsService.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS.
 *      Portions Copyright 2011-2016 ForgeRock AS.
 */
package org.opends.server.tools;
@@ -172,22 +172,27 @@
    try
    {
      enableService = new BooleanArgument("enableservice", 'e', "enableService",
          INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_ENABLE.get());
      argParser.addArgument(enableService);
      disableService = new BooleanArgument("disableservice", 'd', "disableService",
          INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_DISABLE.get());
      argParser.addArgument(disableService);
      serviceState = new BooleanArgument("servicestate", 's', "serviceState",
          INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_STATE.get());
      argParser.addArgument(serviceState);
      cleanupService = new StringArgument("cleanupservice", 'c', "cleanupService", false, false, true,
          INFO_SERVICE_NAME_PLACEHOLDER.get(), null, null,
          INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_CLEANUP.get());
      argParser.addArgument(cleanupService);
      enableService =
              BooleanArgument.builder("enableService")
                      .shortIdentifier('e')
                      .description(INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_ENABLE.get())
                      .buildAndAddToParser(argParser);
      disableService =
              BooleanArgument.builder("disableService")
                      .shortIdentifier('d')
                      .description(INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_DISABLE.get())
                      .buildAndAddToParser(argParser);
      serviceState =
              BooleanArgument.builder("serviceState")
                      .shortIdentifier('s')
                      .description(INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_STATE.get())
                      .buildAndAddToParser(argParser);
      cleanupService =
              StringArgument.builder("cleanupService")
                      .shortIdentifier('c')
                      .description(INFO_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_CLEANUP.get())
                      .valuePlaceholder(INFO_SERVICE_NAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2008 Sun Microsystems, Inc.
 *      Portions Copyright 2010-2015 ForgeRock AS.
 *      Portions Copyright 2010-2016 ForgeRock AS.
 */
package org.opends.server.tools;
@@ -121,33 +121,31 @@
    try
    {
      outputFile = new StringArgument("outputfile", 'f', "outputFile", true,
                                      false, true, INFO_PATH_PLACEHOLDER.get(),
                                      null, null,
                                      INFO_CREATERC_OUTFILE_DESCRIPTION.get());
      argParser.addArgument(outputFile);
      userName = new StringArgument("username", 'u', "userName", false, false,
                                    true, INFO_USER_NAME_PLACEHOLDER.get(),
                                    null, null,
                                    INFO_CREATERC_USER_DESCRIPTION.get());
      argParser.addArgument(userName);
      javaHome = new StringArgument("javahome", 'j', "javaHome", false, false,
                                    true, INFO_PATH_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_CREATERC_JAVA_HOME_DESCRIPTION.get());
      argParser.addArgument(javaHome);
      javaArgs = new StringArgument("javaargs", 'J', "javaArgs", false, false,
                                    true, INFO_ARGS_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_CREATERC_JAVA_ARGS_DESCRIPTION.get());
      argParser.addArgument(javaArgs);
      outputFile =
              StringArgument.builder("outputFile")
                      .shortIdentifier('f')
                      .description(INFO_CREATERC_OUTFILE_DESCRIPTION.get())
                      .required()
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      userName =
              StringArgument.builder("userName")
                      .shortIdentifier('u')
                      .description(INFO_CREATERC_USER_DESCRIPTION.get())
                      .valuePlaceholder(INFO_USER_NAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      javaHome =
              StringArgument.builder("javaHome")
                      .shortIdentifier('j')
                      .description(INFO_CREATERC_JAVA_HOME_DESCRIPTION.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      javaArgs =
              StringArgument.builder("javaArgs")
                      .shortIdentifier('J')
                      .description(INFO_CREATERC_JAVA_ARGS_DESCRIPTION.get())
                      .valuePlaceholder(INFO_ARGS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/EncodePassword.java
@@ -22,11 +22,12 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS.
 *      Portions Copyright 2011-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ConfigMessages.*;
@@ -159,91 +160,76 @@
    argParser.setShortToolDescription(REF_SHORT_DESC_ENCODE_PASSWORD.get());
    argParser.setVersionHandler(new DirectoryServerVersionHandler());
    // Initialize all the command-line argument types and register them with the
    // parser.
    // Initialize all the command-line argument types and register them with the parser.
    try
    {
      listSchemes = new BooleanArgument(
              "listschemes", 'l', "listSchemes",
              INFO_ENCPW_DESCRIPTION_LISTSCHEMES.get());
      argParser.addArgument(listSchemes);
      interactivePassword = new BooleanArgument(
              "interactivePassword", 'i',
              "interactivePassword",
              INFO_ENCPW_DESCRIPTION_INPUT_PW.get());
      argParser.addArgument(interactivePassword);
      clearPassword = new StringArgument("clearpw", 'c', "clearPassword", false,
                                         false, true, INFO_CLEAR_PWD.get(),
                                         null, null,
                                         INFO_ENCPW_DESCRIPTION_CLEAR_PW.get());
      argParser.addArgument(clearPassword);
      listSchemes =
              BooleanArgument.builder("listSchemes")
                      .shortIdentifier('l')
                      .description(INFO_ENCPW_DESCRIPTION_LISTSCHEMES.get())
                      .buildAndAddToParser(argParser);
      interactivePassword =
              BooleanArgument.builder("interactivePassword")
                      .shortIdentifier('i')
                      .description(INFO_ENCPW_DESCRIPTION_INPUT_PW.get())
                      .buildAndAddToParser(argParser);
      clearPassword =
              StringArgument.builder("clearPassword")
                      .shortIdentifier('c')
                      .description(INFO_ENCPW_DESCRIPTION_CLEAR_PW.get())
                      .valuePlaceholder(INFO_CLEAR_PWD.get())
                      .buildAndAddToParser(argParser);
      clearPasswordFile =
           new FileBasedArgument("clearpwfile", 'f', "clearPasswordFile", false,
                                 false, INFO_FILE_PLACEHOLDER.get(), null, null,
                                 INFO_ENCPW_DESCRIPTION_CLEAR_PW_FILE.get());
      argParser.addArgument(clearPasswordFile);
      encodedPassword = new StringArgument(
              "encodedpw", 'e', "encodedPassword",
              false, false, true, INFO_ENCODED_PWD_PLACEHOLDER.get(),
              null, null,
              INFO_ENCPW_DESCRIPTION_ENCODED_PW.get());
      argParser.addArgument(encodedPassword);
              FileBasedArgument.builder("clearPasswordFile")
                      .shortIdentifier('f')
                      .description(INFO_ENCPW_DESCRIPTION_CLEAR_PW_FILE.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      encodedPassword =
              StringArgument.builder("encodedPassword")
                      .shortIdentifier('e')
                      .description(INFO_ENCPW_DESCRIPTION_ENCODED_PW.get())
                      .valuePlaceholder(INFO_ENCODED_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      encodedPasswordFile =
           new FileBasedArgument("encodedpwfile", 'E', "encodedPasswordFile",
                                 false, false, INFO_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_ENCPW_DESCRIPTION_ENCODED_PW_FILE.get());
      argParser.addArgument(encodedPasswordFile);
      configClass = new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                                       OPTION_LONG_CONFIG_CLASS,
                                       true, false, true,
                                       INFO_CONFIGCLASS_PLACEHOLDER.get(),
                                       ConfigFileHandler.class.getName(), null,
                                       INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      configFile = new StringArgument("configfile", 'F', "configFile",
                                      true, false, true,
                                      INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      schemeName = new StringArgument("scheme", 's', "storageScheme", false,
                                      false, true,
                                      INFO_STORAGE_SCHEME_PLACEHOLDER.get(),
                                      null, null,
                                      INFO_ENCPW_DESCRIPTION_SCHEME.get());
      argParser.addArgument(schemeName);
      authPasswordSyntax = new BooleanArgument(
              "authpasswordsyntax", 'a',
              "authPasswordSyntax",
              INFO_ENCPW_DESCRIPTION_AUTHPW.get());
      argParser.addArgument(authPasswordSyntax);
              FileBasedArgument.builder("encodedPasswordFile")
                      .shortIdentifier('E')
                      .description(INFO_ENCPW_DESCRIPTION_ENCODED_PW_FILE.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('F')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      schemeName =
              StringArgument.builder("storageScheme")
                      .shortIdentifier('s')
                      .description(INFO_ENCPW_DESCRIPTION_SCHEME.get())
                      .valuePlaceholder(INFO_STORAGE_SCHEME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      authPasswordSyntax =
              BooleanArgument.builder("authPasswordSyntax")
                      .shortIdentifier('a')
                      .description(INFO_ENCPW_DESCRIPTION_AUTHPW.get())
                      .buildAndAddToParser(argParser);
      useCompareResultCode =
           new BooleanArgument("usecompareresultcode", 'r',
                               "useCompareResultCode",
                               INFO_ENCPW_DESCRIPTION_USE_COMPARE_RESULT.get());
      argParser.addArgument(useCompareResultCode);
              BooleanArgument.builder("useCompareResultCode")
                      .shortIdentifier('r')
                      .description(INFO_ENCPW_DESCRIPTION_USE_COMPARE_RESULT.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java
@@ -175,129 +175,112 @@
    try
    {
      configClass =
           new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                              OPTION_LONG_CONFIG_CLASS, true, false,
                              true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                              ConfigFileHandler.class.getName(), null,
                              INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
           new StringArgument("configfile", 'f', "configFile", true, false,
                              true, INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ldifFile =
           new StringArgument("ldiffile", OPTION_SHORT_LDIF_FILE,
                              OPTION_LONG_LDIF_FILE,true, false, true,
                              INFO_LDIFFILE_PLACEHOLDER.get(), null, null,
                              INFO_LDIFEXPORT_DESCRIPTION_LDIF_FILE.get());
      argParser.addArgument(ldifFile);
      appendToLDIF = new BooleanArgument(
                   "appendldif", 'a', "appendToLDIF",
                   INFO_LDIFEXPORT_DESCRIPTION_APPEND_TO_LDIF.get());
      argParser.addArgument(appendToLDIF);
              StringArgument.builder(OPTION_LONG_LDIF_FILE)
                      .shortIdentifier(OPTION_SHORT_LDIF_FILE)
                      .description(INFO_LDIFEXPORT_DESCRIPTION_LDIF_FILE.get())
                      .required()
                      .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      appendToLDIF =
              BooleanArgument.builder("appendToLDIF")
                      .shortIdentifier('a')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_APPEND_TO_LDIF.get())
                      .buildAndAddToParser(argParser);
      backendID =
           new StringArgument("backendid", 'n', "backendID", true, false, true,
                              INFO_BACKENDNAME_PLACEHOLDER.get(), null, null,
                              INFO_LDIFEXPORT_DESCRIPTION_BACKEND_ID.get());
      argParser.addArgument(backendID);
              StringArgument.builder("backendID")
                      .shortIdentifier('n')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_BACKEND_ID.get())
                      .required()
                      .valuePlaceholder(INFO_BACKENDNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      includeBranchStrings =
           new StringArgument("includebranch", 'b', "includeBranch", false,
                              true, true, INFO_BRANCH_DN_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFEXPORT_DESCRIPTION_INCLUDE_BRANCH.get());
      argParser.addArgument(includeBranchStrings);
              StringArgument.builder("includeBranch")
                      .shortIdentifier('b')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_INCLUDE_BRANCH.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BRANCH_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeBranchStrings =
           new StringArgument("excludebranch", 'B', "excludeBranch", false,
                              true, true, INFO_BRANCH_DN_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_BRANCH.get());
      argParser.addArgument(excludeBranchStrings);
              StringArgument.builder("excludeBranch")
                      .shortIdentifier('B')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_BRANCH.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BRANCH_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      includeAttributeStrings =
           new StringArgument(
                   "includeattribute", 'i', "includeAttribute",
                   false, true, true, INFO_ATTRIBUTE_PLACEHOLDER.get(), null,
                   null,
                   INFO_LDIFEXPORT_DESCRIPTION_INCLUDE_ATTRIBUTE.get());
      argParser.addArgument(includeAttributeStrings);
              StringArgument.builder("includeAttribute")
                      .shortIdentifier('i')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_INCLUDE_ATTRIBUTE.get())
                      .multiValued()
                      .valuePlaceholder(INFO_ATTRIBUTE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeAttributeStrings =
           new StringArgument(
                   "excludeattribute", 'e', "excludeAttribute",
                   false, true, true, INFO_ATTRIBUTE_PLACEHOLDER.get(), null,
                   null,
                   INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_ATTRIBUTE.get());
      argParser.addArgument(excludeAttributeStrings);
              StringArgument.builder("excludeAttribute")
                      .shortIdentifier('e')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_ATTRIBUTE.get())
                      .multiValued()
                      .valuePlaceholder(INFO_ATTRIBUTE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      includeFilterStrings =
           new StringArgument("includefilter", 'I', "includeFilter",
                              false, true, true, INFO_FILTER_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFEXPORT_DESCRIPTION_INCLUDE_FILTER.get());
      argParser.addArgument(includeFilterStrings);
              StringArgument.builder("includeFilter")
                      .shortIdentifier('I')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_INCLUDE_FILTER.get())
                      .multiValued()
                      .valuePlaceholder(INFO_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeFilterStrings =
           new StringArgument("excludefilter", 'E', "excludeFilter",
                              false, true, true, INFO_FILTER_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_FILTER.get());
      argParser.addArgument(excludeFilterStrings);
              StringArgument.builder("excludeFilter")
                      .shortIdentifier('E')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_FILTER.get())
                      .multiValued()
                      .valuePlaceholder(INFO_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeOperationalAttrs =
           new BooleanArgument("excludeoperational", 'O', "excludeOperational",
                    INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_OPERATIONAL.get());
      argParser.addArgument(excludeOperationalAttrs);
              BooleanArgument.builder("excludeOperational")
                      .shortIdentifier('O')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_EXCLUDE_OPERATIONAL.get())
                      .buildAndAddToParser(argParser);
      wrapColumn =
           new IntegerArgument("wrapcolumn", null, "wrapColumn", false, false,
                               true, INFO_WRAP_COLUMN_PLACEHOLDER.get(), 0,
                               null, true, 0, false, 0,
                               INFO_LDIFEXPORT_DESCRIPTION_WRAP_COLUMN.get());
      argParser.addArgument(wrapColumn);
              IntegerArgument.builder("wrapColumn")
                      .description(INFO_LDIFEXPORT_DESCRIPTION_WRAP_COLUMN.get())
                      .lowerBound(0)
                      .defaultValue(0)
                      .valuePlaceholder(INFO_WRAP_COLUMN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      compressLDIF =
           new BooleanArgument("compressldif", OPTION_SHORT_COMPRESS,
                               OPTION_LONG_COMPRESS,
                               INFO_LDIFEXPORT_DESCRIPTION_COMPRESS_LDIF.get());
      argParser.addArgument(compressLDIF);
              BooleanArgument.builder(OPTION_LONG_COMPRESS)
                      .shortIdentifier(OPTION_SHORT_COMPRESS)
                      .description(INFO_LDIFEXPORT_DESCRIPTION_COMPRESS_LDIF.get())
                      .buildAndAddToParser(argParser);
      encryptLDIF =
           new BooleanArgument("encryptldif", 'y', "encryptLDIF",
                               INFO_LDIFEXPORT_DESCRIPTION_ENCRYPT_LDIF.get());
      encryptLDIF.setHidden(true); // See issue #27
      argParser.addArgument(encryptLDIF);
              BooleanArgument.builder("encryptLDIF")
                      .shortIdentifier('y')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_ENCRYPT_LDIF.get())
                      .hidden() // See issue #27
                      .buildAndAddToParser(argParser);
      signHash =
           new BooleanArgument("signhash", 's', "signHash",
                               INFO_LDIFEXPORT_DESCRIPTION_SIGN_HASH.get());
      signHash.setHidden(true); // See issue #28
      argParser.addArgument(signHash);
              BooleanArgument.builder("signHash")
                      .shortIdentifier('s')
                      .description(INFO_LDIFEXPORT_DESCRIPTION_SIGN_HASH.get())
                      .hidden() // See issue #28
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
@@ -311,14 +294,7 @@
    // Init the default values so that they can appear also on the usage.
    try
    {
      argParser.getArguments().initArgumentsWithConfiguration();
    }
    catch (ConfigException ce)
    {
      // Ignore.
    }
    argParser.getArguments().initArgumentsWithConfiguration(argParser);
    // Parse the command-line arguments provided to this program.
    try
opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
@@ -26,9 +26,11 @@
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.CliMessages.INFO_SEED_PLACEHOLDER;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.util.StaticUtils.*;
import static com.forgerock.opendj.cli.CommonArguments.*;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.Utils.*;
@@ -149,7 +151,6 @@
  /** Define the command-line arguments that may be used with this program. */
  private BooleanArgument countRejects;
  private BooleanArgument displayUsage;
  private BooleanArgument isCompressed;
  private BooleanArgument isEncrypted;
  private BooleanArgument overwrite;
@@ -202,14 +203,7 @@
    }
    // Init the default values so that they can appear also on the usage.
    try
    {
      argParser.getArguments().initArgumentsWithConfiguration();
    }
    catch (ConfigException ce)
    {
      // Ignore.
    }
    argParser.getArguments().initArgumentsWithConfiguration(argParser);
    // Parse the command-line arguments provided to this program.
    try
@@ -295,186 +289,155 @@
  private void createArguments(LDAPConnectionArgumentParser argParser) throws ArgumentException
  {
      configClass =
           new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                              OPTION_LONG_CONFIG_CLASS, true, false,
                              true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                              ConfigFileHandler.class.getName(), null,
                              INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
           new StringArgument("configfile", 'f', "configFile", true, false,
                              true, INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ldifFiles =
           new StringArgument("ldiffile", OPTION_SHORT_LDIF_FILE,
                              OPTION_LONG_LDIF_FILE, false, true, true,
                              INFO_LDIFFILE_PLACEHOLDER.get(), null, null,
                              INFO_LDIFIMPORT_DESCRIPTION_LDIF_FILE.get());
      argParser.addArgument(ldifFiles);
              StringArgument.builder(OPTION_LONG_LDIF_FILE)
                      .shortIdentifier(OPTION_SHORT_LDIF_FILE)
                      .description(INFO_LDIFIMPORT_DESCRIPTION_LDIF_FILE.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      templateFile =
           new StringArgument("templatefile", 'A', "templateFile", false, false,
                              true, INFO_TEMPLATE_FILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_LDIFIMPORT_DESCRIPTION_TEMPLATE_FILE.get());
      argParser.addArgument(templateFile);
              StringArgument.builder("templateFile")
                      .shortIdentifier('A')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_TEMPLATE_FILE.get())
                      .valuePlaceholder(INFO_TEMPLATE_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backendID =
           new StringArgument("backendid", 'n', "backendID", false, false, true,
                              INFO_BACKENDNAME_PLACEHOLDER.get(), null, null,
                              INFO_LDIFIMPORT_DESCRIPTION_BACKEND_ID.get());
      argParser.addArgument(backendID);
              StringArgument.builder("backendID")
                      .shortIdentifier('n')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_BACKEND_ID.get())
                      .valuePlaceholder(INFO_BACKENDNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      clearBackend =
          new BooleanArgument("clearbackend", 'F', "clearBackend",
                              INFO_LDIFIMPORT_DESCRIPTION_CLEAR_BACKEND.get());
      argParser.addArgument(clearBackend);
              BooleanArgument.builder("clearBackend")
                      .shortIdentifier('F')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_CLEAR_BACKEND.get())
                      .buildAndAddToParser(argParser);
      includeBranchStrings =
           new StringArgument("includebranch", 'b', "includeBranch", false,
                              true, true, INFO_BRANCH_DN_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFIMPORT_DESCRIPTION_INCLUDE_BRANCH.get());
      argParser.addArgument(includeBranchStrings);
              StringArgument.builder("includeBranch")
                      .shortIdentifier('b')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_INCLUDE_BRANCH.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BRANCH_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeBranchStrings =
           new StringArgument("excludebranch", 'B', "excludeBranch", false,
                              true, true, INFO_BRANCH_DN_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFIMPORT_DESCRIPTION_EXCLUDE_BRANCH.get());
      argParser.addArgument(excludeBranchStrings);
              StringArgument.builder("excludeBranch")
                      .shortIdentifier('B')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_EXCLUDE_BRANCH.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BRANCH_DN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      includeAttributeStrings =
           new StringArgument(
                   "includeattribute", 'i', "includeAttribute",
                   false, true, true, INFO_ATTRIBUTE_PLACEHOLDER.get(), null,
                   null,
                   INFO_LDIFIMPORT_DESCRIPTION_INCLUDE_ATTRIBUTE.get());
      argParser.addArgument(includeAttributeStrings);
              StringArgument.builder("includeAttribute")
                      .shortIdentifier('i')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_INCLUDE_ATTRIBUTE.get())
                      .multiValued()
                      .valuePlaceholder(INFO_ATTRIBUTE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeAttributeStrings =
           new StringArgument(
                   "excludeattribute", 'e', "excludeAttribute",
                   false, true, true, INFO_ATTRIBUTE_PLACEHOLDER.get(), null,
                   null,
                   INFO_LDIFIMPORT_DESCRIPTION_EXCLUDE_ATTRIBUTE.get());
      argParser.addArgument(excludeAttributeStrings);
              StringArgument.builder("excludeAttribute")
                      .shortIdentifier('e')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_EXCLUDE_ATTRIBUTE.get())
                      .multiValued()
                      .valuePlaceholder(INFO_ATTRIBUTE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      includeFilterStrings =
           new StringArgument(
                   "includefilter", 'I', "includeFilter",
                   false, true, true, INFO_FILTER_PLACEHOLDER.get(), null, null,
                   INFO_LDIFIMPORT_DESCRIPTION_INCLUDE_FILTER.get());
      argParser.addArgument(includeFilterStrings);
              StringArgument.builder("includeFilter")
                      .shortIdentifier('I')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_INCLUDE_FILTER.get())
                      .multiValued()
                      .valuePlaceholder(INFO_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      excludeFilterStrings =
           new StringArgument("excludefilter", 'E', "excludeFilter",
                              false, true, true, INFO_FILTER_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDIFIMPORT_DESCRIPTION_EXCLUDE_FILTER.get());
      argParser.addArgument(excludeFilterStrings);
              StringArgument.builder("excludeFilter")
                      .shortIdentifier('E')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_EXCLUDE_FILTER.get())
                      .multiValued()
                      .valuePlaceholder(INFO_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      rejectFile =
           new StringArgument("rejectfile", 'R', "rejectFile", false, false,
                              true, INFO_REJECT_FILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_LDIFIMPORT_DESCRIPTION_REJECT_FILE.get());
      argParser.addArgument(rejectFile);
              StringArgument.builder("rejectFile")
                      .shortIdentifier('R')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_REJECT_FILE.get())
                      .valuePlaceholder(INFO_REJECT_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      skipFile =
           new StringArgument("skipfile", null, "skipFile", false, false,
                              true, INFO_SKIP_FILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_LDIFIMPORT_DESCRIPTION_SKIP_FILE.get());
      argParser.addArgument(skipFile);
              StringArgument.builder("skipFile")
                      .description(INFO_LDIFIMPORT_DESCRIPTION_SKIP_FILE.get())
                      .valuePlaceholder(INFO_SKIP_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      overwrite =
           new BooleanArgument("overwrite", 'O', "overwrite",
                               INFO_LDIFIMPORT_DESCRIPTION_OVERWRITE.get());
      argParser.addArgument(overwrite);
              BooleanArgument.builder("overwrite")
                      .shortIdentifier('O')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_OVERWRITE.get())
                      .buildAndAddToParser(argParser);
      randomSeed =
           new IntegerArgument("randomseed", OPTION_SHORT_RANDOM_SEED,
                               OPTION_LONG_RANDOM_SEED, false, false,
                               true, INFO_SEED_PLACEHOLDER.get(),
                               0, null, false, 0, false, 0,
                               INFO_LDIFIMPORT_DESCRIPTION_RANDOM_SEED.get());
      argParser.addArgument(randomSeed);
              IntegerArgument.builder(OPTION_LONG_RANDOM_SEED)
                      .shortIdentifier(OPTION_SHORT_RANDOM_SEED)
                      .description(INFO_LDIFIMPORT_DESCRIPTION_RANDOM_SEED.get())
                      .defaultValue(0)
                      .valuePlaceholder(INFO_SEED_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      skipSchemaValidation =
           new BooleanArgument("skipschema", 'S', "skipSchemaValidation",
                    INFO_LDIFIMPORT_DESCRIPTION_SKIP_SCHEMA_VALIDATION.get());
      argParser.addArgument(skipSchemaValidation);
              BooleanArgument.builder("skipSchemaValidation")
                      .shortIdentifier('S')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_SKIP_SCHEMA_VALIDATION.get())
                      .buildAndAddToParser(argParser);
      skipDNValidation =
           new BooleanArgument("skipDNValidation", null, "skipDNValidation",
                    INFO_LDIFIMPORT_DESCRIPTION_DN_VALIDATION.get());
      argParser.addArgument(skipDNValidation);
      threadCount = new IntegerArgument("threadCount", null, "threadCount",
              false, false, true,
              INFO_LDIFIMPORT_THREAD_COUNT_PLACEHOLDER.get(),
              0, null,
              true, 1, true, Integer.MAX_VALUE,
              INFO_LDIFIMPORT_DESCRIPTION_THREAD_COUNT.get());
      argParser.addArgument(threadCount);
              BooleanArgument.builder("skipDNValidation")
                      .description(INFO_LDIFIMPORT_DESCRIPTION_DN_VALIDATION.get())
                      .buildAndAddToParser(argParser);
      threadCount =
              IntegerArgument.builder("threadCount")
                      .description(INFO_LDIFIMPORT_DESCRIPTION_THREAD_COUNT.get())
                      .lowerBound(1)
                      .defaultValue(0)
                      .valuePlaceholder(INFO_LDIFIMPORT_THREAD_COUNT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      tmpDirectory =
           new StringArgument("tmpdirectory", null, "tmpdirectory", false,
                   false, true, INFO_LDIFIMPORT_TEMP_DIR_PLACEHOLDER.get(),
                   "import-tmp",
                    null, INFO_LDIFIMPORT_DESCRIPTION_TEMP_DIRECTORY.get());
      argParser.addArgument(tmpDirectory);
              StringArgument.builder("tmpdirectory")
                      .description(INFO_LDIFIMPORT_DESCRIPTION_TEMP_DIRECTORY.get())
                      .defaultValue("import-tmp")
                      .valuePlaceholder(INFO_LDIFIMPORT_TEMP_DIR_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      countRejects =
           new BooleanArgument("countrejects", null, "countRejects",
                               INFO_LDIFIMPORT_DESCRIPTION_COUNT_REJECTS.get());
      argParser.addArgument(countRejects);
              BooleanArgument.builder("countRejects")
                      .description(INFO_LDIFIMPORT_DESCRIPTION_COUNT_REJECTS.get())
                      .buildAndAddToParser(argParser);
      isCompressed =
           new BooleanArgument("iscompressed", 'c', "isCompressed",
                               INFO_LDIFIMPORT_DESCRIPTION_IS_COMPRESSED.get());
      argParser.addArgument(isCompressed);
              BooleanArgument.builder("isCompressed")
                      .shortIdentifier('c')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_IS_COMPRESSED.get())
                      .buildAndAddToParser(argParser);
      isEncrypted =
           new BooleanArgument("isencrypted", 'y', "isEncrypted",
                               INFO_LDIFIMPORT_DESCRIPTION_IS_ENCRYPTED.get());
      isEncrypted.setHidden(true); //See issue #27
      argParser.addArgument(isEncrypted);
              BooleanArgument.builder("isEncrypted")
                      .shortIdentifier('y')
                      .description(INFO_LDIFIMPORT_DESCRIPTION_IS_ENCRYPTED.get())
                      .hidden() //See issue #27
                      .buildAndAddToParser(argParser);
      quietMode =
              BooleanArgument.builder(OPTION_LONG_QUIET)
                      .shortIdentifier(OPTION_SHORT_QUIET)
                      .description(INFO_LDIFIMPORT_DESCRIPTION_QUIET.get())
                      .buildAndAddToParser(argParser);
      quietMode = new BooleanArgument("quietmode", OPTION_SHORT_QUIET,
                                      OPTION_LONG_QUIET,
                                      INFO_LDIFIMPORT_DESCRIPTION_QUIET.get());
      argParser.addArgument(quietMode);
      displayUsage = CommonArguments.getShowUsage();
    final BooleanArgument displayUsage = showUsageArgument();
      argParser.addArgument(displayUsage);
      argParser.setUsageArgument(displayUsage);
  }
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
@@ -210,28 +210,32 @@
  private final BackendTypeHelper backendTypeHelper = new BackendTypeHelper();
  /** The argument parser. */
  private InstallDSArgumentParser argParser;
  /** Different variables we use when the user decides to provide data again. */
  private NewSuffixOptions.Type lastResetPopulateOption;
  private ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> lastResetBackendType;
  private String lastResetImportFile;
  private String lastResetRejectedFile;
  private String lastResetSkippedFile;
  private Integer lastResetNumEntries;
  private Boolean lastResetEnableSSL;
  private Boolean lastResetEnableStartTLS;
  private SecurityOptions.CertificateType lastResetCertType;
  private String lastResetKeyStorePath;
  private Boolean lastResetEnableWindowsService;
  private Boolean lastResetStartServer;
  private String lastResetBaseDN = Installation.DEFAULT_INTERACTIVE_BASE_DN;
  private String lastResetDirectoryManagerDN;
  private Integer lastResetLdapPort;
  private Integer lastResetLdapsPort;
  private Integer lastResetAdminConnectorPort;
  private Integer lastResetJmxPort;
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /** The argument parser. */
  private InstallDSArgumentParser argParser;
  /**
   * Constructor for the InstallDS object.
@@ -338,6 +342,12 @@
      return InstallReturnCode.ERROR_UNEXPECTED.getReturnCode();
    }
    lastResetDirectoryManagerDN = argParser.directoryManagerDNArg.getDefaultValue();
    lastResetLdapPort = Integer.parseInt(argParser.ldapPortArg.getDefaultValue());
    lastResetLdapsPort = Integer.parseInt(argParser.ldapsPortArg.getDefaultValue());
    lastResetAdminConnectorPort = Integer.parseInt(argParser.adminConnectorPortArg.getDefaultValue());
    lastResetJmxPort = Integer.parseInt(argParser.jmxPortArg.getDefaultValue());
    // Validate user provided data
    try
    {
@@ -983,7 +993,7 @@
  private void promptIfRequiredForDirectoryManager(UserData uData) throws UserDataException, ClientException
  {
    final LinkedList<String> dns = promptIfRequiredForDNs(
        argParser.directoryManagerDNArg, INFO_INSTALLDS_PROMPT_ROOT_DN.get(), true);
            argParser.directoryManagerDNArg, lastResetDirectoryManagerDN, INFO_INSTALLDS_PROMPT_ROOT_DN.get(), true);
    uData.setDirectoryManagerDn(dns.getFirst());
    int nTries = 0;
@@ -1028,6 +1038,8 @@
   *
   * @param arg
   *          the Argument that the user provided to specify the DNs.
   * @param valueToSuggest
   *          the value to suggest by default on prompt.
   * @param promptMsg
   *          the prompt message to be displayed.
   * @param includeLineBreak
@@ -1036,7 +1048,7 @@
   * @throws UserDataException
   *           if something went wrong checking the data.
   */
  private LinkedList<String> promptIfRequiredForDNs(StringArgument arg,
  private LinkedList<String> promptIfRequiredForDNs(StringArgument arg, String valueToSuggest,
      LocalizableMessage promptMsg, boolean includeLineBreak) throws UserDataException
  {
    final LinkedList<String> dns = new LinkedList<>();
@@ -1059,7 +1071,7 @@
        }
        try
        {
          final String dn = readInput(promptMsg, arg.getDefaultValue());
          final String dn = readInput(promptMsg, valueToSuggest);
          firstPrompt = false;
          dns.add(dn);
          prompted = true;
@@ -1120,20 +1132,20 @@
    final List<Integer> usedPorts = new LinkedList<>();
    //  Determine the LDAP port number.
    final int ldapPort = promptIfRequiredForPortData(argParser.ldapPortArg,
        INFO_INSTALLDS_PROMPT_LDAPPORT.get(), usedPorts, true);
    final int ldapPort = promptIfRequiredForPortData(
            argParser.ldapPortArg, lastResetLdapPort, INFO_INSTALLDS_PROMPT_LDAPPORT.get(), usedPorts, true);
    uData.setServerPort(ldapPort);
    usedPorts.add(ldapPort);
    //  Determine the Admin Connector port number.
    final int adminConnectorPort = promptIfRequiredForPortData(argParser.adminConnectorPortArg,
        INFO_INSTALLDS_PROMPT_ADMINCONNECTORPORT.get(), usedPorts, true);
            lastResetAdminConnectorPort, INFO_INSTALLDS_PROMPT_ADMINCONNECTORPORT.get(), usedPorts, true);
    uData.setAdminConnectorPort(adminConnectorPort);
    usedPorts.add(adminConnectorPort);
    if (argParser.jmxPortArg.isPresent())
    {
      final int jmxPort = promptIfRequiredForPortData(argParser.jmxPortArg,
      final int jmxPort = promptIfRequiredForPortData(argParser.jmxPortArg, lastResetJmxPort,
          INFO_INSTALLDS_PROMPT_JMXPORT.get(), usedPorts, true);
      uData.setServerJMXPort(jmxPort);
    }
@@ -1150,6 +1162,8 @@
   *
   * @param portArg
   *          the Argument that the user provided to specify the port.
   * @param valueToSuggest
   *          the value to suggest by default on prompt.
   * @param promptMsg
   *          the prompt message to be displayed.
   * @param usedPorts
@@ -1159,7 +1173,7 @@
   *          whether to include a line break before the first prompt or not.
   * @return a valid port number.
   */
  private int promptIfRequiredForPortData(IntegerArgument portArg, LocalizableMessage promptMsg,
  private int promptIfRequiredForPortData(IntegerArgument portArg, Integer valueToSuggest, LocalizableMessage promptMsg,
      Collection<Integer> usedPorts, boolean includeLineBreak)
  {
    int portNumber = -1;
@@ -1172,11 +1186,6 @@
        boolean prompted = false;
        if (usedProvided || !portArg.isPresent())
        {
          int defaultValue = -1;
          if (portArg.getDefaultValue() != null)
          {
            defaultValue = Integer.parseInt(portArg.getDefaultValue());
          }
          if (firstPrompt && includeLineBreak)
          {
            println();
@@ -1186,7 +1195,7 @@
          {
            try
            {
              portNumber = readPort(promptMsg, defaultValue);
              portNumber = readPort(promptMsg, valueToSuggest);
            }
            catch (final ClientException ce)
            {
@@ -1267,14 +1276,9 @@
    }
    uData.setBackendType(getOrPromptForBackendType());
    // Add default value for base DN on first prompt
    if (argParser.baseDNArg.getDefaultValue() == null)
    {
      argParser.baseDNArg.setDefaultValue(Installation.DEFAULT_INTERACTIVE_BASE_DN);
    }
    // Check the validity of the base DNs
    final List<String> baseDNs = promptIfRequiredForDNs(argParser.baseDNArg, INFO_INSTALLDS_PROMPT_BASEDN.get(), true);
    final List<String> baseDNs = promptIfRequiredForDNs(
            argParser.baseDNArg, lastResetBaseDN, INFO_INSTALLDS_PROMPT_BASEDN.get(), true);
    return promptIfRequiredForDataOptions(baseDNs);
  }
@@ -1600,8 +1604,8 @@
        enableSSL = confirmAction(INFO_INSTALLDS_PROMPT_ENABLE_SSL.get(), defaultValue);
        if (enableSSL)
        {
          ldapsPort = promptIfRequiredForPortData(argParser.ldapsPortArg,
              INFO_INSTALLDS_PROMPT_LDAPSPORT.get(), usedPorts, false);
          ldapsPort = promptIfRequiredForPortData(
                  argParser.ldapsPortArg, lastResetLdapsPort, INFO_INSTALLDS_PROMPT_LDAPSPORT.get(), usedPorts, false);
        }
      }
      catch (final ClientException ce)
@@ -1611,8 +1615,8 @@
    }
    else
    {
      ldapsPort = promptIfRequiredForPortData(argParser.ldapsPortArg,
          INFO_INSTALLDS_PROMPT_LDAPSPORT.get(), usedPorts, true);
      ldapsPort = promptIfRequiredForPortData(
              argParser.ldapsPortArg, lastResetLdapsPort, INFO_INSTALLDS_PROMPT_LDAPSPORT.get(), usedPorts, true);
      enableSSL = true;
    }
@@ -2541,20 +2545,20 @@
    try
    {
      argParser.initializeArguments();
      argParser.directoryManagerDNArg.setDefaultValue(uData.getDirectoryManagerDn());
      argParser.ldapPortArg.setDefaultValue(String.valueOf(uData.getServerPort()));
      argParser.adminConnectorPortArg.setDefaultValue(String.valueOf(uData.getAdminConnectorPort()));
      lastResetDirectoryManagerDN = uData.getDirectoryManagerDn();
      lastResetLdapPort = uData.getServerPort();
      lastResetAdminConnectorPort = uData.getAdminConnectorPort();
      final int jmxPort = uData.getServerJMXPort();
      if (jmxPort != -1)
      {
        argParser.jmxPortArg.setDefaultValue(String.valueOf(jmxPort));
        lastResetJmxPort = jmxPort;
      }
      final LinkedList<String> baseDNs = uData.getNewSuffixOptions().getBaseDns();
      if (!baseDNs.isEmpty())
      {
        argParser.baseDNArg.setDefaultValue(baseDNs.getFirst());
        lastResetBaseDN = baseDNs.getFirst();
      }
      final NewSuffixOptions suffixOptions = uData.getNewSuffixOptions();
@@ -2574,7 +2578,7 @@
      final SecurityOptions sec = uData.getSecurityOptions();
      if (sec.getEnableSSL())
      {
        argParser.ldapsPortArg.setDefaultValue(String.valueOf(sec.getSslPort()));
        lastResetLdapsPort = sec.getSslPort();
      }
      lastResetEnableSSL = sec.getEnableSSL();
      lastResetEnableStartTLS = sec.getEnableStartTLS();
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java
@@ -26,6 +26,11 @@
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.CliMessages.INFO_JMXPORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_KEYSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_NUM_ENTRIES_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_PORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_ROOT_USER_PWD_FILE_PLACEHOLDER;
import static org.opends.messages.ToolMessages.*;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
@@ -126,23 +131,23 @@
   */
  public void initializeArguments() throws ArgumentException
  {
    testOnlyArg = new BooleanArgument(
            OPTION_LONG_TESTONLY_ARGUMENT.toLowerCase(), null,
            OPTION_LONG_TESTONLY_ARGUMENT,
            INFO_ARGUMENT_DESCRIPTION_TESTONLY.get());
    testOnlyArg.setHidden(true);
    testOnlyArg.setPropertyName(OPTION_LONG_TESTONLY_ARGUMENT);
    testOnlyArg =
            BooleanArgument.builder(OPTION_LONG_TESTONLY_ARGUMENT)
                    .description(INFO_ARGUMENT_DESCRIPTION_TESTONLY.get())
                    .hidden()
                    .buildArgument();
    addArgument(testOnlyArg);
    cliArg = CommonArguments.getCLI();
    addArgument(cliArg);
    String defaultProgName = Installation.getSetupFileName();
    progNameArg = new StringArgument(
        "programName".toLowerCase(), 'P', "programName", false,
        false, true, INFO_PROGRAM_NAME_PLACEHOLDER.get(), defaultProgName,
        "programName", INFO_INSTALLDS_DESCRIPTION_PROGNAME.get());
    progNameArg.setHidden(true);
    progNameArg = StringArgument.builder("programName")
            .shortIdentifier('P')
            .description(INFO_INSTALLDS_DESCRIPTION_PROGNAME.get())
            .hidden()
            .defaultValue(Installation.getSetupFileName())
            .valuePlaceholder(INFO_PROGRAM_NAME_PLACEHOLDER.get())
            .buildArgument();
    addArgument(progNameArg);
    noPromptArg = CommonArguments.getNoPrompt();
@@ -154,59 +159,69 @@
    verboseArg = CommonArguments.getVerbose();
    addArgument(verboseArg);
    propertiesFileArgument = new StringArgument(
        OPTION_LONG_PROP_FILE_PATH.toLowerCase(), null,
        OPTION_LONG_PROP_FILE_PATH, false,
        false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_PROP_FILE_PATH.get());
    propertiesFileArgument =
            StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                    .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                    .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(propertiesFileArgument);
    setFilePropertiesArgument(propertiesFileArgument);
    noPropertiesFileArgument = new BooleanArgument(
        OPTION_LONG_NO_PROP_FILE.toLowerCase(), null, OPTION_LONG_NO_PROP_FILE,
        INFO_DESCRIPTION_NO_PROP_FILE.get());
    noPropertiesFileArgument =
            BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                    .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                    .buildArgument();
    addArgument(noPropertiesFileArgument);
    setNoPropertiesFileArgument(noPropertiesFileArgument);
    baseDNArg = new StringArgument(
        OPTION_LONG_BASEDN.toLowerCase(), OPTION_SHORT_BASEDN,
        OPTION_LONG_BASEDN, false, true, true,
        INFO_BASEDN_PLACEHOLDER.get(),
        null, OPTION_LONG_BASEDN,
        INFO_INSTALLDS_DESCRIPTION_BASEDN.get());
    baseDNArg =
            StringArgument.builder(OPTION_LONG_BASEDN)
                    .shortIdentifier(OPTION_SHORT_BASEDN)
                    .description(INFO_INSTALLDS_DESCRIPTION_BASEDN.get())
                    .multiValued()
                    .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(baseDNArg);
    addBaseEntryArg = new BooleanArgument(
        "addBaseEntry".toLowerCase(), 'a', "addBaseEntry",
        INFO_INSTALLDS_DESCRIPTION_ADDBASE.get());
    addBaseEntryArg.setPropertyName("addBaseEntry");
    addBaseEntryArg =
            BooleanArgument.builder("addBaseEntry")
                    .shortIdentifier('a')
                    .description(INFO_INSTALLDS_DESCRIPTION_ADDBASE.get())
                    .buildArgument();
    addArgument(addBaseEntryArg);
    importLDIFArg = new StringArgument(
        OPTION_LONG_LDIF_FILE.toLowerCase(), OPTION_SHORT_LDIF_FILE,
        OPTION_LONG_LDIF_FILE, false,
        true, true, INFO_LDIFFILE_PLACEHOLDER.get(),
        null, OPTION_LONG_LDIF_FILE,
        INFO_INSTALLDS_DESCRIPTION_IMPORTLDIF.get());
    importLDIFArg =
            StringArgument.builder(OPTION_LONG_LDIF_FILE)
                    .shortIdentifier(OPTION_SHORT_LDIF_FILE)
                    .description(INFO_INSTALLDS_DESCRIPTION_IMPORTLDIF.get())
                    .multiValued()
                    .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(importLDIFArg);
    rejectedImportFileArg = new StringArgument(
        "rejectFile".toLowerCase(), 'R', "rejectFile", false, false,
        true, INFO_REJECT_FILE_PLACEHOLDER.get(), null, "rejectFile",
        INFO_INSTALLDS_DESCRIPTION_REJECTED_FILE.get());
    rejectedImportFileArg =
            StringArgument.builder("rejectFile")
                    .shortIdentifier('R')
                    .description(INFO_INSTALLDS_DESCRIPTION_REJECTED_FILE.get())
                    .valuePlaceholder(INFO_REJECT_FILE_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(rejectedImportFileArg);
    skippedImportFileArg = new StringArgument(
        "skipFile".toLowerCase(), null, "skipFile", false, false,
        true, INFO_SKIP_FILE_PLACEHOLDER.get(), null, "skipFile",
        INFO_INSTALLDS_DESCRIPTION_SKIPPED_FILE.get());
    skippedImportFileArg =
            StringArgument.builder("skipFile")
                    .description(INFO_INSTALLDS_DESCRIPTION_SKIPPED_FILE.get())
                    .valuePlaceholder(INFO_SKIP_FILE_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(skippedImportFileArg);
    sampleDataArg = new IntegerArgument(
        "sampleData".toLowerCase(), 'd', "sampleData", false,
        false, true, INFO_NUM_ENTRIES_PLACEHOLDER.get(), 0, "sampleData",
        true, 0, false, 0,
        INFO_INSTALLDS_DESCRIPTION_SAMPLE_DATA.get());
    sampleDataArg =
            IntegerArgument.builder("sampleData")
                    .shortIdentifier('d')
                    .description(INFO_INSTALLDS_DESCRIPTION_SAMPLE_DATA.get())
                    .lowerBound(0)
                    .defaultValue(0)
                    .valuePlaceholder(INFO_NUM_ENTRIES_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(sampleDataArg);
    int defaultLdapPort = UserData.getDefaultPort();
@@ -214,12 +229,15 @@
    {
      defaultLdapPort = 389;
    }
    ldapPortArg = new IntegerArgument(
        "ldapPort".toLowerCase(), OPTION_SHORT_PORT,
        "ldapPort", false, false,
        true, INFO_PORT_PLACEHOLDER.get(), defaultLdapPort,
        "ldapPort", true, 1, true, 65535,
        INFO_INSTALLDS_DESCRIPTION_LDAPPORT.get());
    ldapPortArg =
            IntegerArgument.builder("ldapPort")
                    .shortIdentifier(OPTION_SHORT_PORT)
                    .description(INFO_INSTALLDS_DESCRIPTION_LDAPPORT.get())
                    .range(1, 65535)
                    .defaultValue(defaultLdapPort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(ldapPortArg);
    int defaultAdminPort = UserData.getDefaultAdminConnectorPort();
@@ -228,75 +246,80 @@
      defaultAdminPort =
        AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT;
    }
    adminConnectorPortArg = new IntegerArgument(
        "adminConnectorPort".toLowerCase(), null,
        "adminConnectorPort", false, false,
        true, INFO_PORT_PLACEHOLDER.get(), defaultAdminPort,
        "adminConnectorPort", true, 1, true, 65535,
        INFO_INSTALLDS_DESCRIPTION_ADMINCONNECTORPORT.get());
    adminConnectorPortArg =
            IntegerArgument.builder("adminConnectorPort")
                    .description(INFO_INSTALLDS_DESCRIPTION_ADMINCONNECTORPORT.get())
                    .range(1, 65535)
                    .defaultValue(defaultAdminPort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(adminConnectorPortArg);
    jmxPortArg = new IntegerArgument(
        "jmxPort".toLowerCase(), 'x', "jmxPort", false, false,
        true, INFO_JMXPORT_PLACEHOLDER.get(),
        CliConstants.DEFAULT_JMX_PORT, "jmxPort", true,
        1, true, 65535,
        INFO_INSTALLDS_DESCRIPTION_JMXPORT.get());
    jmxPortArg =
            IntegerArgument.builder("jmxPort")
                    .shortIdentifier('x')
                    .description(INFO_INSTALLDS_DESCRIPTION_JMXPORT.get())
                    .range(1, 65535)
                    .defaultValue(CliConstants.DEFAULT_JMX_PORT)
                    .valuePlaceholder(INFO_JMXPORT_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(jmxPortArg);
    skipPortCheckArg = new BooleanArgument(
        "skipPortCheck".toLowerCase(), 'S', "skipPortCheck",
        INFO_INSTALLDS_DESCRIPTION_SKIPPORT.get());
    skipPortCheckArg.setPropertyName("skipPortCheck");
    skipPortCheckArg =
            BooleanArgument.builder("skipPortCheck")
                    .shortIdentifier('S')
                    .description(INFO_INSTALLDS_DESCRIPTION_SKIPPORT.get())
                    .buildArgument();
    addArgument(skipPortCheckArg);
    directoryManagerDNArg = new StringArgument(
        OPTION_LONG_ROOT_USER_DN.toLowerCase(), OPTION_SHORT_ROOT_USER_DN,
        OPTION_LONG_ROOT_USER_DN, false, false,
        true, INFO_ROOT_USER_DN_PLACEHOLDER.get(),
        "cn=Directory Manager",
        OPTION_LONG_ROOT_USER_DN, INFO_INSTALLDS_DESCRIPTION_ROOTDN.get());
    directoryManagerDNArg =
            StringArgument.builder(OPTION_LONG_ROOT_USER_DN)
                    .shortIdentifier(OPTION_SHORT_ROOT_USER_DN)
                    .description(INFO_INSTALLDS_DESCRIPTION_ROOTDN.get())
                    .defaultValue("cn=Directory Manager")
                    .valuePlaceholder(INFO_ROOT_USER_DN_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(directoryManagerDNArg);
    directoryManagerPwdStringArg = new StringArgument(
        "rootUserPassword".toLowerCase(), OPTION_SHORT_BINDPWD,
        "rootUserPassword",
        false, false, true,
        INFO_ROOT_USER_PWD_PLACEHOLDER.get(), null,
        "rootUserPassword",
        INFO_INSTALLDS_DESCRIPTION_ROOTPW.get());
    directoryManagerPwdStringArg =
            StringArgument.builder("rootUserPassword")
                    .shortIdentifier(OPTION_SHORT_BINDPWD)
                    .description(INFO_INSTALLDS_DESCRIPTION_ROOTPW.get())
                    .valuePlaceholder(INFO_ROOT_USER_PWD_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(directoryManagerPwdStringArg);
    directoryManagerPwdFileArg = new FileBasedArgument(
        "rootUserPasswordFile".toLowerCase(),
        OPTION_SHORT_BINDPWD_FILE,
        "rootUserPasswordFile", false, false,
        INFO_ROOT_USER_PWD_FILE_PLACEHOLDER.get(),
        null, "rootUserPasswordFile",
        INFO_INSTALLDS_DESCRIPTION_ROOTPWFILE.get());
    directoryManagerPwdFileArg =
            FileBasedArgument.builder("rootUserPasswordFile")
                    .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                    .description(INFO_INSTALLDS_DESCRIPTION_ROOTPWFILE.get())
                    .valuePlaceholder(INFO_ROOT_USER_PWD_FILE_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(directoryManagerPwdFileArg);
    enableWindowsServiceArg = new BooleanArgument(
        "enableWindowsService".toLowerCase(), 'e',
        "enableWindowsService",
        INFO_INSTALLDS_DESCRIPTION_ENABLE_WINDOWS_SERVICE.get());
    enableWindowsServiceArg.setPropertyName("enableWindowsService");
    enableWindowsServiceArg =
            BooleanArgument.builder("enableWindowsService")
                    .shortIdentifier('e')
                    .description(INFO_INSTALLDS_DESCRIPTION_ENABLE_WINDOWS_SERVICE.get())
                    .buildArgument();
    if (isWindows())
    {
      addArgument(enableWindowsServiceArg);
    }
    doNotStartArg = new BooleanArgument(
        "doNotStart".toLowerCase(), 'O', "doNotStart",
        INFO_INSTALLDS_DESCRIPTION_DO_NOT_START.get());
    doNotStartArg.setPropertyName("doNotStart");
    doNotStartArg =
            BooleanArgument.builder("doNotStart")
                    .shortIdentifier('O')
                    .description(INFO_INSTALLDS_DESCRIPTION_DO_NOT_START.get())
                    .buildArgument();
    addArgument(doNotStartArg);
    enableStartTLSArg = new BooleanArgument(
        "enableStartTLS".toLowerCase(), OPTION_SHORT_START_TLS,
        "enableStartTLS",
        INFO_INSTALLDS_DESCRIPTION_ENABLE_STARTTLS.get());
    enableStartTLSArg.setPropertyName("enableStartTLS");
    enableStartTLSArg =
            BooleanArgument.builder("enableStartTLS")
                    .shortIdentifier(OPTION_SHORT_START_TLS)
                    .description(INFO_INSTALLDS_DESCRIPTION_ENABLE_STARTTLS.get())
                    .buildArgument();
    addArgument(enableStartTLSArg);
    int defaultSecurePort = UserData.getDefaultSslPort(defaultLdapPort);
@@ -304,79 +327,85 @@
    {
      defaultSecurePort = 636;
    }
    ldapsPortArg = new IntegerArgument(
        "ldapsPort".toLowerCase(), OPTION_SHORT_USE_SSL,
        "ldapsPort", false, false,
        true, INFO_PORT_PLACEHOLDER.get(), defaultSecurePort,
        "ldapsPort", true, 1, true, 65535,
        INFO_INSTALLDS_DESCRIPTION_LDAPSPORT.get());
    ldapsPortArg =
            IntegerArgument.builder("ldapsPort")
                    .shortIdentifier(OPTION_SHORT_USE_SSL)
                    .description(INFO_INSTALLDS_DESCRIPTION_LDAPSPORT.get())
                    .range(1, 65535)
                    .defaultValue(defaultSecurePort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(ldapsPortArg);
    generateSelfSignedCertificateArg = new BooleanArgument(
        "generateSelfSignedCertificate".toLowerCase(),
        null, "generateSelfSignedCertificate",
        INFO_INSTALLDS_DESCRIPTION_USE_SELF_SIGNED.get());
    generateSelfSignedCertificateArg.setPropertyName(
        "generateSelfSignedCertificate");
    generateSelfSignedCertificateArg =
            BooleanArgument.builder("generateSelfSignedCertificate")
                    .description(INFO_INSTALLDS_DESCRIPTION_USE_SELF_SIGNED.get())
                    .buildArgument();
    addArgument(generateSelfSignedCertificateArg);
    hostNameArg = new StringArgument(OPTION_LONG_HOST.toLowerCase(),
        OPTION_SHORT_HOST,
        OPTION_LONG_HOST, false, false, true, INFO_HOST_PLACEHOLDER.get(),
        UserData.getDefaultHostName(),
        null, INFO_INSTALLDS_DESCRIPTION_HOST_NAME.get());
    hostNameArg.setPropertyName(OPTION_LONG_HOST);
    hostNameArg =
            StringArgument.builder(OPTION_LONG_HOST)
                    .shortIdentifier(OPTION_SHORT_HOST)
                    .description(INFO_INSTALLDS_DESCRIPTION_HOST_NAME.get())
                    .defaultValue(UserData.getDefaultHostName())
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    addDefaultArgument(hostNameArg);
    usePkcs11Arg = new BooleanArgument("usePkcs11Keystore".toLowerCase(),
        null, "usePkcs11Keystore",
        INFO_INSTALLDS_DESCRIPTION_USE_PKCS11.get());
    usePkcs11Arg.setPropertyName("usePkcs11Keystore");
    usePkcs11Arg =
            BooleanArgument.builder("usePkcs11Keystore")
                    .description(INFO_INSTALLDS_DESCRIPTION_USE_PKCS11.get())
                    .buildArgument();
    addArgument(usePkcs11Arg);
    useJavaKeyStoreArg = new StringArgument("useJavaKeystore".toLowerCase(),
        null, "useJavaKeystore", false, false,
        true, INFO_KEYSTOREPATH_PLACEHOLDER.get(), null, "useJavaKeystore",
        INFO_INSTALLDS_DESCRIPTION_USE_JAVAKEYSTORE.get());
    useJavaKeyStoreArg =
            StringArgument.builder("useJavaKeystore")
                    .description(INFO_INSTALLDS_DESCRIPTION_USE_JAVAKEYSTORE.get())
                    .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(useJavaKeyStoreArg);
    useJCEKSArg = new StringArgument("useJCEKS".toLowerCase(),
        null, "useJCEKS", false, false,
        true, INFO_KEYSTOREPATH_PLACEHOLDER.get(), null, "useJCEKS",
        INFO_INSTALLDS_DESCRIPTION_USE_JCEKS.get());
    useJCEKSArg =
            StringArgument.builder("useJCEKS")
                    .description(INFO_INSTALLDS_DESCRIPTION_USE_JCEKS.get())
                    .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(useJCEKSArg);
    usePkcs12Arg = new StringArgument("usePkcs12keyStore".toLowerCase(),
        null, "usePkcs12keyStore", false, false,
        true, INFO_KEYSTOREPATH_PLACEHOLDER.get(), null, "usePkcs12keyStore",
        INFO_INSTALLDS_DESCRIPTION_USE_PKCS12.get());
    usePkcs12Arg =
            StringArgument.builder("usePkcs12keyStore")
                    .description(INFO_INSTALLDS_DESCRIPTION_USE_PKCS12.get())
                    .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(usePkcs12Arg);
    keyStorePasswordArg = new StringArgument(
        OPTION_LONG_KEYSTORE_PWD.toLowerCase(),
        OPTION_SHORT_KEYSTORE_PWD,
        OPTION_LONG_KEYSTORE_PWD, false, false, true,
        INFO_KEYSTORE_PWD_PLACEHOLDER.get(), null, OPTION_LONG_KEYSTORE_PWD,
        INFO_INSTALLDS_DESCRIPTION_KEYSTOREPASSWORD.get());
    keyStorePasswordArg =
            StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                    .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                    .description(INFO_INSTALLDS_DESCRIPTION_KEYSTOREPASSWORD.get())
                    .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                    .buildArgument();
    addDefaultArgument(keyStorePasswordArg);
    keyStorePasswordFileArg = new FileBasedArgument(
        OPTION_LONG_KEYSTORE_PWD_FILE.toLowerCase(),
        OPTION_SHORT_KEYSTORE_PWD_FILE, OPTION_LONG_KEYSTORE_PWD_FILE, false,
        false, INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(), null,
        OPTION_LONG_KEYSTORE_PWD_FILE,
        INFO_INSTALLDS_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
    keyStorePasswordFileArg =
            FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                    .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                    .description(INFO_INSTALLDS_DESCRIPTION_KEYSTOREPASSWORD_FILE.get())
                    .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                    .buildArgument();
    addDefaultArgument(keyStorePasswordFileArg);
    certNicknameArg = new StringArgument(
        OPTION_LONG_CERT_NICKNAME.toLowerCase(),
        OPTION_SHORT_CERT_NICKNAME, OPTION_LONG_CERT_NICKNAME,
        false, true, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
        OPTION_LONG_CERT_NICKNAME,
        INFO_INSTALLDS_DESCRIPTION_CERT_NICKNAME.get());
    certNicknameArg =
            StringArgument.builder(OPTION_LONG_CERT_NICKNAME)
                    .shortIdentifier(OPTION_SHORT_CERT_NICKNAME)
                    .description(INFO_INSTALLDS_DESCRIPTION_CERT_NICKNAME.get())
                    .multiValued()
                    .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                    .buildArgument();
    addDefaultArgument(certNicknameArg);
    connectTimeoutArg = CommonArguments.getConnectTimeOut();
    connectTimeoutArg = CommonArguments.getConnectTimeOutHidden();
    addArgument(connectTimeoutArg);
    acceptLicense = CommonArguments.getAcceptLicense();
@@ -386,15 +415,14 @@
    addArgument(showUsageArg);
    setUsageArgument(showUsageArg);
    backendTypeArg = new StringArgument(
        OPTION_LONG_BACKEND_TYPE.toLowerCase(),
        OPTION_SHORT_BACKEND_TYPE, OPTION_LONG_BACKEND_TYPE,
        false, false, true, INFO_INSTALLDS_BACKEND_TYPE_PLACEHOLDER.get(),
        BackendTypeHelper.filterSchemaBackendName(
            new BackendTypeHelper().getBackendTypes().get(0).getName()),
        OPTION_LONG_BACKEND_TYPE,
        INFO_INSTALLDS_DESCRIPTION_BACKEND_TYPE.get()
    );
    backendTypeArg =
            StringArgument.builder(OPTION_LONG_BACKEND_TYPE)
                    .shortIdentifier(OPTION_SHORT_BACKEND_TYPE)
                    .description(INFO_INSTALLDS_DESCRIPTION_BACKEND_TYPE.get())
                    .defaultValue(BackendTypeHelper.filterSchemaBackendName(
                            new BackendTypeHelper().getBackendTypes().get(0).getName()))
                    .valuePlaceholder(INFO_INSTALLDS_BACKEND_TYPE_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(backendTypeArg);
  }
opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesToolArgumentParser.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2014-2015 ForgeRock AS
 *      Portions Copyright 2014-2016 ForgeRock AS
 */
package org.opends.server.tools;
@@ -84,22 +84,24 @@
    quietArg = CommonArguments.getQuiet();
    addArgument(quietArg);
    propertiesFileArg = new StringArgument("propertiesFile",
        'p', "propertiesFile", false,
        false, true, INFO_PATH_PLACEHOLDER.get(), getDefaultPropertiesValue(),
        "propertiesFile",
        INFO_JAVAPROPERTIES_DESCRIPTION_PROPERTIES_FILE.get(
            getDefaultPropertiesValue()));
    propertiesFileArg.setHidden(true);
    propertiesFileArg =
            StringArgument.builder("propertiesFile")
                    .shortIdentifier('p')
                    .description(INFO_JAVAPROPERTIES_DESCRIPTION_PROPERTIES_FILE.get(getDefaultPropertiesValue()))
                    .hidden()
                    .defaultValue(getDefaultPropertiesValue())
                    .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(propertiesFileArg);
    destinationFileArg = new StringArgument("destinationFile",
        'd', "destinationFile", false,
        false, true, INFO_PATH_PLACEHOLDER.get(), getDefaultDestinationValue(),
        "destinationFile",
        INFO_JAVAPROPERTIES_DESCRIPTION_DESTINATION_FILE.get(
            getDefaultDestinationValue()));
    destinationFileArg.setHidden(true);
    destinationFileArg =
            StringArgument.builder("destinationFile")
                    .shortIdentifier('d')
                    .description(INFO_JAVAPROPERTIES_DESCRIPTION_DESTINATION_FILE.get(getDefaultDestinationValue()))
                    .hidden()
                    .defaultValue(getDefaultDestinationValue())
                    .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                    .buildArgument();
    addArgument(destinationFileArg);
    showUsageArg = CommonArguments.getShowUsage();
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPCompare.java
@@ -27,6 +27,7 @@
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_BINDPASSWORDFILE;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -407,230 +408,172 @@
    try
    {
      scriptFriendlyArgument = new BooleanArgument(
          "script-friendly",
          's',
          "script-friendly",
          INFO_DESCRIPTION_SCRIPT_FRIENDLY.get());
      scriptFriendlyArgument.setPropertyName(
          scriptFriendlyArgument.getLongIdentifier());
      argParser.addArgument(scriptFriendlyArgument);
      propertiesFileArgument = new StringArgument("propertiesFilePath",
          null, OPTION_LONG_PROP_FILE_PATH,
          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      scriptFriendlyArgument =
              BooleanArgument.builder("script-friendly")
                      .shortIdentifier('s')
                      .description(INFO_DESCRIPTION_SCRIPT_FRIENDLY.get())
                      .buildAndAddToParser(argParser);
      propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      hostName = new StringArgument("host", OPTION_SHORT_HOST,
                                    OPTION_LONG_HOST, false, false, true,
                                    INFO_HOST_PLACEHOLDER.get(), "localhost",
                                    null,
                                    INFO_DESCRIPTION_HOST.get());
      hostName.setPropertyName(OPTION_LONG_HOST);
      argParser.addArgument(hostName);
      port = new IntegerArgument("port", OPTION_SHORT_PORT,
                                 OPTION_LONG_PORT, false, false, true,
                                 INFO_PORT_PLACEHOLDER.get(), 389, null,
                                 true, 1, true, 65535,
                                 INFO_DESCRIPTION_PORT.get());
      port.setPropertyName(OPTION_LONG_PORT);
      argParser.addArgument(port);
      useSSL = new BooleanArgument("useSSL", OPTION_SHORT_USE_SSL,
                                   OPTION_LONG_USE_SSL,
                                   INFO_DESCRIPTION_USE_SSL.get());
      useSSL.setPropertyName(OPTION_LONG_USE_SSL);
      argParser.addArgument(useSSL);
      startTLS = new BooleanArgument("startTLS", OPTION_SHORT_START_TLS,
                                     OPTION_LONG_START_TLS,
                                     INFO_DESCRIPTION_START_TLS.get());
      startTLS.setPropertyName(OPTION_LONG_START_TLS);
      argParser.addArgument(startTLS);
      bindDN = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_DESCRIPTION_BINDDN.get());
      bindDN.setPropertyName(OPTION_LONG_BINDDN);
      argParser.addArgument(bindDN);
      bindPassword = new StringArgument("bindPassword", OPTION_SHORT_BINDPWD,
                                        OPTION_LONG_BINDPWD,
                                        false, false, true,
                                        INFO_BINDPWD_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_BINDPASSWORD.get());
      bindPassword.setPropertyName(OPTION_LONG_BINDPWD);
      argParser.addArgument(bindPassword);
      hostName =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_DESCRIPTION_HOST.get())
                      .defaultValue("localhost")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      port =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(389)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      useSSL =
              BooleanArgument.builder(OPTION_LONG_USE_SSL)
                      .shortIdentifier(OPTION_SHORT_USE_SSL)
                      .description(INFO_DESCRIPTION_USE_SSL.get())
                      .buildAndAddToParser(argParser);
      startTLS =
              BooleanArgument.builder(OPTION_LONG_START_TLS)
                      .shortIdentifier(OPTION_SHORT_START_TLS)
                      .description(INFO_DESCRIPTION_START_TLS.get())
                      .buildAndAddToParser(argParser);
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_DESCRIPTION_BINDDN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPassword =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_DESCRIPTION_BINDPASSWORD.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPasswordFile =
           new FileBasedArgument("bindPasswordFile",
                                 OPTION_SHORT_BINDPWD_FILE,
                                 OPTION_LONG_BINDPWD_FILE,
                                 false, false,
                                 INFO_BINDPWD_FILE_PLACEHOLDER.get(), null,
                                 null, INFO_DESCRIPTION_BINDPASSWORDFILE.get());
      bindPasswordFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
      argParser.addArgument(bindPasswordFile);
      filename = new StringArgument("filename", OPTION_SHORT_FILENAME,
                                    OPTION_LONG_FILENAME, false, false,
                                    true, INFO_FILE_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_COMPARE_DESCRIPTION_FILENAME.get());
      filename.setPropertyName(OPTION_LONG_FILENAME);
      argParser.addArgument(filename);
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_DESCRIPTION_BINDPASSWORDFILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      filename =
              StringArgument.builder(OPTION_LONG_FILENAME)
                      .shortIdentifier(OPTION_SHORT_FILENAME)
                      .description(INFO_COMPARE_DESCRIPTION_FILENAME.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      saslExternal =
              new BooleanArgument("useSASLExternal", 'r',
                                  "useSASLExternal",
                                  INFO_DESCRIPTION_USE_SASL_EXTERNAL.get());
      saslExternal.setPropertyName("useSASLExternal");
      argParser.addArgument(saslExternal);
      saslOptions = new StringArgument("saslOption", OPTION_SHORT_SASLOPTION,
                                       OPTION_LONG_SASLOPTION, false,
                                       true, true,
                                       INFO_SASL_OPTION_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_DESCRIPTION_SASL_PROPERTIES.get());
      saslOptions.setPropertyName(OPTION_LONG_SASLOPTION);
      argParser.addArgument(saslOptions);
              BooleanArgument.builder("useSASLExternal")
                      .shortIdentifier('r')
                      .description(INFO_DESCRIPTION_USE_SASL_EXTERNAL.get())
                      .buildAndAddToParser(argParser);
      saslOptions =
              StringArgument.builder(OPTION_LONG_SASLOPTION)
                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
                      .description(INFO_DESCRIPTION_SASL_PROPERTIES.get())
                      .multiValued()
                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustAll = CommonArguments.getTrustAll();
      argParser.addArgument(trustAll);
      keyStorePath = new StringArgument("keyStorePath",
                                        OPTION_SHORT_KEYSTOREPATH,
                                        OPTION_LONG_KEYSTOREPATH,
                                        false, false, true,
                                        INFO_KEYSTOREPATH_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_KEYSTOREPATH.get());
      keyStorePath.setPropertyName(OPTION_LONG_KEYSTOREPATH);
      argParser.addArgument(keyStorePath);
      keyStorePassword = new StringArgument("keyStorePassword",
                                  OPTION_SHORT_KEYSTORE_PWD,
                                  OPTION_LONG_KEYSTORE_PWD, false, false,
                                  true, INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                                  null, null,
                                  INFO_DESCRIPTION_KEYSTOREPASSWORD.get());
      keyStorePassword.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
      argParser.addArgument(keyStorePassword);
      keyStorePath =
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_DESCRIPTION_KEYSTOREPATH.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePassword =
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePasswordFile =
           new FileBasedArgument("keyStorePasswordFile",
                                 OPTION_SHORT_KEYSTORE_PWD_FILE,
                                 OPTION_LONG_KEYSTORE_PWD_FILE,
                                 false, false,
                                 INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
      keyStorePasswordFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
      argParser.addArgument(keyStorePasswordFile);
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickname =
              new StringArgument("certnickname", 'N', "certNickname",
                                 false, false, true,
                                 INFO_NICKNAME_PLACEHOLDER.get(), null,
                                 null, INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname.setPropertyName("certNickname");
      argParser.addArgument(certNickname);
              StringArgument.builder("certNickname")
                      .shortIdentifier('N')
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePath =
              new StringArgument("trustStorePath",
                                OPTION_SHORT_TRUSTSTOREPATH,
                                OPTION_LONG_TRUSTSTOREPATH,
                                false, false, true,
                                INFO_TRUSTSTOREPATH_PLACEHOLDER.get(),
                                null, null,
                                INFO_DESCRIPTION_TRUSTSTOREPATH.get());
      trustStorePath.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
      argParser.addArgument(trustStorePath);
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPATH.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePassword =
           new StringArgument("trustStorePassword", null,
                              OPTION_LONG_TRUSTSTORE_PWD,
                              false, false, true,
                              INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(), null,
                              null, INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get());
      trustStorePassword.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
      argParser.addArgument(trustStorePassword);
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePasswordFile =
           new FileBasedArgument(
                               "trustStorePasswordFile",
                               OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                               OPTION_LONG_TRUSTSTORE_PWD_FILE, false, false,
                               INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(), null,
                               null,
                               INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get());
      trustStorePasswordFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
      argParser.addArgument(trustStorePasswordFile);
      assertionFilter = new StringArgument("assertionfilter", null,
                                 OPTION_LONG_ASSERTION_FILE, false, false, true,
                                 INFO_ASSERTION_FILTER_PLACEHOLDER.get(), null,
                                 null,
                                 INFO_DESCRIPTION_ASSERTION_FILTER.get());
      assertionFilter.setPropertyName(OPTION_LONG_ASSERTION_FILE);
      argParser.addArgument(assertionFilter);
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      assertionFilter =
              StringArgument.builder(OPTION_LONG_ASSERTION_FILE)
                      .description(INFO_DESCRIPTION_ASSERTION_FILTER.get())
                      .valuePlaceholder(INFO_ASSERTION_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      controlStr =
           new StringArgument("control", 'J', "control", false, true, true,
               INFO_LDAP_CONTROL_PLACEHOLDER.get(),
               null, null, INFO_DESCRIPTION_CONTROLS.get());
      controlStr.setPropertyName("control");
      argParser.addArgument(controlStr);
      version = new IntegerArgument("version", OPTION_SHORT_PROTOCOL_VERSION,
                                    OPTION_LONG_PROTOCOL_VERSION,
                                    false, false, true,
                                    INFO_PROTOCOL_VERSION_PLACEHOLDER.get(),
                                    3, null, INFO_DESCRIPTION_VERSION.get());
      version.setPropertyName(OPTION_LONG_PROTOCOL_VERSION);
      argParser.addArgument(version);
      int defaultTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT;
      connectTimeout = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
          null, OPTION_LONG_CONNECT_TIMEOUT,
          false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
          defaultTimeout, null,
          true, 0, false, Integer.MAX_VALUE,
          INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
      connectTimeout.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
      argParser.addArgument(connectTimeout);
      encodingStr = new StringArgument("encoding", 'i', "encoding",
                                      false, false,
                                      true, INFO_ENCODING_PLACEHOLDER.get(),
                                      null, null,
                                      INFO_DESCRIPTION_ENCODING.get());
      encodingStr.setPropertyName("encoding");
      argParser.addArgument(encodingStr);
      continueOnError = new BooleanArgument("continueOnError", 'c',
                                    "continueOnError",
                                    INFO_DESCRIPTION_CONTINUE_ON_ERROR.get());
      continueOnError.setPropertyName("continueOnError");
      argParser.addArgument(continueOnError);
      noop = new BooleanArgument("no-op", OPTION_SHORT_DRYRUN,
                                    OPTION_LONG_DRYRUN,
                                    INFO_DESCRIPTION_NOOP.get());
      argParser.addArgument(noop);
      noop.setPropertyName(OPTION_LONG_DRYRUN);
              StringArgument.builder("control")
                      .shortIdentifier('J')
                      .description(INFO_DESCRIPTION_CONTROLS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDAP_CONTROL_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      version =
              IntegerArgument.builder(OPTION_LONG_PROTOCOL_VERSION)
                      .shortIdentifier(OPTION_SHORT_PROTOCOL_VERSION)
                      .description(INFO_DESCRIPTION_VERSION.get())
                      .defaultValue(3)
                      .valuePlaceholder(INFO_PROTOCOL_VERSION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      connectTimeout =
              IntegerArgument.builder(OPTION_LONG_CONNECT_TIMEOUT)
                      .description(INFO_DESCRIPTION_CONNECTION_TIMEOUT.get())
                      .lowerBound(0)
                      .defaultValue(CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT)
                      .valuePlaceholder(INFO_TIMEOUT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      encodingStr =
              StringArgument.builder("encoding")
                      .shortIdentifier('i')
                      .description(INFO_DESCRIPTION_ENCODING.get())
                      .valuePlaceholder(INFO_ENCODING_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      continueOnError =
              BooleanArgument.builder("continueOnError")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONTINUE_ON_ERROR.get())
                      .buildAndAddToParser(argParser);
      noop =
              BooleanArgument.builder(OPTION_LONG_DRYRUN)
                      .shortIdentifier(OPTION_SHORT_DRYRUN)
                      .description(INFO_DESCRIPTION_NOOP.get())
                      .buildAndAddToParser(argParser);
      verbose = CommonArguments.getVerbose();
      argParser.addArgument(verbose);
@@ -639,10 +582,10 @@
      argParser.addArgument(showUsage);
      useCompareResultCode =
          new BooleanArgument("usecompareresultcode", 'm',
              "useCompareResultCode",
              INFO_LDAPCOMPARE_DESCRIPTION_USE_COMPARE_RESULT.get());
      argParser.addArgument(useCompareResultCode);
              BooleanArgument.builder("useCompareResultCode")
                      .shortIdentifier('m')
                      .description(INFO_LDAPCOMPARE_DESCRIPTION_USE_COMPARE_RESULT.get())
                      .buildAndAddToParser(argParser);
      argParser.setUsageArgument(showUsage, out);
    } catch (ArgumentException ae)
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPDelete.java
@@ -27,6 +27,7 @@
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_BINDPASSWORDFILE;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -328,218 +329,167 @@
    argParser.setVersionHandler(new DirectoryServerVersionHandler());
    try
    {
      propertiesFileArgument = new StringArgument("propertiesFilePath",
          null, OPTION_LONG_PROP_FILE_PATH,
          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      hostName = new StringArgument("host", OPTION_SHORT_HOST,
                                    OPTION_LONG_HOST, false, false, true,
                                    INFO_HOST_PLACEHOLDER.get(), "localhost",
                                    null,
                                    INFO_DESCRIPTION_HOST.get());
      hostName.setPropertyName(OPTION_LONG_HOST);
      argParser.addArgument(hostName);
      port = new IntegerArgument("port", OPTION_SHORT_PORT,
                                 OPTION_LONG_PORT, false, false, true,
                                 INFO_PORT_PLACEHOLDER.get(), 389, null,
                                 true, 1, true, 65535,
                                 INFO_DESCRIPTION_PORT.get());
      port.setPropertyName(OPTION_LONG_PORT);
      argParser.addArgument(port);
      useSSL = new BooleanArgument("useSSL", OPTION_SHORT_USE_SSL,
                                   OPTION_LONG_USE_SSL,
                                   INFO_DESCRIPTION_USE_SSL.get());
      useSSL.setPropertyName(OPTION_LONG_USE_SSL);
      argParser.addArgument(useSSL);
      startTLS = new BooleanArgument("startTLS", OPTION_SHORT_START_TLS,
                                     OPTION_LONG_START_TLS,
                                     INFO_DESCRIPTION_START_TLS.get());
      startTLS.setPropertyName(OPTION_LONG_START_TLS);
      argParser.addArgument(startTLS);
      bindDN = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_DESCRIPTION_BINDDN.get());
      bindDN.setPropertyName(OPTION_LONG_BINDDN);
      argParser.addArgument(bindDN);
      bindPassword = new StringArgument("bindPassword", OPTION_SHORT_BINDPWD,
                                        OPTION_LONG_BINDPWD,
                                        false, false, true,
                                        INFO_BINDPWD_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_BINDPASSWORD.get());
      bindPassword.setPropertyName(OPTION_LONG_BINDPWD);
      argParser.addArgument(bindPassword);
      hostName =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_DESCRIPTION_HOST.get())
                      .defaultValue("localhost")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      port =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(389)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      useSSL =
              BooleanArgument.builder(OPTION_LONG_USE_SSL)
                      .shortIdentifier(OPTION_SHORT_USE_SSL)
                      .description(INFO_DESCRIPTION_USE_SSL.get())
                      .buildAndAddToParser(argParser);
      startTLS =
              BooleanArgument.builder(OPTION_LONG_START_TLS)
                      .shortIdentifier(OPTION_SHORT_START_TLS)
                      .description(INFO_DESCRIPTION_START_TLS.get())
                      .buildAndAddToParser(argParser);
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_DESCRIPTION_BINDDN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPassword =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_DESCRIPTION_BINDPASSWORD.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPasswordFile =
           new FileBasedArgument("bindPasswordFile", OPTION_SHORT_BINDPWD_FILE,
                                 OPTION_LONG_BINDPWD_FILE,
                                 false, false,
                                 INFO_BINDPWD_FILE_PLACEHOLDER.get(), null,
                                 null, INFO_DESCRIPTION_BINDPASSWORDFILE.get());
      bindPasswordFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
      argParser.addArgument(bindPasswordFile);
      filename = new StringArgument("filename", OPTION_SHORT_FILENAME,
                                    OPTION_LONG_FILENAME, false, false,
                                    true, INFO_FILE_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_DELETE_DESCRIPTION_FILENAME.get());
      filename.setPropertyName(OPTION_LONG_FILENAME);
      argParser.addArgument(filename);
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_DESCRIPTION_BINDPASSWORDFILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      filename =
              StringArgument.builder(OPTION_LONG_FILENAME)
                      .shortIdentifier(OPTION_SHORT_FILENAME)
                      .description(INFO_DELETE_DESCRIPTION_FILENAME.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      saslExternal =
              new BooleanArgument("useSASLExternal", 'r',
                                  "useSASLExternal",
                                  INFO_DESCRIPTION_USE_SASL_EXTERNAL.get());
      saslExternal.setPropertyName("useSASLExternal");
      argParser.addArgument(saslExternal);
      saslOptions = new StringArgument(
              "saslOption", OPTION_SHORT_SASLOPTION,
              OPTION_LONG_SASLOPTION,
              false, true, true,
              INFO_SASL_OPTION_PLACEHOLDER.get(), null,
              null, INFO_DESCRIPTION_SASL_PROPERTIES.get());
      saslOptions.setPropertyName(OPTION_LONG_SASLOPTION);
      argParser.addArgument(saslOptions);
              BooleanArgument.builder("useSASLExternal")
                      .shortIdentifier('r')
                      .description(INFO_DESCRIPTION_USE_SASL_EXTERNAL.get())
                      .buildAndAddToParser(argParser);
      saslOptions =
              StringArgument.builder(OPTION_LONG_SASLOPTION)
                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
                      .description(INFO_DESCRIPTION_SASL_PROPERTIES.get())
                      .multiValued()
                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustAll = CommonArguments.getTrustAll();
      argParser.addArgument(trustAll);
      keyStorePath = new StringArgument("keyStorePath",
                                        OPTION_SHORT_KEYSTOREPATH,
                                        OPTION_LONG_KEYSTOREPATH,
                                        false, false, true,
                                        INFO_KEYSTOREPATH_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_KEYSTOREPATH.get());
      keyStorePath.setPropertyName(OPTION_LONG_KEYSTOREPATH);
      argParser.addArgument(keyStorePath);
      keyStorePath =
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_DESCRIPTION_KEYSTOREPATH.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePassword =
              new StringArgument("keyStorePassword",
                                 OPTION_SHORT_KEYSTORE_PWD,
                                 OPTION_LONG_KEYSTORE_PWD,
                                 false, false,
                                 true, INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_DESCRIPTION_KEYSTOREPASSWORD.get());
      keyStorePassword.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
      argParser.addArgument(keyStorePassword);
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePasswordFile =
           new FileBasedArgument("keyStorePasswordFile",
                                 OPTION_SHORT_KEYSTORE_PWD_FILE,
                                 OPTION_LONG_KEYSTORE_PWD_FILE,
                                 false, false,
                                 INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
      keyStorePasswordFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
      argParser.addArgument(keyStorePasswordFile);
      certNickname = new StringArgument(
              "certnickname", 'N', "certNickname",
              false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
              null, INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname.setPropertyName("certNickname");
      argParser.addArgument(certNickname);
      trustStorePath = new StringArgument(
              "trustStorePath",
              OPTION_SHORT_TRUSTSTOREPATH,
              OPTION_LONG_TRUSTSTOREPATH,
              false, false, true,
              INFO_TRUSTSTOREPATH_PLACEHOLDER.get(),
              null, null,
              INFO_DESCRIPTION_TRUSTSTOREPATH.get());
      trustStorePath.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
      argParser.addArgument(trustStorePath);
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickname =
              StringArgument.builder("certNickname")
                      .shortIdentifier('N')
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePath =
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPATH.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePassword =
           new StringArgument("trustStorePassword", null,
                              OPTION_LONG_TRUSTSTORE_PWD,
                              false, false, true,
                              INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(), null,
                              null, INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get());
      trustStorePassword.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
      argParser.addArgument(trustStorePassword);
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePasswordFile =
           new FileBasedArgument(
                   "trustStorePasswordFile",
                   OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                   OPTION_LONG_TRUSTSTORE_PWD_FILE, false, false,
                   INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(), null, null,
                   INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get());
      trustStorePasswordFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
      argParser.addArgument(trustStorePasswordFile);
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      deleteSubtree =
           new BooleanArgument("deleteSubtree", 'x', "deleteSubtree",
                               INFO_DELETE_DESCRIPTION_DELETE_SUBTREE.get());
      deleteSubtree.setPropertyName("deleteSubtree");
      argParser.addArgument(deleteSubtree);
              BooleanArgument.builder("deleteSubtree")
                      .shortIdentifier('x')
                      .description(INFO_DELETE_DESCRIPTION_DELETE_SUBTREE.get())
                      .buildAndAddToParser(argParser);
      controlStr =
           new StringArgument("control", 'J', "control", false, true, true,
                    INFO_LDAP_CONTROL_PLACEHOLDER.get(),
                    null, null, INFO_DESCRIPTION_CONTROLS.get());
      controlStr.setPropertyName("control");
      argParser.addArgument(controlStr);
      version = new IntegerArgument("version", OPTION_SHORT_PROTOCOL_VERSION,
                                    OPTION_LONG_PROTOCOL_VERSION, false, false,
                                    true,
                                    INFO_PROTOCOL_VERSION_PLACEHOLDER.get(), 3,
                                    null, INFO_DESCRIPTION_VERSION.get());
      version.setPropertyName(OPTION_LONG_PROTOCOL_VERSION);
      argParser.addArgument(version);
      int defaultTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT;
      connectTimeout = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
          null, OPTION_LONG_CONNECT_TIMEOUT,
          false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
          defaultTimeout, null,
          true, 0, false, Integer.MAX_VALUE,
          INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
      connectTimeout.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
      argParser.addArgument(connectTimeout);
      encodingStr = new StringArgument("encoding", 'i',
                                       OPTION_LONG_ENCODING, false,
                                       false, true,
                                       INFO_ENCODING_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_DESCRIPTION_ENCODING.get());
      encodingStr.setPropertyName(OPTION_LONG_ENCODING);
      argParser.addArgument(encodingStr);
              StringArgument.builder("control")
                      .shortIdentifier('J')
                      .description(INFO_DESCRIPTION_CONTROLS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDAP_CONTROL_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      version =
              IntegerArgument.builder(OPTION_LONG_PROTOCOL_VERSION)
                      .shortIdentifier(OPTION_SHORT_PROTOCOL_VERSION)
                      .description(INFO_DESCRIPTION_VERSION.get())
                      .defaultValue(3)
                      .valuePlaceholder(INFO_PROTOCOL_VERSION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
        connectTimeout =
                IntegerArgument.builder(OPTION_LONG_CONNECT_TIMEOUT)
                        .description(INFO_DESCRIPTION_CONNECTION_TIMEOUT.get())
                        .lowerBound(0)
                        .defaultValue(CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT)
                        .valuePlaceholder(INFO_TIMEOUT_PLACEHOLDER.get())
                        .buildAndAddToParser(argParser);
      encodingStr =
              StringArgument.builder(OPTION_LONG_ENCODING)
                      .shortIdentifier('i')
                      .description(INFO_DESCRIPTION_ENCODING.get())
                      .valuePlaceholder(INFO_ENCODING_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      continueOnError =
           new BooleanArgument("continueOnError", 'c', "continueOnError",
                               INFO_DESCRIPTION_CONTINUE_ON_ERROR.get());
      continueOnError.setPropertyName("continueOnError");
      argParser.addArgument(continueOnError);
      noop = new BooleanArgument("no-op", OPTION_SHORT_DRYRUN,
          OPTION_LONG_DRYRUN, INFO_DESCRIPTION_NOOP.get());
      noop.setPropertyName(OPTION_LONG_DRYRUN);
      argParser.addArgument(noop);
              BooleanArgument.builder("continueOnError")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONTINUE_ON_ERROR.get())
                      .buildAndAddToParser(argParser);
      noop =
              BooleanArgument.builder(OPTION_LONG_DRYRUN)
                      .shortIdentifier(OPTION_SHORT_DRYRUN)
                      .description(INFO_DESCRIPTION_NOOP.get())
                      .buildAndAddToParser(argParser);
      verbose = CommonArguments.getVerbose();
      argParser.addArgument(verbose);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPModify.java
@@ -28,6 +28,7 @@
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_BINDPASSWORDFILE;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -601,264 +602,193 @@
    argParser.setVersionHandler(new DirectoryServerVersionHandler());
    try
    {
      propertiesFileArgument = new StringArgument("propertiesFilePath",
          null, OPTION_LONG_PROP_FILE_PATH,
          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      hostName = new StringArgument("host", OPTION_SHORT_HOST,
                                    OPTION_LONG_HOST, false, false, true,
                                    INFO_HOST_PLACEHOLDER.get(), "localhost",
                                    null,
                                    INFO_DESCRIPTION_HOST.get());
      hostName.setPropertyName(OPTION_LONG_HOST);
      argParser.addArgument(hostName);
      port = new IntegerArgument("port", OPTION_SHORT_PORT,
                                 OPTION_LONG_PORT, false, false, true,
                                 INFO_PORT_PLACEHOLDER.get(), 389, null,
                                 true, 1, true, 65535,
                                 INFO_DESCRIPTION_PORT.get());
      port.setPropertyName(OPTION_LONG_PORT);
      argParser.addArgument(port);
      useSSL = new BooleanArgument("useSSL", OPTION_SHORT_USE_SSL,
                                   OPTION_LONG_USE_SSL,
                                   INFO_DESCRIPTION_USE_SSL.get());
      useSSL.setPropertyName(OPTION_LONG_USE_SSL);
      argParser.addArgument(useSSL);
      startTLS = new BooleanArgument("startTLS", OPTION_SHORT_START_TLS,
                                     OPTION_LONG_START_TLS,
                                     INFO_DESCRIPTION_START_TLS.get());
      startTLS.setPropertyName(OPTION_LONG_START_TLS);
      argParser.addArgument(startTLS);
      bindDN = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_DESCRIPTION_BINDDN.get());
      bindDN.setPropertyName(OPTION_LONG_BINDDN);
      argParser.addArgument(bindDN);
      bindPassword = new StringArgument("bindPassword", OPTION_SHORT_BINDPWD,
                                        OPTION_LONG_BINDPWD,
                                        false, false, true,
                                        INFO_BINDPWD_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_BINDPASSWORD.get());
      bindPassword.setPropertyName(OPTION_LONG_BINDPWD);
      argParser.addArgument(bindPassword);
      hostName =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_DESCRIPTION_HOST.get())
                      .defaultValue("localhost")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      port =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(389)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      useSSL =
              BooleanArgument.builder(OPTION_LONG_USE_SSL)
                      .shortIdentifier(OPTION_SHORT_USE_SSL)
                      .description(INFO_DESCRIPTION_USE_SSL.get())
                      .buildAndAddToParser(argParser);
      startTLS =
              BooleanArgument.builder(OPTION_LONG_START_TLS)
                      .shortIdentifier(OPTION_SHORT_START_TLS)
                      .description(INFO_DESCRIPTION_START_TLS.get())
                      .buildAndAddToParser(argParser);
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_DESCRIPTION_BINDDN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPassword =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_DESCRIPTION_BINDPASSWORD.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPasswordFile =
           new FileBasedArgument("bindPasswordFile",
                                 OPTION_SHORT_BINDPWD_FILE,
                                 OPTION_LONG_BINDPWD_FILE,
                                 false, false,
                                 INFO_BINDPWD_FILE_PLACEHOLDER.get(), null,
                                 null, INFO_DESCRIPTION_BINDPASSWORDFILE.get());
      bindPasswordFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
      argParser.addArgument(bindPasswordFile);
      defaultAdd = new BooleanArgument(
              "defaultAdd", 'a', "defaultAdd",
              INFO_MODIFY_DESCRIPTION_DEFAULT_ADD.get());
      argParser.addArgument(defaultAdd);
      filename = new StringArgument("filename", OPTION_SHORT_FILENAME,
                                    OPTION_LONG_FILENAME, false, false,
                                    true, INFO_FILE_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_LDAPMODIFY_DESCRIPTION_FILENAME.get());
      filename.setPropertyName(OPTION_LONG_FILENAME);
      argParser.addArgument(filename);
      saslExternal = new BooleanArgument(
              "useSASLExternal", 'r',
              "useSASLExternal",
              INFO_DESCRIPTION_USE_SASL_EXTERNAL.get());
      saslExternal.setPropertyName("useSASLExternal");
      argParser.addArgument(saslExternal);
      saslOptions = new StringArgument("saslOption", OPTION_SHORT_SASLOPTION,
                                       OPTION_LONG_SASLOPTION, false,
                                       true, true,
                                       INFO_SASL_OPTION_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_DESCRIPTION_SASL_PROPERTIES.get());
      saslOptions.setPropertyName(OPTION_LONG_SASLOPTION);
      argParser.addArgument(saslOptions);
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_DESCRIPTION_BINDPASSWORDFILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      defaultAdd =
              BooleanArgument.builder("defaultAdd")
                      .shortIdentifier('a')
                      .description(INFO_MODIFY_DESCRIPTION_DEFAULT_ADD.get())
                      .buildAndAddToParser(argParser);
      filename =
              StringArgument.builder(OPTION_LONG_FILENAME)
                      .shortIdentifier(OPTION_SHORT_FILENAME)
                      .description(INFO_LDAPMODIFY_DESCRIPTION_FILENAME.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      saslExternal =
              BooleanArgument.builder("useSASLExternal")
                      .shortIdentifier('r')
                      .description(INFO_DESCRIPTION_USE_SASL_EXTERNAL.get())
                      .buildAndAddToParser(argParser);
      saslOptions =
              StringArgument.builder(OPTION_LONG_SASLOPTION)
                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
                      .description(INFO_DESCRIPTION_SASL_PROPERTIES.get())
                      .multiValued()
                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustAll = CommonArguments.getTrustAll();
      argParser.addArgument(trustAll);
      keyStorePath = new StringArgument("keyStorePath",
                                        OPTION_SHORT_KEYSTOREPATH,
                                        OPTION_LONG_KEYSTOREPATH,
                                        false, false, true,
                                        INFO_KEYSTOREPATH_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_KEYSTOREPATH.get());
      keyStorePath.setPropertyName(OPTION_LONG_KEYSTOREPATH);
      argParser.addArgument(keyStorePath);
      keyStorePath =
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_DESCRIPTION_KEYSTOREPATH.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePassword =
              new StringArgument("keyStorePassword",
                                 OPTION_SHORT_KEYSTORE_PWD,
                                 OPTION_LONG_KEYSTORE_PWD,
                                 false, false,
                                 true,
                                 INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_DESCRIPTION_KEYSTOREPASSWORD.get());
      keyStorePassword.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
      argParser.addArgument(keyStorePassword);
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePasswordFile =
           new FileBasedArgument("keystorepasswordfile",
                                 OPTION_SHORT_KEYSTORE_PWD_FILE,
                                 OPTION_LONG_KEYSTORE_PWD_FILE,
                                 false, false,
                                 INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
      keyStorePasswordFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
      argParser.addArgument(keyStorePasswordFile);
      certNickname = new StringArgument(
              "certnickname", 'N', "certNickname",
              false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
              null, INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname.setPropertyName("certNickname");
      argParser.addArgument(certNickname);
      trustStorePath = new StringArgument(
              "trustStorePath",
              OPTION_SHORT_TRUSTSTOREPATH,
              OPTION_LONG_TRUSTSTOREPATH,
              false, false, true,
              INFO_TRUSTSTOREPATH_PLACEHOLDER.get(),
              null, null,
              INFO_DESCRIPTION_TRUSTSTOREPATH.get());
      trustStorePath.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
      argParser.addArgument(trustStorePath);
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickname =
              StringArgument.builder("certNickname")
                      .shortIdentifier('N')
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePath =
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPATH.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePassword =
           new StringArgument("trustStorePassword", null,
                              OPTION_LONG_TRUSTSTORE_PWD ,
                              false, false, true,
                              INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(), null,
                              null, INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get());
      trustStorePassword.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
      argParser.addArgument(trustStorePassword);
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePasswordFile =
           new FileBasedArgument(
                   "truststorepasswordfile",
                   OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                   OPTION_LONG_TRUSTSTORE_PWD_FILE, false, false,
                   INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(), null, null,
                   INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get());
      trustStorePasswordFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
      argParser.addArgument(trustStorePasswordFile);
      proxyAuthzID = new StringArgument("proxy_authzid",
                                        OPTION_SHORT_PROXYAUTHID,
                                        OPTION_LONG_PROXYAUTHID, false,
                                        false, true,
                                        INFO_PROXYAUTHID_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_PROXY_AUTHZID.get());
      proxyAuthzID.setPropertyName(OPTION_LONG_PROXYAUTHID);
      argParser.addArgument(proxyAuthzID);
      reportAuthzID = new BooleanArgument(
              "reportauthzid", 'E',
              "reportAuthzID",
              INFO_DESCRIPTION_REPORT_AUTHZID.get());
      reportAuthzID.setPropertyName("reportAuthzID");
      argParser.addArgument(reportAuthzID);
      assertionFilter = new StringArgument(
              "assertionfilter", null,
              OPTION_LONG_ASSERTION_FILE,
              false, false,
              true,
              INFO_ASSERTION_FILTER_PLACEHOLDER.get(),
              null, null,
              INFO_DESCRIPTION_ASSERTION_FILTER.get());
      assertionFilter.setPropertyName(OPTION_LONG_ASSERTION_FILE);
      argParser.addArgument(assertionFilter);
      preReadAttributes = new StringArgument(
              "prereadattrs", null,
              "preReadAttributes", false, false,
              true, INFO_ATTRIBUTE_LIST_PLACEHOLDER.get(), null, null,
              INFO_DESCRIPTION_PREREAD_ATTRS.get());
      preReadAttributes.setPropertyName("preReadAttributes");
      argParser.addArgument(preReadAttributes);
      postReadAttributes = new StringArgument(
              "postreadattrs", null,
              "postReadAttributes", false,
              false, true, INFO_ATTRIBUTE_LIST_PLACEHOLDER.get(), null,
              null,
              INFO_DESCRIPTION_POSTREAD_ATTRS.get());
      postReadAttributes.setPropertyName("postReadAttributes");
      argParser.addArgument(postReadAttributes);
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      proxyAuthzID =
              StringArgument.builder(OPTION_LONG_PROXYAUTHID)
                      .shortIdentifier(OPTION_SHORT_PROXYAUTHID)
                      .description(INFO_DESCRIPTION_PROXY_AUTHZID.get())
                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      reportAuthzID =
              BooleanArgument.builder("reportAuthzID")
                      .shortIdentifier('E')
                      .description(INFO_DESCRIPTION_REPORT_AUTHZID.get())
                      .buildAndAddToParser(argParser);
      assertionFilter =
              StringArgument.builder(OPTION_LONG_ASSERTION_FILE)
                      .description(INFO_DESCRIPTION_ASSERTION_FILTER.get())
                      .valuePlaceholder(INFO_ASSERTION_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      preReadAttributes =
              StringArgument.builder("preReadAttributes")
                      .description(INFO_DESCRIPTION_PREREAD_ATTRS.get())
                      .valuePlaceholder(INFO_ATTRIBUTE_LIST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      postReadAttributes =
              StringArgument.builder("postReadAttributes")
                      .description(INFO_DESCRIPTION_POSTREAD_ATTRS.get())
                      .valuePlaceholder(INFO_ATTRIBUTE_LIST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      controlStr =
           new StringArgument("control", 'J', "control", false, true, true,
                    INFO_LDAP_CONTROL_PLACEHOLDER.get(),
                    null, null, INFO_DESCRIPTION_CONTROLS.get());
      controlStr.setPropertyName("control");
      argParser.addArgument(controlStr);
      version = new IntegerArgument("version", OPTION_SHORT_PROTOCOL_VERSION,
                              OPTION_LONG_PROTOCOL_VERSION,
                              false, false, true,
                              INFO_PROTOCOL_VERSION_PLACEHOLDER.get(), 3, null,
                              INFO_DESCRIPTION_VERSION.get());
      version.setPropertyName(OPTION_LONG_PROTOCOL_VERSION);
      argParser.addArgument(version);
      int defaultTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT;
      connectTimeout = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
          null, OPTION_LONG_CONNECT_TIMEOUT,
          false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
          defaultTimeout, null,
          true, 0, false, Integer.MAX_VALUE,
          INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
      connectTimeout.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
      argParser.addArgument(connectTimeout);
      encodingStr = new StringArgument("encoding", 'i', "encoding",
                                      false, false,
                                      true, INFO_ENCODING_PLACEHOLDER.get(),
                                      null, null,
                                      INFO_DESCRIPTION_ENCODING.get());
      encodingStr.setPropertyName("encoding");
      argParser.addArgument(encodingStr);
      continueOnError = new BooleanArgument("continueOnError", 'c',
                                    "continueOnError",
                                    INFO_DESCRIPTION_CONTINUE_ON_ERROR.get());
      continueOnError.setPropertyName("continueOnError");
      argParser.addArgument(continueOnError);
      noop = new BooleanArgument("no-op", OPTION_SHORT_DRYRUN,
                                    OPTION_LONG_DRYRUN,
                                    INFO_DESCRIPTION_NOOP.get());
      noop.setPropertyName(OPTION_LONG_DRYRUN);
      argParser.addArgument(noop);
              StringArgument.builder("control")
                      .shortIdentifier('J')
                      .description(INFO_DESCRIPTION_CONTROLS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDAP_CONTROL_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      version =
              IntegerArgument.builder(OPTION_LONG_PROTOCOL_VERSION)
                      .shortIdentifier(OPTION_SHORT_PROTOCOL_VERSION)
                      .description(INFO_DESCRIPTION_VERSION.get())
                      .defaultValue(3)
                      .valuePlaceholder(INFO_PROTOCOL_VERSION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
        connectTimeout =
                IntegerArgument.builder(OPTION_LONG_CONNECT_TIMEOUT)
                        .description(INFO_DESCRIPTION_CONNECTION_TIMEOUT.get())
                        .lowerBound(0)
                        .defaultValue(CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT)
                        .valuePlaceholder(INFO_TIMEOUT_PLACEHOLDER.get())
                        .buildAndAddToParser(argParser);
      encodingStr =
              StringArgument.builder("encoding")
                      .shortIdentifier('i')
                      .description(INFO_DESCRIPTION_ENCODING.get())
                      .valuePlaceholder(INFO_ENCODING_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      continueOnError =
              BooleanArgument.builder("continueOnError")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONTINUE_ON_ERROR.get())
                      .buildAndAddToParser(argParser);
      noop =
              BooleanArgument.builder(OPTION_LONG_DRYRUN)
                      .shortIdentifier(OPTION_SHORT_DRYRUN)
                      .description(INFO_DESCRIPTION_NOOP.get())
                      .buildAndAddToParser(argParser);
      verbose = CommonArguments.getVerbose();
      argParser.addArgument(verbose);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPPasswordModify.java
@@ -22,10 +22,19 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2013-2015 ForgeRock AS.
 *      Portions Copyright 2013-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.CliMessages.INFO_BINDPWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_CONNECTION_TIMEOUT;
import static com.forgerock.opendj.cli.CliMessages.INFO_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_KEYSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_LDAPPWMOD_DESCRIPTION_CURRENTPWFILE;
import static com.forgerock.opendj.cli.CliMessages.INFO_LDAPPWMOD_DESCRIPTION_NEWPWFILE;
import static com.forgerock.opendj.cli.CliMessages.INFO_PORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_TIMEOUT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.extensions.ExtensionsConstants.*;
import static org.opends.server.protocols.ldap.LDAPResultCode.*;
@@ -192,221 +201,155 @@
    try
    {
      propertiesFileArgument = new StringArgument("propertiesFilePath",
          null, OPTION_LONG_PROP_FILE_PATH,
          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      ldapHost = new StringArgument("ldaphost", OPTION_SHORT_HOST,
                                    OPTION_LONG_HOST, false, false,
                                    true, INFO_HOST_PLACEHOLDER.get(),
                                    "127.0.0.1", null,
                                    INFO_LDAPPWMOD_DESCRIPTION_HOST.get());
      ldapHost.setPropertyName(OPTION_LONG_HOST);
      argParser.addArgument(ldapHost);
      ldapPort = new IntegerArgument(
              "ldapport", OPTION_SHORT_PORT,
              OPTION_LONG_PORT, false, false,
              true, INFO_PORT_PLACEHOLDER.get(), 389,
              null, true, 1, true,
              65535, INFO_LDAPPWMOD_DESCRIPTION_PORT.get());
      ldapPort.setPropertyName(OPTION_LONG_PORT);
      argParser.addArgument(ldapPort);
      useSSL = new BooleanArgument("usessl", OPTION_SHORT_USE_SSL,
                                   OPTION_LONG_USE_SSL,
                                   INFO_LDAPPWMOD_DESCRIPTION_USE_SSL.get());
      useSSL.setPropertyName(OPTION_LONG_USE_SSL);
      argParser.addArgument(useSSL);
      useStartTLS = new BooleanArgument("usestarttls", OPTION_SHORT_START_TLS,
                             OPTION_LONG_START_TLS,
                             INFO_LDAPPWMOD_DESCRIPTION_USE_STARTTLS.get());
      useStartTLS.setPropertyName(OPTION_LONG_START_TLS);
      argParser.addArgument(useStartTLS);
      bindDN = new StringArgument("binddn", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_LDAPPWMOD_DESCRIPTION_BIND_DN.get());
      bindDN.setPropertyName(OPTION_LONG_BINDDN);
      argParser.addArgument(bindDN);
      bindPW = new StringArgument("bindpw", OPTION_SHORT_BINDPWD,
                                  OPTION_LONG_BINDPWD, false, false,
                                  true, INFO_BINDPWD_PLACEHOLDER.get(), null,
                                  null,
                                  INFO_LDAPPWMOD_DESCRIPTION_BIND_PW.get());
      bindPW.setPropertyName(OPTION_LONG_BINDPWD);
      argParser.addArgument(bindPW);
      ldapHost =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_HOST.get())
                      .defaultValue("127.0.0.1")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ldapPort =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(389)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      useSSL =
              BooleanArgument.builder(OPTION_LONG_USE_SSL)
                      .shortIdentifier(OPTION_SHORT_USE_SSL)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_USE_SSL.get())
                      .buildAndAddToParser(argParser);
      useStartTLS =
              BooleanArgument.builder(OPTION_LONG_START_TLS)
                      .shortIdentifier(OPTION_SHORT_START_TLS)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_USE_STARTTLS.get())
                      .buildAndAddToParser(argParser);
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_BIND_DN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPW =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_BIND_PW.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPWFile =
           new FileBasedArgument("bindpwfile", OPTION_SHORT_BINDPWD_FILE,
                                 OPTION_LONG_BINDPWD_FILE, false,
                                 false, INFO_BINDPWD_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_LDAPPWMOD_DESCRIPTION_BIND_PW_FILE.get());
      bindPWFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
      argParser.addArgument(bindPWFile);
      authzID = new StringArgument("authzid", 'a', "authzID", false, false,
                                   true, INFO_PROXYAUTHID_PLACEHOLDER.get(),
                                   null, null,
                                   INFO_LDAPPWMOD_DESCRIPTION_AUTHZID.get());
      authzID.setPropertyName("authzID");
      argParser.addArgument(authzID);
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_BIND_PW_FILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      authzID =
              StringArgument.builder("authzID")
                      .shortIdentifier('a')
                      .description(INFO_LDAPPWMOD_DESCRIPTION_AUTHZID.get())
                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      provideDNForAuthzID =
           new BooleanArgument("providednforauthzid", 'A',"provideDNForAuthzID",
                    INFO_LDAPPWMOD_DESCRIPTION_PROVIDE_DN_FOR_AUTHZID.get());
      provideDNForAuthzID.setPropertyName("provideDNForAuthzID");
      argParser.addArgument(provideDNForAuthzID);
      newPW = new StringArgument("newpw", 'n', "newPassword", false, false,
                                 true, INFO_NEW_PASSWORD_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_LDAPPWMOD_DESCRIPTION_NEWPW.get());
      newPW.setPropertyName("newPassword");
      argParser.addArgument(newPW);
      newPWFile = new FileBasedArgument(
              "newpwfile", 'N', "newPasswordFile",
              false, false, INFO_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDAPPWMOD_DESCRIPTION_NEWPWFILE.get());
      newPWFile.setPropertyName("newPasswordFile");
      argParser.addArgument(newPWFile);
              BooleanArgument.builder("provideDNForAuthzID")
                      .shortIdentifier('A')
                      .description(INFO_LDAPPWMOD_DESCRIPTION_PROVIDE_DN_FOR_AUTHZID.get())
                      .buildAndAddToParser(argParser);
      newPW =
              StringArgument.builder("newPassword")
                      .shortIdentifier('n')
                      .description(INFO_LDAPPWMOD_DESCRIPTION_NEWPW.get())
                      .valuePlaceholder(INFO_NEW_PASSWORD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      newPWFile =
              FileBasedArgument.builder("newPasswordFile")
                      .shortIdentifier('N')
                      .description(INFO_LDAPPWMOD_DESCRIPTION_NEWPWFILE.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      currentPW =
           new StringArgument("currentpw", 'c', "currentPassword", false, false,
                              true, INFO_CURRENT_PASSWORD_PLACEHOLDER.get(),
                              null,  null,
                              INFO_LDAPPWMOD_DESCRIPTION_CURRENTPW.get());
      currentPW.setPropertyName("currentPassword");
      argParser.addArgument(currentPW);
              StringArgument.builder("currentPassword")
                      .shortIdentifier('c')
                      .description(INFO_LDAPPWMOD_DESCRIPTION_CURRENTPW.get())
                      .valuePlaceholder(INFO_CURRENT_PASSWORD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      currentPWFile =
           new FileBasedArgument(
                   "currentpwfile", 'C', "currentPasswordFile",
                   false, false, INFO_FILE_PLACEHOLDER.get(), null, null,
                   INFO_LDAPPWMOD_DESCRIPTION_CURRENTPWFILE.get());
      currentPWFile.setPropertyName("currentPasswordFile");
      argParser.addArgument(currentPWFile);
              FileBasedArgument.builder("currentPasswordFile")
                      .shortIdentifier('C')
                      .description(INFO_LDAPPWMOD_DESCRIPTION_CURRENTPWFILE.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustAll = CommonArguments.getTrustAll();
      argParser.addArgument(trustAll);
      sslKeyStore =
           new StringArgument("keystorepath", OPTION_SHORT_KEYSTOREPATH,
                              OPTION_LONG_KEYSTOREPATH, false, false,
                              true, INFO_KEYSTOREPATH_PLACEHOLDER.get(), null,
                              null,
                              INFO_LDAPPWMOD_DESCRIPTION_KEYSTORE.get());
      sslKeyStore.setPropertyName(OPTION_LONG_KEYSTOREPATH);
      argParser.addArgument(sslKeyStore);
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_KEYSTORE.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sslKeyStorePIN =
           new StringArgument("keystorepassword",
                              OPTION_SHORT_KEYSTORE_PWD,
                              OPTION_LONG_KEYSTORE_PWD ,
                              false, false, true,
                              INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                              null, null,
                              INFO_LDAPPWMOD_DESCRIPTION_KEYSTORE_PIN.get());
      sslKeyStorePIN.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
      argParser.addArgument(sslKeyStorePIN);
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_KEYSTORE_PIN.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sslKeyStorePINFile =
           new FileBasedArgument(
                   "keystorepasswordfile",
                   OPTION_SHORT_KEYSTORE_PWD_FILE,
                   OPTION_LONG_KEYSTORE_PWD_FILE,
                   false, false, INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
                   null, null,
                   INFO_LDAPPWMOD_DESCRIPTION_KEYSTORE_PINFILE.get());
      sslKeyStorePINFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
      argParser.addArgument(sslKeyStorePINFile);
      certNickname = new StringArgument("certnickname", null, "certNickname",
          false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname.setPropertyName("certNickname");
      argParser.addArgument(certNickname);
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_KEYSTORE_PINFILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickname =
              StringArgument.builder("certNickname")
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sslTrustStore =
           new StringArgument("truststorepath",
                              OPTION_SHORT_TRUSTSTOREPATH,
                              OPTION_LONG_TRUSTSTOREPATH, false,
                              false, true,
                              INFO_TRUSTSTOREPATH_PLACEHOLDER.get(), null, null,
                              INFO_LDAPPWMOD_DESCRIPTION_TRUSTSTORE.get());
      sslTrustStore.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
      argParser.addArgument(sslTrustStore);
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_TRUSTSTORE.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sslTrustStorePIN =
           new StringArgument("truststorepassword", null,
                              OPTION_LONG_TRUSTSTORE_PWD,
                              false, false, true,
                              INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(), null, null,
                              INFO_LDAPPWMOD_DESCRIPTION_TRUSTSTORE_PIN.get());
      sslTrustStorePIN.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
      argParser.addArgument(sslTrustStorePIN);
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_TRUSTSTORE_PIN.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sslTrustStorePINFile =
           new FileBasedArgument("truststorepasswordfile",
                    OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                    OPTION_LONG_TRUSTSTORE_PWD_FILE, false, false,
                    INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(), null,
                    null, INFO_LDAPPWMOD_DESCRIPTION_TRUSTSTORE_PINFILE.get());
      sslTrustStorePINFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
      argParser.addArgument(sslTrustStorePINFile);
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_LDAPPWMOD_DESCRIPTION_TRUSTSTORE_PINFILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      controlStr =
           new StringArgument("control", 'J', "control", false, true, true,
                    INFO_LDAP_CONTROL_PLACEHOLDER.get(),
                    null, null, INFO_DESCRIPTION_CONTROLS.get());
      controlStr.setPropertyName("control");
      argParser.addArgument(controlStr);
      int defaultTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT;
      connectTimeout = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
          null, OPTION_LONG_CONNECT_TIMEOUT,
          false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
          defaultTimeout, null,
          true, 0, false, Integer.MAX_VALUE,
          INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
      connectTimeout.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
      argParser.addArgument(connectTimeout);
              StringArgument.builder("control")
                      .shortIdentifier('J')
                      .description(INFO_DESCRIPTION_CONTROLS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDAP_CONTROL_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      connectTimeout =
              IntegerArgument.builder(OPTION_LONG_CONNECT_TIMEOUT)
                      .description(INFO_DESCRIPTION_CONNECTION_TIMEOUT.get())
                      .lowerBound(0)
                      .defaultValue(CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT)
                      .valuePlaceholder(INFO_TIMEOUT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java
@@ -27,6 +27,13 @@
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_BINDPWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_BINDPASSWORDFILE;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE;
import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_VERSION;
import static com.forgerock.opendj.cli.CliMessages.INFO_KEYSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -691,370 +698,283 @@
    try
    {
      propertiesFileArgument = new StringArgument("propertiesFilePath",
          null, OPTION_LONG_PROP_FILE_PATH,
          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      hostName = new StringArgument("host", OPTION_SHORT_HOST,
                                    OPTION_LONG_HOST, false, false, true,
                                    INFO_HOST_PLACEHOLDER.get(), "localhost",
                                    null,
                                    INFO_DESCRIPTION_HOST.get());
      hostName.setPropertyName(OPTION_LONG_HOST);
      argParser.addArgument(hostName);
      port = new IntegerArgument("port", OPTION_SHORT_PORT,
                                 OPTION_LONG_PORT, false, false, true,
                                 INFO_PORT_PLACEHOLDER.get(), 389, null,
                                 true, 1, true, 65535,
                                 INFO_DESCRIPTION_PORT.get());
      port.setPropertyName(OPTION_LONG_PORT);
      argParser.addArgument(port);
      useSSL = new BooleanArgument("useSSL", OPTION_SHORT_USE_SSL,
                                   OPTION_LONG_USE_SSL,
                                   INFO_DESCRIPTION_USE_SSL.get());
      useSSL.setPropertyName(OPTION_LONG_USE_SSL);
      argParser.addArgument(useSSL);
      startTLS = new BooleanArgument("startTLS", OPTION_SHORT_START_TLS,
                                    OPTION_LONG_START_TLS,
                                    INFO_DESCRIPTION_START_TLS.get());
      startTLS.setPropertyName(OPTION_LONG_START_TLS);
      argParser.addArgument(startTLS);
      bindDN = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_DESCRIPTION_BINDDN.get());
      bindDN.setPropertyName(OPTION_LONG_BINDDN);
      argParser.addArgument(bindDN);
      bindPassword = new StringArgument("bindPassword", OPTION_SHORT_BINDPWD,
                                        OPTION_LONG_BINDPWD,
                                        false, false, true,
                                        INFO_BINDPWD_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_BINDPASSWORD.get());
      bindPassword.setPropertyName(OPTION_LONG_BINDPWD);
      argParser.addArgument(bindPassword);
      hostName =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_DESCRIPTION_HOST.get())
                      .defaultValue("localhost")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      port =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(389)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      useSSL =
              BooleanArgument.builder(OPTION_LONG_USE_SSL)
                      .shortIdentifier(OPTION_SHORT_USE_SSL)
                      .description(INFO_DESCRIPTION_USE_SSL.get())
                      .buildAndAddToParser(argParser);
      startTLS =
              BooleanArgument.builder(OPTION_LONG_START_TLS)
                      .shortIdentifier(OPTION_SHORT_START_TLS)
                      .description(INFO_DESCRIPTION_START_TLS.get())
                      .buildAndAddToParser(argParser);
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_DESCRIPTION_BINDDN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPassword =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_DESCRIPTION_BINDPASSWORD.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPasswordFile =
           new FileBasedArgument("bindPasswordFile", OPTION_SHORT_BINDPWD_FILE,
                                 OPTION_LONG_BINDPWD_FILE,
                                 false, false,
                                 INFO_BINDPWD_FILE_PLACEHOLDER.get(), null,
                                 null, INFO_DESCRIPTION_BINDPASSWORDFILE.get());
      bindPasswordFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
      argParser.addArgument(bindPasswordFile);
      baseDN = new StringArgument("baseDN", OPTION_SHORT_BASEDN,
                                  OPTION_LONG_BASEDN, true, false, true,
                                  INFO_BASEDN_PLACEHOLDER.get(), null, null,
                                  INFO_SEARCH_DESCRIPTION_BASEDN.get());
      baseDN.setPropertyName(OPTION_LONG_BASEDN);
      argParser.addArgument(baseDN);
      HashSet<String> allowedScopes = new HashSet<>();
      allowedScopes.add("base");
      allowedScopes.add("one");
      allowedScopes.add("sub");
      allowedScopes.add("subordinate");
      searchScope = new MultiChoiceArgument(
              "searchScope", 's', "searchScope", false,
              true, INFO_SEARCH_SCOPE_PLACEHOLDER.get(), allowedScopes,
              false,
              INFO_SEARCH_DESCRIPTION_SEARCH_SCOPE.get());
      searchScope.setPropertyName("searchScope");
      searchScope.setDefaultValue("sub");
      argParser.addArgument(searchScope);
      filename = new StringArgument("filename", OPTION_SHORT_FILENAME,
                                    OPTION_LONG_FILENAME, false, false,
                                    true, INFO_FILE_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_SEARCH_DESCRIPTION_FILENAME.get());
      searchScope.setPropertyName(OPTION_LONG_FILENAME);
      argParser.addArgument(filename);
      saslExternal = new BooleanArgument(
              "useSASLExternal", 'r',
              "useSASLExternal",
              INFO_DESCRIPTION_USE_SASL_EXTERNAL.get());
      saslExternal.setPropertyName("useSASLExternal");
      argParser.addArgument(saslExternal);
      saslOptions = new StringArgument("saslOption", OPTION_SHORT_SASLOPTION,
                                       OPTION_LONG_SASLOPTION, false,
                                       true, true,
                                       INFO_SASL_OPTION_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_DESCRIPTION_SASL_PROPERTIES.get());
      saslOptions.setPropertyName(OPTION_LONG_SASLOPTION);
      argParser.addArgument(saslOptions);
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_DESCRIPTION_BINDPASSWORDFILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      baseDN =
              StringArgument.builder(OPTION_LONG_BASEDN)
                      .shortIdentifier(OPTION_SHORT_BASEDN)
                      .description(INFO_SEARCH_DESCRIPTION_BASEDN.get())
                      .required()
                      .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      searchScope =
              MultiChoiceArgument.<String>builder("searchScope")
                      .shortIdentifier('s')
                      .description(INFO_SEARCH_DESCRIPTION_SEARCH_SCOPE.get())
                      .allowedValues("base", "one", "sub", "subordinate")
                      .defaultValue("sub")
                      .valuePlaceholder(INFO_SEARCH_SCOPE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      filename =
              StringArgument.builder(OPTION_LONG_FILENAME)
                      .shortIdentifier(OPTION_SHORT_FILENAME)
                      .description(INFO_SEARCH_DESCRIPTION_FILENAME.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      saslExternal =
              BooleanArgument.builder("useSASLExternal")
                      .shortIdentifier('r')
                      .description(INFO_DESCRIPTION_USE_SASL_EXTERNAL.get())
                      .buildAndAddToParser(argParser);
      saslOptions =
              StringArgument.builder(OPTION_LONG_SASLOPTION)
                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
                      .description(INFO_DESCRIPTION_SASL_PROPERTIES.get())
                      .multiValued()
                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustAll = CommonArguments.getTrustAll();
      argParser.addArgument(trustAll);
      keyStorePath = new StringArgument("keyStorePath",
                                  OPTION_SHORT_KEYSTOREPATH,
                                  OPTION_LONG_KEYSTOREPATH, false, false, true,
                                  INFO_KEYSTOREPATH_PLACEHOLDER.get(), null,
                                  null,
                                  INFO_DESCRIPTION_KEYSTOREPATH.get());
      keyStorePath.setPropertyName(OPTION_LONG_KEYSTOREPATH);
      argParser.addArgument(keyStorePath);
      keyStorePassword = new StringArgument("keyStorePassword",
                                  OPTION_SHORT_KEYSTORE_PWD,
                                  OPTION_LONG_KEYSTORE_PWD, false, false,
                                  true, INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                                  null, null,
                                  INFO_DESCRIPTION_KEYSTOREPASSWORD.get());
      keyStorePassword.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
      argParser.addArgument(keyStorePassword);
      keyStorePath =
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_DESCRIPTION_KEYSTOREPATH.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePassword =
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePasswordFile =
           new FileBasedArgument("keystorepasswordfile",
                                 OPTION_SHORT_KEYSTORE_PWD_FILE,
                                 OPTION_LONG_KEYSTORE_PWD_FILE,
                                 false, false,
                                 INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
      keyStorePasswordFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
      argParser.addArgument(keyStorePasswordFile);
      certNickname = new StringArgument(
              "certnickname", OPTION_SHORT_CERT_NICKNAME,
              OPTION_LONG_CERT_NICKNAME,
              false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
              null, INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname.setPropertyName(OPTION_LONG_CERT_NICKNAME);
      argParser.addArgument(certNickname);
      trustStorePath = new StringArgument("trustStorePath",
                                  OPTION_SHORT_TRUSTSTOREPATH,
                                  OPTION_LONG_TRUSTSTOREPATH,
                                  false, false, true,
                                  INFO_TRUSTSTOREPATH_PLACEHOLDER.get(), null,
                                  null,
                                  INFO_DESCRIPTION_TRUSTSTOREPATH.get());
      trustStorePath.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
      argParser.addArgument(trustStorePath);
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickname =
              StringArgument.builder(OPTION_LONG_CERT_NICKNAME)
                      .shortIdentifier(OPTION_SHORT_CERT_NICKNAME)
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePath =
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPATH.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePassword =
           new StringArgument("trustStorePassword", null,
                              OPTION_LONG_TRUSTSTORE_PWD,
                              false, false, true,
                              INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(),
                              null,
                              null, INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get());
      trustStorePassword.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
      argParser.addArgument(trustStorePassword);
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePasswordFile =
           new FileBasedArgument(
                   "truststorepasswordfile",
                   OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                   OPTION_LONG_TRUSTSTORE_PWD_FILE, false, false,
                   INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(), null, null,
                   INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get());
      trustStorePasswordFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
      argParser.addArgument(trustStorePasswordFile);
      proxyAuthzID = new StringArgument("proxy_authzid",
                                        OPTION_SHORT_PROXYAUTHID,
                                        OPTION_LONG_PROXYAUTHID, false,
                                        false, true,
                                        INFO_PROXYAUTHID_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_DESCRIPTION_PROXY_AUTHZID.get());
      proxyAuthzID.setPropertyName(OPTION_LONG_PROXYAUTHID);
      argParser.addArgument(proxyAuthzID);
      reportAuthzID = new BooleanArgument(
              "reportauthzid", 'E', OPTION_LONG_REPORT_AUTHZ_ID,
              INFO_DESCRIPTION_REPORT_AUTHZID.get());
      reportAuthzID.setPropertyName(OPTION_LONG_REPORT_AUTHZ_ID);
      argParser.addArgument(reportAuthzID);
      usePasswordPolicyControl = new BooleanArgument(
              "usepwpolicycontrol", null,
              OPTION_LONG_USE_PW_POLICY_CTL,
              INFO_DESCRIPTION_USE_PWP_CONTROL.get());
      usePasswordPolicyControl.setPropertyName(OPTION_LONG_USE_PW_POLICY_CTL);
      argParser.addArgument(usePasswordPolicyControl);
      pSearchInfo = new StringArgument("psearchinfo", 'C', "persistentSearch",
                             false, false, true,
                             INFO_PSEARCH_PLACEHOLDER.get(),
                              null, null, INFO_DESCRIPTION_PSEARCH_INFO.get());
      pSearchInfo.setPropertyName("persistentSearch");
      pSearchInfo.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_PSEARCH_INFO.get());
      argParser.addArgument(pSearchInfo);
      simplePageSize = new IntegerArgument(
              "simplepagesize", null,
              "simplePageSize", false, false, true,
              INFO_NUM_ENTRIES_PLACEHOLDER.get(), 1000, null, true, 1,
              false, 0,
              INFO_DESCRIPTION_SIMPLE_PAGE_SIZE.get());
      simplePageSize.setPropertyName("simplePageSize");
      argParser.addArgument(simplePageSize);
      assertionFilter = new StringArgument(
              "assertionfilter", null,
              OPTION_LONG_ASSERTION_FILE,
              false, false,
              true, INFO_ASSERTION_FILTER_PLACEHOLDER.get(),
              null, null,
              INFO_DESCRIPTION_ASSERTION_FILTER.get());
      assertionFilter.setPropertyName(OPTION_LONG_ASSERTION_FILE);
      argParser.addArgument(assertionFilter);
      matchedValuesFilter = new StringArgument(
              "matchedvalues", null,
              "matchedValuesFilter", false, true, true,
              INFO_FILTER_PLACEHOLDER.get(), null, null,
              INFO_DESCRIPTION_MATCHED_VALUES_FILTER.get());
      matchedValuesFilter.setPropertyName("matchedValuesFilter");
      argParser.addArgument(matchedValuesFilter);
      sortOrder = new StringArgument(
              "sortorder", 'S', "sortOrder", false,
              false, true, INFO_SORT_ORDER_PLACEHOLDER.get(), null, null,
              INFO_DESCRIPTION_SORT_ORDER.get());
      sortOrder.setPropertyName("sortOrder");
      argParser.addArgument(sortOrder);
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      proxyAuthzID =
              StringArgument.builder(OPTION_LONG_PROXYAUTHID)
                      .shortIdentifier(OPTION_SHORT_PROXYAUTHID)
                      .description(INFO_DESCRIPTION_PROXY_AUTHZID.get())
                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      reportAuthzID =
              BooleanArgument.builder(OPTION_LONG_REPORT_AUTHZ_ID)
                      .shortIdentifier('E')
                      .description(INFO_DESCRIPTION_REPORT_AUTHZID.get())
                      .buildAndAddToParser(argParser);
      usePasswordPolicyControl =
              BooleanArgument.builder(OPTION_LONG_USE_PW_POLICY_CTL)
                      .description(INFO_DESCRIPTION_USE_PWP_CONTROL.get())
                      .buildAndAddToParser(argParser);
      pSearchInfo =
              StringArgument.builder("persistentSearch")
                      .shortIdentifier('C')
                      .description(INFO_DESCRIPTION_PSEARCH_INFO.get())
                      .docDescriptionSupplement(SUPPLEMENT_DESCRIPTION_PSEARCH_INFO.get())
                      .valuePlaceholder(INFO_PSEARCH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      simplePageSize =
              IntegerArgument.builder("simplePageSize")
                      .description(INFO_DESCRIPTION_SIMPLE_PAGE_SIZE.get())
                      .lowerBound(1)
                      .defaultValue(1000)
                      .valuePlaceholder(INFO_NUM_ENTRIES_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      assertionFilter =
              StringArgument.builder(OPTION_LONG_ASSERTION_FILE)
                      .description(INFO_DESCRIPTION_ASSERTION_FILTER.get())
                      .valuePlaceholder(INFO_ASSERTION_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      matchedValuesFilter =
              StringArgument.builder("matchedValuesFilter")
                      .description(INFO_DESCRIPTION_MATCHED_VALUES_FILTER.get())
                      .multiValued()
                      .valuePlaceholder(INFO_FILTER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sortOrder =
              StringArgument.builder("sortOrder")
                      .shortIdentifier('S')
                      .description(INFO_DESCRIPTION_SORT_ORDER.get())
                      .valuePlaceholder(INFO_SORT_ORDER_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      vlvDescriptor =
           new StringArgument(
                   "vlvdescriptor", 'G', "virtualListView", false,
                   false, true,
                   INFO_VLV_PLACEHOLDER.get(),
                   null, null, INFO_DESCRIPTION_VLV.get());
      vlvDescriptor.setPropertyName("virtualListView");
      argParser.addArgument(vlvDescriptor);
              StringArgument.builder("virtualListView")
                      .shortIdentifier('G')
                      .description(INFO_DESCRIPTION_VLV.get())
                      .valuePlaceholder(INFO_VLV_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      controlStr =
           new StringArgument("control", 'J', "control", false, true, true,
                    INFO_LDAP_CONTROL_PLACEHOLDER.get(),
                    null, null, INFO_DESCRIPTION_CONTROLS.get());
      controlStr.setPropertyName("control");
      controlStr.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_CONTROLS.get());
      argParser.addArgument(controlStr);
      subEntriesArgument = new BooleanArgument("subEntries",
              OPTION_SHORT_SUBENTRIES, OPTION_LONG_SUBENTRIES,
              INFO_DESCRIPTION_SUBENTRIES.get());
      subEntriesArgument.setPropertyName(OPTION_LONG_SUBENTRIES);
      argParser.addArgument(subEntriesArgument);
              StringArgument.builder("control")
                      .shortIdentifier('J')
                      .description(INFO_DESCRIPTION_CONTROLS.get())
                      .docDescriptionSupplement(SUPPLEMENT_DESCRIPTION_CONTROLS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDAP_CONTROL_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      subEntriesArgument =
              BooleanArgument.builder(OPTION_LONG_SUBENTRIES)
                      .shortIdentifier(OPTION_SHORT_SUBENTRIES)
                      .description(INFO_DESCRIPTION_SUBENTRIES.get())
                      .buildAndAddToParser(argParser);
      effectiveRightsUser =
              new StringArgument("effectiveRightsUser",
                      OPTION_SHORT_EFFECTIVERIGHTSUSER,
                      OPTION_LONG_EFFECTIVERIGHTSUSER, false, false, true,
                      INFO_PROXYAUTHID_PLACEHOLDER.get(), null, null,
                      INFO_DESCRIPTION_EFFECTIVERIGHTS_USER.get( ));
      effectiveRightsUser.setPropertyName(OPTION_LONG_EFFECTIVERIGHTSUSER);
      argParser.addArgument(effectiveRightsUser);
              StringArgument.builder(OPTION_LONG_EFFECTIVERIGHTSUSER)
                      .shortIdentifier(OPTION_SHORT_EFFECTIVERIGHTSUSER)
                      .description(INFO_DESCRIPTION_EFFECTIVERIGHTS_USER.get())
                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      effectiveRightsAttrs =
              new StringArgument("effectiveRightsAttrs",
                      OPTION_SHORT_EFFECTIVERIGHTSATTR,
                      OPTION_LONG_EFFECTIVERIGHTSATTR, false, true, true,
                      INFO_ATTRIBUTE_PLACEHOLDER.get(), null, null,
                      INFO_DESCRIPTION_EFFECTIVERIGHTS_ATTR.get( ));
      effectiveRightsAttrs.setPropertyName(OPTION_LONG_EFFECTIVERIGHTSATTR);
      argParser.addArgument(effectiveRightsAttrs);
      version = new IntegerArgument("version", OPTION_SHORT_PROTOCOL_VERSION,
                                    OPTION_LONG_PROTOCOL_VERSION, false, false,
                                    true,
                                    INFO_PROTOCOL_VERSION_PLACEHOLDER.get(), 3,
                                    null, INFO_DESCRIPTION_VERSION.get());
      version.setPropertyName(OPTION_LONG_PROTOCOL_VERSION);
      argParser.addArgument(version);
      int defaultTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT;
      connectTimeout = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
          null, OPTION_LONG_CONNECT_TIMEOUT,
          false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
          defaultTimeout, null,
          true, 0, false, Integer.MAX_VALUE,
          INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
      connectTimeout.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
      argParser.addArgument(connectTimeout);
      encodingStr = new StringArgument("encoding", 'i', "encoding", false,
                                       false, true,
                                       INFO_ENCODING_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_DESCRIPTION_ENCODING.get());
      encodingStr.setPropertyName("encoding");
      argParser.addArgument(encodingStr);
              StringArgument.builder(OPTION_LONG_EFFECTIVERIGHTSATTR)
                      .shortIdentifier(OPTION_SHORT_EFFECTIVERIGHTSATTR)
                      .description(INFO_DESCRIPTION_EFFECTIVERIGHTS_ATTR.get())
                      .multiValued()
                      .valuePlaceholder(INFO_ATTRIBUTE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      version =
              IntegerArgument.builder(OPTION_LONG_PROTOCOL_VERSION)
                      .shortIdentifier(OPTION_SHORT_PROTOCOL_VERSION)
                      .description(INFO_DESCRIPTION_VERSION.get())
                      .defaultValue(3)
                      .valuePlaceholder(INFO_PROTOCOL_VERSION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      connectTimeout =
              IntegerArgument.builder(OPTION_LONG_CONNECT_TIMEOUT)
                      .description(INFO_DESCRIPTION_CONNECTION_TIMEOUT.get())
                      .lowerBound(0)
                      .defaultValue(CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT)
                      .valuePlaceholder(INFO_TIMEOUT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      encodingStr =
              StringArgument.builder("encoding")
                      .shortIdentifier('i')
                      .description(INFO_DESCRIPTION_ENCODING.get())
                      .valuePlaceholder(INFO_ENCODING_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      dereferencePolicy =
           new StringArgument("derefpolicy", 'a', "dereferencePolicy", false,
                              false, true,
                              INFO_DEREFERENCE_POLICE_PLACEHOLDER.get(), "never",
                              null,
                              INFO_SEARCH_DESCRIPTION_DEREFERENCE_POLICY.get());
      dereferencePolicy.setPropertyName("dereferencePolicy");
      argParser.addArgument(dereferencePolicy);
      typesOnly = new BooleanArgument("typesOnly", 'A', "typesOnly",
                                      INFO_DESCRIPTION_TYPES_ONLY.get());
      typesOnly.setPropertyName("typesOnly");
      argParser.addArgument(typesOnly);
      sizeLimit = new IntegerArgument("sizeLimit", 'z', "sizeLimit", false,
                                      false, true,
                                      INFO_SIZE_LIMIT_PLACEHOLDER.get(), 0,
                                      null,
                                      INFO_SEARCH_DESCRIPTION_SIZE_LIMIT.get());
      sizeLimit.setPropertyName("sizeLimit");
      argParser.addArgument(sizeLimit);
      timeLimit = new IntegerArgument("timeLimit", 'l', "timeLimit", false,
                                      false, true,
                                      INFO_TIME_LIMIT_PLACEHOLDER.get(), 0,
                                      null,
                                      INFO_SEARCH_DESCRIPTION_TIME_LIMIT.get());
      timeLimit.setPropertyName("timeLimit");
      argParser.addArgument(timeLimit);
      dontWrap = new BooleanArgument("dontwrap", 'T',
                                     "dontWrap",
                                     INFO_DESCRIPTION_DONT_WRAP.get());
      dontWrap.setPropertyName("dontWrap");
      argParser.addArgument(dontWrap);
      countEntries = new BooleanArgument("countentries", null, "countEntries",
                                         INFO_DESCRIPTION_COUNT_ENTRIES.get());
      countEntries.setPropertyName("countEntries");
      argParser.addArgument(countEntries);
              StringArgument.builder("dereferencePolicy")
                      .shortIdentifier('a')
                      .description(INFO_SEARCH_DESCRIPTION_DEREFERENCE_POLICY.get())
                      .defaultValue("never")
                      .valuePlaceholder(INFO_DEREFERENCE_POLICE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      typesOnly =
              BooleanArgument.builder("typesOnly")
                      .shortIdentifier('A')
                      .description(INFO_DESCRIPTION_TYPES_ONLY.get())
                      .buildAndAddToParser(argParser);
      sizeLimit =
              IntegerArgument.builder("sizeLimit")
                      .shortIdentifier('z')
                      .description(INFO_SEARCH_DESCRIPTION_SIZE_LIMIT.get())
                      .defaultValue(0)
                      .valuePlaceholder(INFO_SIZE_LIMIT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      timeLimit =
              IntegerArgument.builder("timeLimit")
                      .shortIdentifier('l')
                      .description(INFO_SEARCH_DESCRIPTION_TIME_LIMIT.get())
                      .defaultValue(0)
                      .valuePlaceholder(INFO_TIME_LIMIT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      dontWrap =
              BooleanArgument.builder("dontWrap")
                      .shortIdentifier('T')
                      .description(INFO_DESCRIPTION_DONT_WRAP.get())
                      .buildAndAddToParser(argParser);
      countEntries =
              BooleanArgument.builder("countEntries")
                      .description(INFO_DESCRIPTION_COUNT_ENTRIES.get())
                      .buildAndAddToParser(argParser);
      continueOnError =
           new BooleanArgument("continueOnError", 'c', "continueOnError",
                               INFO_DESCRIPTION_CONTINUE_ON_ERROR.get());
      continueOnError.setPropertyName("continueOnError");
      argParser.addArgument(continueOnError);
      noop = new BooleanArgument("noop", OPTION_SHORT_DRYRUN,
          OPTION_LONG_DRYRUN, INFO_DESCRIPTION_NOOP.get());
      noop.setPropertyName(OPTION_LONG_DRYRUN);
      argParser.addArgument(noop);
              BooleanArgument.builder("continueOnError")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONTINUE_ON_ERROR.get())
                      .buildAndAddToParser(argParser);
      noop =
              BooleanArgument.builder(OPTION_LONG_DRYRUN)
                      .shortIdentifier(OPTION_SHORT_DRYRUN)
                      .description(INFO_DESCRIPTION_NOOP.get())
                      .buildAndAddToParser(argParser);
      verbose = CommonArguments.getVerbose();
      argParser.addArgument(verbose);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java
@@ -174,79 +174,76 @@
    argParser.setVersionHandler(new DirectoryServerVersionHandler());
    try
    {
      sourceLDIF = new StringArgument(
              "sourceldif", 's', "sourceLDIF", true,
              false, true, INFO_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFDIFF_DESCRIPTION_SOURCE_LDIF.get());
      argParser.addArgument(sourceLDIF);
      targetLDIF = new StringArgument(
              "targetldif", 't', "targetLDIF", true,
              false, true, INFO_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFDIFF_DESCRIPTION_TARGET_LDIF.get());
      argParser.addArgument(targetLDIF);
      outputLDIF = new StringArgument(
              "outputldif", 'o', "outputLDIF", false,
              false, true, INFO_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFDIFF_DESCRIPTION_OUTPUT_LDIF.get());
      argParser.addArgument(outputLDIF);
      ignoreAttrsFile = new StringArgument(
              "ignoreattrs", 'a', "ignoreAttrs", false,
              false, true, INFO_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFDIFF_DESCRIPTION_IGNORE_ATTRS.get());
      argParser.addArgument(ignoreAttrsFile);
      ignoreEntriesFile = new StringArgument(
              "ignoreentries", 'e', "ignoreEntries", false,
              false, true, INFO_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFDIFF_DESCRIPTION_IGNORE_ENTRIES.get());
      argParser.addArgument(ignoreEntriesFile);
      sourceLDIF =
              StringArgument.builder("sourceLDIF")
                      .shortIdentifier('s')
                      .description(INFO_LDIFDIFF_DESCRIPTION_SOURCE_LDIF.get())
                      .required()
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      targetLDIF =
              StringArgument.builder("targetLDIF")
                      .shortIdentifier('t')
                      .description(INFO_LDIFDIFF_DESCRIPTION_TARGET_LDIF.get())
                      .required()
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      outputLDIF =
              StringArgument.builder("outputLDIF")
                      .shortIdentifier('o')
                      .description(INFO_LDIFDIFF_DESCRIPTION_OUTPUT_LDIF.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ignoreAttrsFile =
              StringArgument.builder("ignoreAttrs")
                      .shortIdentifier('a')
                      .description(INFO_LDIFDIFF_DESCRIPTION_IGNORE_ATTRS.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ignoreEntriesFile =
              StringArgument.builder("ignoreEntries")
                      .shortIdentifier('e')
                      .description(INFO_LDIFDIFF_DESCRIPTION_IGNORE_ENTRIES.get())
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      overwriteExisting =
           new BooleanArgument(
                   "overwriteexisting", 'O',
                   "overwriteExisting",
                   INFO_LDIFDIFF_DESCRIPTION_OVERWRITE_EXISTING.get());
      argParser.addArgument(overwriteExisting);
              BooleanArgument.builder("overwriteExisting")
                      .shortIdentifier('O')
                      .description(INFO_LDIFDIFF_DESCRIPTION_OVERWRITE_EXISTING.get())
                      .buildAndAddToParser(argParser);
      singleValueChanges =
           new BooleanArgument(
                   "singlevaluechanges", 'S', "singleValueChanges",
                   INFO_LDIFDIFF_DESCRIPTION_SINGLE_VALUE_CHANGES.get());
      argParser.addArgument(singleValueChanges);
              BooleanArgument.builder("singleValueChanges")
                      .shortIdentifier('S')
                      .description(INFO_LDIFDIFF_DESCRIPTION_SINGLE_VALUE_CHANGES.get())
                      .buildAndAddToParser(argParser);
      doCheckSchema =
        new BooleanArgument(
                "checkschema", null, "checkSchema",
                INFO_LDIFDIFF_DESCRIPTION_CHECK_SCHEMA.get());
      argParser.addArgument(doCheckSchema);
      configFile = new StringArgument("configfile", 'c', "configFile", false,
                                      false, true,
                                      INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      configClass = new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                             OPTION_LONG_CONFIG_CLASS, false,
                             false, true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                             ConfigFileHandler.class.getName(), null,
                             INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              BooleanArgument.builder("checkSchema")
                      .description(INFO_LDIFDIFF_DESCRIPTION_CHECK_SCHEMA.get())
                      .buildAndAddToParser(argParser);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage =  CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
      useCompareResultCode =
          new BooleanArgument("usecompareresultcode", 'r',
              "useCompareResultCode",
              INFO_LDIFDIFF_DESCRIPTION_USE_COMPARE_RESULT.get());
      argParser.addArgument(useCompareResultCode);
              BooleanArgument.builder("useCompareResultCode")
                      .shortIdentifier('r')
                      .description(INFO_LDIFDIFF_DESCRIPTION_USE_COMPARE_RESULT.get())
                      .buildAndAddToParser(argParser);
      argParser.setUsageArgument(showUsage);
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java
@@ -435,47 +435,43 @@
    try
    {
      configFile = new StringArgument("configfile", 'c', "configFile", true,
                                      false, true,
                                      INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      configClass = new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                             OPTION_LONG_CONFIG_CLASS, false,
                             false, true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                             ConfigFileHandler.class.getName(), null,
                             INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      sourceFile = new StringArgument("sourceldif", 's', "sourceLDIF", true,
                                      false, true,
                                      INFO_LDIFFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_LDIFMODIFY_DESCRIPTION_SOURCE.get());
      argParser.addArgument(sourceFile);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      sourceFile =
              StringArgument.builder("sourceLDIF")
                      .shortIdentifier('s')
                      .description(INFO_LDIFMODIFY_DESCRIPTION_SOURCE.get())
                      .required()
                      .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      changesFile =
              new StringArgument("changesldif", 'm', "changesLDIF", true,
                                 false, true, INFO_LDIFFILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_LDIFMODIFY_DESCRIPTION_CHANGES.get());
      argParser.addArgument(changesFile);
      targetFile = new StringArgument("targetldif", 't', "targetLDIF", true,
                                      false, true,
                                      INFO_LDIFFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_LDIFMODIFY_DESCRIPTION_TARGET.get());
      argParser.addArgument(targetFile);
              StringArgument.builder("changesLDIF")
                      .shortIdentifier('m')
                      .description(INFO_LDIFMODIFY_DESCRIPTION_CHANGES.get())
                      .required()
                      .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      targetFile =
              StringArgument.builder("targetLDIF")
                      .shortIdentifier('t')
                      .description(INFO_LDIFMODIFY_DESCRIPTION_TARGET.get())
                      .required()
                      .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java
@@ -27,6 +27,8 @@
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_SIZE_LIMIT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_TIME_LIMIT_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -151,77 +153,82 @@
    try
    {
      ldifFile = new StringArgument(
              "ldiffile", 'l', "ldifFile", false, true,
              true, INFO_LDIFFILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFSEARCH_DESCRIPTION_LDIF_FILE.get());
      argParser.addArgument(ldifFile);
      baseDNString = new StringArgument(
              "basedn", OPTION_SHORT_BASEDN,
              OPTION_LONG_BASEDN, false, true,
              true, INFO_BASEDN_PLACEHOLDER.get(), "", null,
              INFO_LDIFSEARCH_DESCRIPTION_BASEDN.get());
      argParser.addArgument(baseDNString);
      scopeString = new MultiChoiceArgument<>(
              "scope", 's', "searchScope", false, false,
              true, INFO_SCOPE_PLACEHOLDER.get(), SCOPE_STRING_SUB,
              null, scopeStrings, false,
              INFO_LDIFSEARCH_DESCRIPTION_SCOPE.get());
      argParser.addArgument(scopeString);
      configFile = new StringArgument(
              "configfile", 'c', "configFile", false,
              false, true, INFO_CONFIGFILE_PLACEHOLDER.get(), null, null,
              INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      configClass = new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                             OPTION_LONG_CONFIG_CLASS, false,
                             false, true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                             ConfigFileHandler.class.getName(), null,
                             INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      filterFile = new StringArgument("filterfile", 'f', "filterFile", false,
          false, true, INFO_FILTER_FILE_PLACEHOLDER.get(), null, null,
          INFO_LDIFSEARCH_DESCRIPTION_FILTER_FILE.get());
      argParser.addArgument(filterFile);
      outputFile = new StringArgument(
              "outputfile", 'o', "outputFile", false,
              false, true, INFO_OUTPUT_FILE_PLACEHOLDER.get(), null, null,
              INFO_LDIFSEARCH_DESCRIPTION_OUTPUT_FILE.get());
      argParser.addArgument(outputFile);
      ldifFile =
              StringArgument.builder("ldifFile")
                      .shortIdentifier('l')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_LDIF_FILE.get())
                      .multiValued()
                      .valuePlaceholder(INFO_LDIFFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      baseDNString =
              StringArgument.builder(OPTION_LONG_BASEDN)
                      .shortIdentifier(OPTION_SHORT_BASEDN)
                      .description(INFO_LDIFSEARCH_DESCRIPTION_BASEDN.get())
                      .multiValued()
                      .defaultValue("")
                      .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      scopeString =
              MultiChoiceArgument.<String>builder("searchScope")
                      .shortIdentifier('s')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_SCOPE.get())
                      .allowedValues(scopeStrings)
                      .defaultValue(SCOPE_STRING_SUB)
                      .valuePlaceholder(INFO_SCOPE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      filterFile =
              StringArgument.builder("filterFile")
                      .shortIdentifier('f')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_FILTER_FILE.get())
                      .valuePlaceholder(INFO_FILTER_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      outputFile =
              StringArgument.builder("outputFile")
                      .shortIdentifier('o')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_OUTPUT_FILE.get())
                      .valuePlaceholder(INFO_OUTPUT_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      overwriteExisting =
           new BooleanArgument(
                   "overwriteexisting", 'O',"overwriteExisting",
                   INFO_LDIFSEARCH_DESCRIPTION_OVERWRITE_EXISTING.get());
      argParser.addArgument(overwriteExisting);
      dontWrap = new BooleanArgument(
              "dontwrap", 'T', "dontWrap",
              INFO_LDIFSEARCH_DESCRIPTION_DONT_WRAP.get());
      argParser.addArgument(dontWrap);
      sizeLimit = new IntegerArgument(
              "sizelimit", 'z', "sizeLimit", false,
              false, true, INFO_SIZE_LIMIT_PLACEHOLDER.get(), 0, null,
              true, 0, false, 0,
              INFO_LDIFSEARCH_DESCRIPTION_SIZE_LIMIT.get());
      argParser.addArgument(sizeLimit);
      timeLimit = new IntegerArgument(
              "timelimit", 't', "timeLimit", false,
              false, true, INFO_TIME_LIMIT_PLACEHOLDER.get(), 0, null,
              true, 0, false, 0,
              INFO_LDIFSEARCH_DESCRIPTION_TIME_LIMIT.get());
      argParser.addArgument(timeLimit);
              BooleanArgument.builder("overwriteExisting")
                      .shortIdentifier('O')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_OVERWRITE_EXISTING.get())
                      .buildAndAddToParser(argParser);
      dontWrap =
              BooleanArgument.builder("dontWrap")
                      .shortIdentifier('T')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_DONT_WRAP.get())
                      .buildAndAddToParser(argParser);
      sizeLimit =
              IntegerArgument.builder("sizeLimit")
                      .shortIdentifier('z')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_SIZE_LIMIT.get())
                      .lowerBound(0)
                      .defaultValue(0)
                      .valuePlaceholder(INFO_SIZE_LIMIT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      timeLimit =
              IntegerArgument.builder("timeLimit")
                      .shortIdentifier('t')
                      .description(INFO_LDIFSEARCH_DESCRIPTION_TIME_LIMIT.get())
                      .lowerBound(0)
                      .defaultValue(0)
                      .valuePlaceholder(INFO_TIME_LIMIT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java
@@ -148,38 +148,36 @@
    try
    {
      configClass =
           new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                              OPTION_LONG_CONFIG_CLASS, true, false,
                              true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                              ConfigFileHandler.class.getName(), null,
                              INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
           new StringArgument("configfile", 'f', "configFile", true, false,
                              true, INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      backendID = new StringArgument(
              "backendid", 'n', "backendID", false,
              true, true, INFO_BACKENDNAME_PLACEHOLDER.get(), null, null,
              INFO_LISTBACKENDS_DESCRIPTION_BACKEND_ID.get());
      argParser.addArgument(backendID);
      baseDN = new StringArgument(
              "basedn", OPTION_SHORT_BASEDN,
              OPTION_LONG_BASEDN, false, true, true,
              INFO_BASEDN_PLACEHOLDER.get(), null, null,
              INFO_LISTBACKENDS_DESCRIPTION_BASE_DN.get());
      argParser.addArgument(baseDN);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backendID =
              StringArgument.builder("backendID")
                      .shortIdentifier('n')
                      .description(INFO_LISTBACKENDS_DESCRIPTION_BACKEND_ID.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BACKENDNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      baseDN =
              StringArgument.builder(OPTION_LONG_BASEDN)
                      .shortIdentifier(OPTION_SHORT_BASEDN)
                      .description(INFO_LISTBACKENDS_DESCRIPTION_BASE_DN.get())
                      .multiValued()
                      .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageAccount.java
@@ -23,11 +23,15 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS.
 *      Portions Copyright 2011-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_BINDPWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_KEYSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_PORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -467,7 +471,7 @@
   * The name of the argument that will be used for holding the value(s) to use
   * for the target operation.
   */
  private static final String ARG_OP_VALUE = "opvalue";
  private static final String ARG_OP_VALUE = "operationValue";
@@ -840,117 +844,124 @@
    try
    {
      host = new StringArgument("host", OPTION_SHORT_HOST,
                                OPTION_LONG_HOST, false, false, true,
                                INFO_HOST_PLACEHOLDER.get(), "127.0.0.1", null,
                                INFO_PWPSTATE_DESCRIPTION_HOST.get());
      host =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_PWPSTATE_DESCRIPTION_HOST.get())
                      .defaultValue("127.0.0.1")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(host);
      port = new IntegerArgument(
              "port", OPTION_SHORT_PORT,
              OPTION_LONG_PORT, false, false, true,
              INFO_PORT_PLACEHOLDER.get(),
              AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT,
              null, true, 1,
              true, 65535, INFO_PWPSTATE_DESCRIPTION_PORT.get());
      port =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_PWPSTATE_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(port);
      bindDN = new StringArgument("binddn", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_PWPSTATE_DESCRIPTION_BINDDN.get());
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_PWPSTATE_DESCRIPTION_BINDDN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(bindDN);
      bindPW = new StringArgument("bindpw", OPTION_SHORT_BINDPWD,
                                  OPTION_LONG_BINDPWD, false, false,
                                  true,
                                  INFO_BINDPWD_PLACEHOLDER.get(), null, null,
                                  INFO_PWPSTATE_DESCRIPTION_BINDPW.get());
      bindPW =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_PWPSTATE_DESCRIPTION_BINDPW.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(bindPW);
      bindPWFile = new FileBasedArgument(
              "bindpwfile",
              OPTION_SHORT_BINDPWD_FILE,
              OPTION_LONG_BINDPWD_FILE,
              false, false,
              INFO_BINDPWD_FILE_PLACEHOLDER.get(),
              null, null,
              INFO_PWPSTATE_DESCRIPTION_BINDPWFILE.get());
      bindPWFile =
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_PWPSTATE_DESCRIPTION_BINDPWFILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(bindPWFile);
      targetDN = new StringArgument("targetdn", 'b', "targetDN", true, false,
                                    true, INFO_TARGETDN_PLACEHOLDER.get(), null,
                                    null,
                                    INFO_PWPSTATE_DESCRIPTION_TARGETDN.get());
      targetDN =
              StringArgument.builder("targetDN")
                      .shortIdentifier('b')
                      .description(INFO_PWPSTATE_DESCRIPTION_TARGETDN.get())
                      .required()
                      .valuePlaceholder(INFO_TARGETDN_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(targetDN);
      saslOption = new StringArgument(
              "sasloption", OPTION_SHORT_SASLOPTION,
              OPTION_LONG_SASLOPTION, false,
              true, true,
              INFO_SASL_OPTION_PLACEHOLDER.get(), null, null,
              INFO_PWPSTATE_DESCRIPTION_SASLOPTIONS.get());
      saslOption =
              StringArgument.builder(OPTION_LONG_SASLOPTION)
                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
                      .description(INFO_PWPSTATE_DESCRIPTION_SASLOPTIONS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(saslOption);
      trustAll = CommonArguments.getTrustAll();
      argParser.addGlobalArgument(trustAll);
      keyStoreFile = new StringArgument("keystorefile",
                                        OPTION_SHORT_KEYSTOREPATH,
                                        OPTION_LONG_KEYSTOREPATH,
                                        false, false, true,
                                        INFO_KEYSTOREPATH_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_PWPSTATE_DESCRIPTION_KSFILE.get());
      keyStoreFile =
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_PWPSTATE_DESCRIPTION_KSFILE.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(keyStoreFile);
      keyStorePW = new StringArgument("keystorepw", OPTION_SHORT_KEYSTORE_PWD,
                                      OPTION_LONG_KEYSTORE_PWD,
                                      false, false, true,
                                      INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                                      null, null,
                                      INFO_PWPSTATE_DESCRIPTION_KSPW.get());
      keyStorePW =
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_PWPSTATE_DESCRIPTION_KSPW.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(keyStorePW);
      keyStorePWFile = new FileBasedArgument("keystorepwfile",
                                OPTION_SHORT_KEYSTORE_PWD_FILE,
                                OPTION_LONG_KEYSTORE_PWD_FILE, false, false,
                                INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(), null,
                                null,
                                INFO_PWPSTATE_DESCRIPTION_KSPWFILE.get());
      keyStorePWFile =
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_PWPSTATE_DESCRIPTION_KSPWFILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(keyStorePWFile);
      certNickname = new StringArgument(
              "certnickname", 'N', "certNickname",
              false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
              null, INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname =
              StringArgument.builder("certNickname")
                      .shortIdentifier('N')
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(certNickname);
      trustStoreFile = new StringArgument(
              "truststorefile",
              OPTION_SHORT_TRUSTSTOREPATH,
              OPTION_LONG_TRUSTSTOREPATH,
              false, false, true,
              INFO_TRUSTSTOREPATH_PLACEHOLDER.get(),
              null, null,
              INFO_PWPSTATE_DESCRIPTION_TSFILE.get());
      trustStoreFile =
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_PWPSTATE_DESCRIPTION_TSFILE.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(trustStoreFile);
      trustStorePW = new StringArgument(
              "truststorepw", 'T',
              OPTION_LONG_TRUSTSTORE_PWD,
              false, false,
              true, INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(), null,
              null, INFO_PWPSTATE_DESCRIPTION_TSPW.get());
      trustStorePW =
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .shortIdentifier('T')
                      .description(INFO_PWPSTATE_DESCRIPTION_TSPW.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(trustStorePW);
      trustStorePWFile = new FileBasedArgument("truststorepwfile",
                                  OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                                  OPTION_LONG_TRUSTSTORE_PWD_FILE,
                                  false, false,
                                  INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(),
                                  null, null,
                                  INFO_PWPSTATE_DESCRIPTION_TSPWFILE.get());
      trustStorePWFile =
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_PWPSTATE_DESCRIPTION_TSPWFILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildArgument();
      argParser.addGlobalArgument(trustStorePWFile);
      verbose = CommonArguments.getVerbose();
@@ -978,11 +989,13 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_ACCOUNT_DISABLED_STATE.get();
      SubCommand sc = new SubCommand(argParser, SC_SET_ACCOUNT_DISABLED_STATE,
                                     msg);
      sc.addArgument(new MultiChoiceArgument(ARG_OP_VALUE, 'O',
                              "operationValue", true, false, true,
                              INFO_TRUE_FALSE_PLACEHOLDER.get(), null, null,
                              booleanValues, false,
                              INFO_DESCRIPTION_OPERATION_BOOLEAN_VALUE.get()));
      sc.addArgument(MultiChoiceArgument.<String>builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_BOOLEAN_VALUE.get())
              .required()
              .allowedValues(booleanValues)
              .valuePlaceholder(INFO_TRUE_FALSE_PLACEHOLDER.get())
              .buildArgument());
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_ACCOUNT_DISABLED_STATE.get();
      new SubCommand(argParser, SC_CLEAR_ACCOUNT_DISABLED_STATE, msg);
@@ -992,10 +1005,11 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_ACCOUNT_EXPIRATION_TIME.get();
      sc = new SubCommand(argParser, SC_SET_ACCOUNT_EXPIRATION_TIME, msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, false, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_ACCOUNT_EXPIRATION_TIME.get();
@@ -1014,10 +1028,11 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_PASSWORD_CHANGED_TIME.get();
      sc = new SubCommand(argParser, SC_SET_PASSWORD_CHANGED_TIME, msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, false, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_PASSWORD_CHANGED_TIME.get();
@@ -1031,10 +1046,11 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_PASSWORD_EXPIRATION_WARNED_TIME
              .get();
      sc = new SubCommand(argParser, SC_SET_PASSWORD_EXP_WARNED_TIME, msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, false, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_PASSWORD_EXPIRATION_WARNED_TIME
@@ -1057,19 +1073,23 @@
      msg = INFO_DESCRIPTION_PWPSTATE_ADD_AUTH_FAILURE_TIME.get();
      sc = new SubCommand(argParser, SC_ADD_AUTHENTICATION_FAILURE_TIME,
              msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, true, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .multiValued()
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_SET_AUTH_FAILURE_TIMES.get();
      sc = new SubCommand(argParser, SC_SET_AUTHENTICATION_FAILURE_TIMES,
                          msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, true, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUES.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUES.get())
              .multiValued()
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_AUTH_FAILURE_TIMES.get();
@@ -1093,10 +1113,11 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_LAST_LOGIN_TIME.get();
      sc = new SubCommand(argParser, SC_SET_LAST_LOGIN_TIME, msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, false, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_LAST_LOGIN_TIME.get();
@@ -1111,11 +1132,13 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_PASSWORD_RESET_STATE.get();
      sc = new SubCommand(argParser, SC_SET_PASSWORD_RESET_STATE, msg);
      sc.addArgument(new MultiChoiceArgument(ARG_OP_VALUE, 'O',
                              "operationValue", true, false, true,
                              INFO_TRUE_FALSE_PLACEHOLDER.get(), null, null,
                              booleanValues, false,
                              INFO_DESCRIPTION_OPERATION_BOOLEAN_VALUE.get()));
      sc.addArgument(MultiChoiceArgument.<String>builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_BOOLEAN_VALUE.get())
              .required()
              .allowedValues(booleanValues)
              .valuePlaceholder(INFO_TRUE_FALSE_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_PASSWORD_RESET_STATE.get();
@@ -1131,18 +1154,22 @@
      msg = INFO_DESCRIPTION_PWPSTATE_ADD_GRACE_LOGIN_USE_TIME.get();
      sc = new SubCommand(argParser, SC_ADD_GRACE_LOGIN_USE_TIME, msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, true, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .multiValued()
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_SET_GRACE_LOGIN_USE_TIMES.get();
      sc = new SubCommand(argParser, SC_SET_GRACE_LOGIN_USE_TIMES, msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, true, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUES.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUES.get())
              .multiValued()
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg = INFO_DESCRIPTION_PWPSTATE_CLEAR_GRACE_LOGIN_USE_TIMES.get();
@@ -1160,10 +1187,11 @@
      msg = INFO_DESCRIPTION_PWPSTATE_SET_PW_CHANGED_BY_REQUIRED_TIME.get();
      sc = new SubCommand(argParser, SC_SET_PASSWORD_CHANGED_BY_REQUIRED_TIME,
                          msg);
      sc.addArgument(new StringArgument(ARG_OP_VALUE, 'O', "operationValue",
                              false, false, true, INFO_TIME_PLACEHOLDER.get(),
                              null, null,
                              INFO_DESCRIPTION_OPERATION_TIME_VALUE.get()));
      sc.addArgument(StringArgument.builder(ARG_OP_VALUE)
              .shortIdentifier('O')
              .description(INFO_DESCRIPTION_OPERATION_TIME_VALUE.get())
              .valuePlaceholder(INFO_TIME_PLACEHOLDER.get())
              .buildArgument());
      sc.setHidden(true);
      msg =
@@ -1396,7 +1424,7 @@
    }
    else if (subCommandName.equals(SC_SET_ACCOUNT_DISABLED_STATE))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        String valueStr = a.getValue();
@@ -1430,7 +1458,7 @@
    }
    else if (subCommandName.equals(SC_SET_ACCOUNT_EXPIRATION_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_SET_ACCOUNT_EXPIRATION_TIME, a.getValue());
@@ -1454,7 +1482,7 @@
    }
    else if (subCommandName.equals(SC_SET_PASSWORD_CHANGED_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_SET_PASSWORD_CHANGED_TIME, a.getValue());
@@ -1474,7 +1502,7 @@
    }
    else if(subCommandName.equals(SC_SET_PASSWORD_EXP_WARNED_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_SET_PASSWORD_EXPIRATION_WARNED_TIME,
@@ -1508,7 +1536,7 @@
    }
    else if(subCommandName.equals(SC_ADD_AUTHENTICATION_FAILURE_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_ADD_AUTHENTICATION_FAILURE_TIME,
@@ -1521,7 +1549,7 @@
    }
    else if(subCommandName.equals(SC_SET_AUTHENTICATION_FAILURE_TIMES))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        ArrayList<String> valueList = new ArrayList<>(a.getValues());
@@ -1557,7 +1585,7 @@
    }
    else if(subCommandName.equals(SC_SET_LAST_LOGIN_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_SET_LAST_LOGIN_TIME, a.getValue());
@@ -1581,7 +1609,7 @@
    }
    else if(subCommandName.equals(SC_SET_PASSWORD_RESET_STATE))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        String valueStr = a.getValue();
@@ -1620,7 +1648,7 @@
    }
    else if(subCommandName.equals(SC_ADD_GRACE_LOGIN_USE_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_ADD_GRACE_LOGIN_USE_TIME, a.getValue());
@@ -1632,7 +1660,7 @@
    }
    else if(subCommandName.equals(SC_SET_GRACE_LOGIN_USE_TIMES))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        ArrayList<String> valueList = new ArrayList<>(a.getValues());
@@ -1661,7 +1689,7 @@
    }
    else if(subCommandName.equals(SC_SET_PASSWORD_CHANGED_BY_REQUIRED_TIME))
    {
      Argument a = subCommand.getArgumentForName(ARG_OP_VALUE);
      Argument a = subCommand.getArgumentForLongIdentifier(ARG_OP_VALUE);
      if (a != null && a.isPresent())
      {
        encode(writer, OP_SET_PASSWORD_CHANGED_BY_REQUIRED_TIME,
opendj-server-legacy/src/main/java/org/opends/server/tools/ManageTasks.java
@@ -22,12 +22,11 @@
 *
 *
 *      Copyright 2008-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS.
 *      Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.DecodeException;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryServer;
@@ -202,35 +201,36 @@
    // Initialize all the command-line argument types and register them with the parser
    try {
       StringArgument propertiesFileArgument = new StringArgument(
          "propertiesFilePath", null, OPTION_LONG_PROP_FILE_PATH, false, false,
          true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      StringArgument propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      BooleanArgument noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      BooleanArgument noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      task = new StringArgument(
              "info", 'i', "info",
              false, true, INFO_TASK_ID_PLACEHOLDER.get(),
              INFO_TASKINFO_TASK_ARG_DESCRIPTION.get());
      argParser.addArgument(task);
      cancel = new StringArgument(
              "cancel", 'c', "cancel",
              false, true, INFO_TASK_ID_PLACEHOLDER.get(),
              INFO_TASKINFO_TASK_ARG_CANCEL.get());
      argParser.addArgument(cancel);
      summary = new BooleanArgument(
              "summary", 's', "summary",
              INFO_TASKINFO_SUMMARY_ARG_DESCRIPTION.get());
      argParser.addArgument(summary);
      task =
              StringArgument.builder("info")
                      .shortIdentifier('i')
                      .description(INFO_TASKINFO_TASK_ARG_DESCRIPTION.get())
                      .valuePlaceholder(INFO_TASK_ID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      cancel =
              StringArgument.builder("cancel")
                      .shortIdentifier('c')
                      .description(INFO_TASKINFO_TASK_ARG_CANCEL.get())
                      .valuePlaceholder(INFO_TASK_ID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      summary =
              BooleanArgument.builder("summary")
                      .shortIdentifier('s')
                      .description(INFO_TASKINFO_SUMMARY_ARG_DESCRIPTION.get())
                      .buildAndAddToParser(argParser);
      noPrompt = CommonArguments.getNoPrompt();
      argParser.addArgument(noPrompt);
@@ -245,12 +245,7 @@
      return 1;
    }
    try
    {
      argParser.getArguments().initArgumentsWithConfiguration();
    }
    catch (ConfigException ignored) {}
    argParser.getArguments().initArgumentsWithConfiguration(argParser);
    // Parse the command-line arguments provided to this program.
    try {
      argParser.parseArguments(args);
opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS.
 *      Portions Copyright 2011-2016 ForgeRock AS.
 */
package org.opends.server.tools;
@@ -242,53 +242,59 @@
    argParser.setShortToolDescription(REF_SHORT_DESC_REBUILD_INDEX.get());
    configClass =
        new StringArgument("configclass", 'C', "configClass", true, false,
            true, INFO_CONFIGCLASS_PLACEHOLDER.get(), ConfigFileHandler.class
                .getName(), null, INFO_DESCRIPTION_CONFIG_CLASS.get());
    configClass.setHidden(true);
    argParser.addArgument(configClass);
            StringArgument.builder("configClass")
                    .shortIdentifier('C')
                    .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                    .hidden()
                    .required()
                    .defaultValue(ConfigFileHandler.class.getName())
                    .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                    .buildAndAddToParser(argParser);
    configFile =
        new StringArgument("configfile", 'f', "configFile", true, false, true,
            INFO_CONFIGFILE_PLACEHOLDER.get(), null, null,
            INFO_DESCRIPTION_CONFIG_FILE.get());
    configFile.setHidden(true);
    argParser.addArgument(configFile);
            StringArgument.builder("configFile")
                    .shortIdentifier('f')
                    .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                    .hidden()
                    .required()
                    .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                    .buildAndAddToParser(argParser);
    baseDNString =
        new StringArgument("basedn", 'b', "baseDN", true, isMultipleBackends,
            true, INFO_BASEDN_PLACEHOLDER.get(), null, null,
            INFO_REBUILDINDEX_DESCRIPTION_BASE_DN.get());
    argParser.addArgument(baseDNString);
    final StringArgument.Builder builder =
            StringArgument.builder("baseDN")
                    .shortIdentifier('b')
                    .description(INFO_REBUILDINDEX_DESCRIPTION_BASE_DN.get())
                    .required()
                    .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get());
    if (isMultipleBackends) {
      builder.multiValued();
    }
    baseDNString = builder.buildAndAddToParser(argParser);
    indexList =
        new StringArgument("index", 'i', "index", false, true, true,
            INFO_INDEX_PLACEHOLDER.get(), null, null,
            INFO_REBUILDINDEX_DESCRIPTION_INDEX_NAME.get());
    argParser.addArgument(indexList);
            StringArgument.builder("index")
                    .shortIdentifier('i')
                    .description(INFO_REBUILDINDEX_DESCRIPTION_INDEX_NAME.get())
                    .multiValued()
                    .valuePlaceholder(INFO_INDEX_PLACEHOLDER.get())
                    .buildAndAddToParser(argParser);
    rebuildAll =
        new BooleanArgument("rebuildAll", null, "rebuildAll",
            INFO_REBUILDINDEX_DESCRIPTION_REBUILD_ALL.get());
    argParser.addArgument(rebuildAll);
            BooleanArgument.builder("rebuildAll")
                    .description(INFO_REBUILDINDEX_DESCRIPTION_REBUILD_ALL.get())
                    .buildAndAddToParser(argParser);
    rebuildDegraded =
        new BooleanArgument("rebuildDegraded", null, "rebuildDegraded",
            INFO_REBUILDINDEX_DESCRIPTION_REBUILD_DEGRADED.get());
    argParser.addArgument(rebuildDegraded);
            BooleanArgument.builder("rebuildDegraded")
                    .description(INFO_REBUILDINDEX_DESCRIPTION_REBUILD_DEGRADED.get())
                    .buildAndAddToParser(argParser);
    clearDegradedState =
        new BooleanArgument("clearDegradedState", null, "clearDegradedState",
            INFO_REBUILDINDEX_DESCRIPTION_CLEAR_DEGRADED_STATE.get());
    argParser.addArgument(clearDegradedState);
            BooleanArgument.builder("clearDegradedState")
                    .description(INFO_REBUILDINDEX_DESCRIPTION_CLEAR_DEGRADED_STATE.get())
                    .buildAndAddToParser(argParser);
    tmpDirectory =
        new StringArgument("tmpdirectory", null, "tmpdirectory", false, false,
            true, INFO_REBUILDINDEX_TEMP_DIR_PLACEHOLDER.get(), "import-tmp",
            null, INFO_REBUILDINDEX_DESCRIPTION_TEMP_DIRECTORY.get());
    argParser.addArgument(tmpDirectory);
            StringArgument.builder("tmpdirectory")
                    .description(INFO_REBUILDINDEX_DESCRIPTION_TEMP_DIRECTORY.get())
                    .defaultValue("import-tmp")
                    .valuePlaceholder(INFO_REBUILDINDEX_TEMP_DIR_PLACEHOLDER.get())
                    .buildAndAddToParser(argParser);
    final BooleanArgument displayUsage = CommonArguments.getShowUsage();
    argParser.addArgument(displayUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS.
 *      Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.opends.server.tools;
@@ -168,50 +168,45 @@
      argParser.setShortToolDescription(REF_SHORT_DESC_RESTORE.get());
      configClass =
           new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                              OPTION_LONG_CONFIG_CLASS, true, false,
                              true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                              ConfigFileHandler.class.getName(), null,
                              INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
           new StringArgument("configfile", 'f', "configFile", true, false,
                              true, INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backupIDString =
           new StringArgument("backupid", 'I', "backupID", false, false, true,
                              INFO_BACKUPID_PLACEHOLDER.get(), null, null,
                              INFO_RESTOREDB_DESCRIPTION_BACKUP_ID.get());
      argParser.addArgument(backupIDString);
              StringArgument.builder("backupID")
                      .shortIdentifier('I')
                      .description(INFO_RESTOREDB_DESCRIPTION_BACKUP_ID.get())
                      .valuePlaceholder(INFO_BACKUPID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      backupDirectory =
           new StringArgument("backupdirectory", 'd', "backupDirectory", true,
                              false, true, INFO_BACKUPDIR_PLACEHOLDER.get(),
                              null, null,
                              INFO_RESTOREDB_DESCRIPTION_BACKUP_DIR.get());
      argParser.addArgument(backupDirectory);
      listBackups = new BooleanArgument(
              "listbackups", 'l', "listBackups",
              INFO_RESTOREDB_DESCRIPTION_LIST_BACKUPS.get());
      argParser.addArgument(listBackups);
      verifyOnly = new BooleanArgument(
              "verifyonly", OPTION_SHORT_DRYRUN,
              OPTION_LONG_DRYRUN,
              INFO_RESTOREDB_DESCRIPTION_VERIFY_ONLY.get());
      argParser.addArgument(verifyOnly);
              StringArgument.builder("backupDirectory")
                      .shortIdentifier('d')
                      .description(INFO_RESTOREDB_DESCRIPTION_BACKUP_DIR.get())
                      .required()
                      .valuePlaceholder(INFO_BACKUPDIR_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      listBackups =
              BooleanArgument.builder("listBackups")
                      .shortIdentifier('l')
                      .description(INFO_RESTOREDB_DESCRIPTION_LIST_BACKUPS.get())
                      .buildAndAddToParser(argParser);
      verifyOnly =
              BooleanArgument.builder(OPTION_LONG_DRYRUN)
                      .shortIdentifier(OPTION_SHORT_DRYRUN)
                      .description(INFO_RESTOREDB_DESCRIPTION_VERIFY_ONLY.get())
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
@@ -224,14 +219,7 @@
    }
    // Init the default values so that they can appear also on the usage.
    try
    {
      argParser.getArguments().initArgumentsWithConfiguration();
    }
    catch (ConfigException ce)
    {
      // Ignore.
    }
    argParser.getArguments().initArgumentsWithConfiguration(argParser);
    // Parse the command-line arguments provided to this program.
    try
opendj-server-legacy/src/main/java/org/opends/server/tools/StopDS.java
@@ -22,11 +22,15 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS.
 *      Portions Copyright 2011-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_BINDPWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_KEYSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_PORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -183,7 +187,6 @@
    argParser.setVersionHandler(new DirectoryServerVersionHandler());
    BooleanArgument   checkStoppability;
    BooleanArgument   quietMode;
    BooleanArgument   windowsNetStop;
    BooleanArgument   restart;
    BooleanArgument   showUsage;
    BooleanArgument   trustAll;
@@ -208,179 +211,136 @@
    try
    {
      propertiesFileArgument = new StringArgument("propertiesFilePath",
          null, OPTION_LONG_PROP_FILE_PATH,
          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
          INFO_DESCRIPTION_PROP_FILE_PATH.get());
      argParser.addArgument(propertiesFileArgument);
      propertiesFileArgument =
              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      argParser.setFilePropertiesArgument(propertiesFileArgument);
      noPropertiesFileArgument = new BooleanArgument(
          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
          INFO_DESCRIPTION_NO_PROP_FILE.get());
      argParser.addArgument(noPropertiesFileArgument);
      noPropertiesFileArgument =
              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
                      .buildAndAddToParser(argParser);
      argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
      host = new StringArgument("host", OPTION_SHORT_HOST,
                                OPTION_LONG_HOST, false, false, true,
                                INFO_HOST_PLACEHOLDER.get(), "127.0.0.1", null,
                                INFO_STOPDS_DESCRIPTION_HOST.get());
      host.setPropertyName(OPTION_LONG_HOST);
      argParser.addArgument(host);
      port = new IntegerArgument(
              "port", OPTION_SHORT_PORT,
              OPTION_LONG_PORT, false, false, true,
              INFO_PORT_PLACEHOLDER.get(),
              AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT,
              null, true, 1,
              true, 65535, INFO_STOPDS_DESCRIPTION_PORT.get());
      port.setPropertyName(OPTION_LONG_PORT);
      argParser.addArgument(port);
      bindDN = new StringArgument("binddn", OPTION_SHORT_BINDDN,
                                  OPTION_LONG_BINDDN, false, false, true,
                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
                                  INFO_STOPDS_DESCRIPTION_BINDDN.get());
      bindDN.setPropertyName(OPTION_LONG_BINDDN);
      argParser.addArgument(bindDN);
      bindPW = new StringArgument("bindpw", OPTION_SHORT_BINDPWD,
                                  OPTION_LONG_BINDPWD, false, false,
                                  true,
                                  INFO_BINDPWD_PLACEHOLDER.get(), null, null,
                                  INFO_STOPDS_DESCRIPTION_BINDPW.get());
      bindPW.setPropertyName(OPTION_LONG_BINDPWD);
      argParser.addArgument(bindPW);
      bindPWFile = new FileBasedArgument(
              "bindpwfile",
              OPTION_SHORT_BINDPWD_FILE,
              OPTION_LONG_BINDPWD_FILE,
              false, false,
              INFO_BINDPWD_FILE_PLACEHOLDER.get(),
              null, null,
              INFO_STOPDS_DESCRIPTION_BINDPWFILE.get());
      bindPWFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
      argParser.addArgument(bindPWFile);
      saslOption = new StringArgument(
              "sasloption", OPTION_SHORT_SASLOPTION,
              OPTION_LONG_SASLOPTION, false,
              true, true,
              INFO_SASL_OPTION_PLACEHOLDER.get(), null, null,
              INFO_STOPDS_DESCRIPTION_SASLOPTIONS.get());
      saslOption.setPropertyName(OPTION_LONG_SASLOPTION);
      argParser.addArgument(saslOption);
      proxyAuthzID = new StringArgument(
              "proxyauthzid",
              OPTION_SHORT_PROXYAUTHID,
              OPTION_LONG_PROXYAUTHID, false,
              false, true,
              INFO_PROXYAUTHID_PLACEHOLDER.get(), null,
              null,
              INFO_STOPDS_DESCRIPTION_PROXYAUTHZID.get());
      proxyAuthzID.setPropertyName(OPTION_LONG_PROXYAUTHID);
      argParser.addArgument(proxyAuthzID);
      stopReason = new StringArgument(
              "stopreason", 'r', "stopReason", false,
              false, true, INFO_STOP_REASON_PLACEHOLDER.get(), null, null,
              INFO_STOPDS_DESCRIPTION_STOP_REASON.get());
      stopReason.setPropertyName("stopReason");
      argParser.addArgument(stopReason);
      checkStoppability = new BooleanArgument("checkstoppability", null,
              "checkStoppability",
              INFO_STOPDS_CHECK_STOPPABILITY.get());
      checkStoppability.setHidden(true);
      argParser.addArgument(checkStoppability);
      windowsNetStop = new BooleanArgument("windowsnetstop", null,
          "windowsNetStop", INFO_STOPDS_DESCRIPTION_WINDOWS_NET_STOP.get());
      windowsNetStop.setHidden(true);
      argParser.addArgument(windowsNetStop);
      host =
              StringArgument.builder(OPTION_LONG_HOST)
                      .shortIdentifier(OPTION_SHORT_HOST)
                      .description(INFO_STOPDS_DESCRIPTION_HOST.get())
                      .defaultValue("127.0.0.1")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      port =
              IntegerArgument.builder(OPTION_LONG_PORT)
                      .shortIdentifier(OPTION_SHORT_PORT)
                      .description(INFO_STOPDS_DESCRIPTION_PORT.get())
                      .range(1, 65535)
                      .defaultValue(AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT)
                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindDN =
              StringArgument.builder(OPTION_LONG_BINDDN)
                      .shortIdentifier(OPTION_SHORT_BINDDN)
                      .description(INFO_STOPDS_DESCRIPTION_BINDDN.get())
                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPW =
              StringArgument.builder(OPTION_LONG_BINDPWD)
                      .shortIdentifier(OPTION_SHORT_BINDPWD)
                      .description(INFO_STOPDS_DESCRIPTION_BINDPW.get())
                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bindPWFile =
              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                      .description(INFO_STOPDS_DESCRIPTION_BINDPWFILE.get())
                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      saslOption =
              StringArgument.builder(OPTION_LONG_SASLOPTION)
                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
                      .description(INFO_STOPDS_DESCRIPTION_SASLOPTIONS.get())
                      .multiValued()
                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      proxyAuthzID =
              StringArgument.builder(OPTION_LONG_PROXYAUTHID)
                      .shortIdentifier(OPTION_SHORT_PROXYAUTHID)
                      .description(INFO_STOPDS_DESCRIPTION_PROXYAUTHZID.get())
                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      stopReason =
              StringArgument.builder("stopReason")
                      .shortIdentifier('r')
                      .description(INFO_STOPDS_DESCRIPTION_STOP_REASON.get())
                      .valuePlaceholder(INFO_STOP_REASON_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      checkStoppability =
              BooleanArgument.builder(OPTION_LONG_CHECK_STOPPABILITY)
                      .description(INFO_STOPDS_CHECK_STOPPABILITY.get())
                      .hidden()
                      .buildAndAddToParser(argParser);
      BooleanArgument.builder(OPTION_LONG_WINDOWS_NET_STOP)
              .description(INFO_STOPDS_DESCRIPTION_WINDOWS_NET_STOP.get())
              .hidden()
              .buildAndAddToParser(argParser);
      restart = CommonArguments.getRestart();
      argParser.addArgument(restart);
      stopTimeStr = new StringArgument("stoptime", 't', "stopTime", false,
                                       false, true,
                                       INFO_STOP_TIME_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_STOPDS_DESCRIPTION_STOP_TIME.get());
      stopTimeStr.setPropertyName("stopTime");
      argParser.addArgument(stopTimeStr);
      stopTimeStr =
              StringArgument.builder("stopTime")
                      .shortIdentifier('t')
                      .description(INFO_STOPDS_DESCRIPTION_STOP_TIME.get())
                      .valuePlaceholder(INFO_STOP_TIME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustAll = CommonArguments.getTrustAll();
      argParser.addArgument(trustAll);
      keyStoreFile = new StringArgument("keystorefile",
                                        OPTION_SHORT_KEYSTOREPATH,
                                        OPTION_LONG_KEYSTOREPATH,
                                        false, false, true,
                                        INFO_KEYSTOREPATH_PLACEHOLDER.get(),
                                        null, null,
                                        INFO_STOPDS_DESCRIPTION_KSFILE.get());
      keyStoreFile.setPropertyName(OPTION_LONG_KEYSTOREPATH);
      argParser.addArgument(keyStoreFile);
      keyStorePW = new StringArgument("keystorepw", OPTION_SHORT_KEYSTORE_PWD,
                                      OPTION_LONG_KEYSTORE_PWD,
                                      false, false, true,
                                      INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
                                      null, null,
                                      INFO_STOPDS_DESCRIPTION_KSPW.get());
      keyStorePW.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
      argParser.addArgument(keyStorePW);
      keyStorePWFile = new FileBasedArgument(
              "keystorepwfile",
              OPTION_SHORT_KEYSTORE_PWD_FILE,
              OPTION_LONG_KEYSTORE_PWD_FILE,
              false, false,
              INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
              null, null,
              INFO_STOPDS_DESCRIPTION_KSPWFILE.get());
      keyStorePWFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
      argParser.addArgument(keyStorePWFile);
      certNickname = new StringArgument(
              "certnickname", 'N', "certNickname",
              false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
              null, INFO_DESCRIPTION_CERT_NICKNAME.get());
      certNickname.setPropertyName("certNickname");
      argParser.addArgument(certNickname);
      trustStoreFile = new StringArgument("truststorefile",
                                          OPTION_SHORT_TRUSTSTOREPATH,
                                          OPTION_LONG_TRUSTSTOREPATH,
                                          false, false, true,
                                          INFO_TRUSTSTOREPATH_PLACEHOLDER.get(),
                                          null, null,
                                          INFO_STOPDS_DESCRIPTION_TSFILE.get());
      trustStoreFile.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
      argParser.addArgument(trustStoreFile);
      trustStorePW = new StringArgument(
              "truststorepw", 'T',
              OPTION_LONG_TRUSTSTORE_PWD,
              false, false,
              true, INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(), null,
              null, INFO_STOPDS_DESCRIPTION_TSPW.get());
      trustStorePW.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
      argParser.addArgument(trustStorePW);
      trustStorePWFile = new FileBasedArgument("truststorepwfile",
                                  OPTION_SHORT_TRUSTSTORE_PWD_FILE,
                                  OPTION_LONG_TRUSTSTORE_PWD_FILE,
                                  false, false,
                                  INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(),
                                  null, null,
                                  INFO_STOPDS_DESCRIPTION_TSPWFILE.get());
      trustStorePWFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
      argParser.addArgument(trustStorePWFile);
      keyStoreFile =
              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
                      .description(INFO_STOPDS_DESCRIPTION_KSFILE.get())
                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePW =
              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
                      .description(INFO_STOPDS_DESCRIPTION_KSPW.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      keyStorePWFile =
              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
                      .description(INFO_STOPDS_DESCRIPTION_KSPWFILE.get())
                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      certNickname =
              StringArgument.builder("certNickname")
                      .shortIdentifier('N')
                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStoreFile =
              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
                      .description(INFO_STOPDS_DESCRIPTION_TSFILE.get())
                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePW =
              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
                      .shortIdentifier('T')
                      .description(INFO_STOPDS_DESCRIPTION_TSPW.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      trustStorePWFile =
              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
                      .description(INFO_STOPDS_DESCRIPTION_TSPWFILE.get())
                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      quietMode = CommonArguments.getQuiet();
      argParser.addArgument(quietMode);
@@ -711,23 +671,18 @@
      quietMode = true;
    }
    BooleanArgument restart =
      (BooleanArgument)argParser.getArgumentForLongID(OPTION_LONG_RESTART);
    boolean restartPresent = restart.isPresent();
    BooleanArgument windowsNetStop =
      (BooleanArgument)argParser.getArgumentForLongID("windowsnetstop");
    boolean windowsNetStopPresent = windowsNetStop.isPresent();
    final boolean restartPresent = argParser.getArgumentForLongID(OPTION_LONG_RESTART).isPresent();
    final boolean windowsNetStopPresent = argParser.getArgumentForLongID(OPTION_LONG_WINDOWS_NET_STOP).isPresent();
    // Check if this is a stop through protocol.
    LinkedList<Argument> list = argParser.getArgumentList();
    boolean stopThroughProtocol = false;
    for (Argument arg: list)
    for (final Argument arg: argParser.getArgumentList())
    {
      if (!OPTION_LONG_RESTART.toLowerCase().equals(arg.getName()) &&
          !OPTION_LONG_QUIET.equals(arg.getName()) &&
          !OPTION_LONG_HELP.toLowerCase().equals(arg.getName()) &&
          !"checkstoppability".equals(arg.getName()) &&
          !"windowsnetstop".equals(arg.getName()) &&
      if (!OPTION_LONG_RESTART.equals(arg.getLongIdentifier()) &&
          !OPTION_LONG_QUIET.equals(arg.getLongIdentifier()) &&
          !OPTION_LONG_HELP.equals(arg.getLongIdentifier()) &&
          !OPTION_LONG_CHECK_STOPPABILITY.equals(arg.getLongIdentifier()) &&
          !OPTION_LONG_WINDOWS_NET_STOP.equals(arg.getLongIdentifier()) &&
          ! OPTION_LONG_NO_PROP_FILE.equals(arg.getLongIdentifier()))
      {
        stopThroughProtocol |= arg.isPresent();
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS.
 *      Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.opends.server.tools;
@@ -128,48 +128,45 @@
    try
    {
      configClass =
           new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                              OPTION_LONG_CONFIG_CLASS, true, false,
                              true, INFO_CONFIGCLASS_PLACEHOLDER.get(),
                              ConfigFileHandler.class.getName(), null,
                              INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .required()
                      .defaultValue(ConfigFileHandler.class.getName())
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configFile =
           new StringArgument("configfile", 'f', "configFile", true, false,
                              true, INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                              null,
                              INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
              StringArgument.builder("configFile")
                      .shortIdentifier('f')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      baseDNString =
           new StringArgument("basedn", OPTION_SHORT_BASEDN,
                              OPTION_LONG_BASEDN, true, false, true,
                              INFO_BASEDN_PLACEHOLDER.get(), null, null,
                              INFO_VERIFYINDEX_DESCRIPTION_BASE_DN.get());
      argParser.addArgument(baseDNString);
              StringArgument.builder(OPTION_LONG_BASEDN)
                      .shortIdentifier(OPTION_SHORT_BASEDN)
                      .description(INFO_VERIFYINDEX_DESCRIPTION_BASE_DN.get())
                      .required()
                      .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      indexList =
           new StringArgument("index", 'i', "index",
                              false, true, true,
                              INFO_INDEX_PLACEHOLDER.get(), null, null,
                              INFO_VERIFYINDEX_DESCRIPTION_INDEX_NAME.get());
      argParser.addArgument(indexList);
              StringArgument.builder("index")
                      .shortIdentifier('i')
                      .description(INFO_VERIFYINDEX_DESCRIPTION_INDEX_NAME.get())
                      .multiValued()
                      .valuePlaceholder(INFO_INDEX_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      cleanMode =
           new BooleanArgument("clean", 'c', "clean",
                               INFO_VERIFYINDEX_DESCRIPTION_VERIFY_CLEAN.get());
      argParser.addArgument(cleanMode);
              BooleanArgument.builder("clean")
                      .shortIdentifier('c')
                      .description(INFO_VERIFYINDEX_DESCRIPTION_VERIFY_CLEAN.get())
                      .buildAndAddToParser(argParser);
      countErrors =
           new BooleanArgument("counterrors", null, "countErrors",
                               INFO_VERIFYINDEX_DESCRIPTION_COUNT_ERRORS.get());
      argParser.addArgument(countErrors);
              BooleanArgument.builder("countErrors")
                      .description(INFO_VERIFYINDEX_DESCRIPTION_COUNT_ERRORS.get())
                      .buildAndAddToParser(argParser);
      displayUsage = CommonArguments.getShowUsage();
      argParser.addArgument(displayUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/WaitForFileDelete.java
@@ -180,42 +180,40 @@
    try
    {
      targetFilePath =
           new StringArgument("targetfile", 'f', "targetFile", true, false,
                              true, INFO_PATH_PLACEHOLDER.get(), null, null,
                              INFO_WAIT4DEL_DESCRIPTION_TARGET_FILE.get());
      argParser.addArgument(targetFilePath);
              StringArgument.builder("targetFile")
                      .shortIdentifier('f')
                      .description(INFO_WAIT4DEL_DESCRIPTION_TARGET_FILE.get())
                      .required()
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      logFilePath =
              StringArgument.builder("logFile")
                      .shortIdentifier('l')
                      .description(INFO_WAIT4DEL_DESCRIPTION_LOG_FILE.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      outputFilePath =
              StringArgument.builder("outputFile")
                      .shortIdentifier('o')
                      .description(INFO_WAIT4DEL_DESCRIPTION_OUTPUT_FILE.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      timeout =
              IntegerArgument.builder("timeout")
                      .shortIdentifier('t')
                      .description(INFO_WAIT4DEL_DESCRIPTION_TIMEOUT.get())
                      .required()
                      .lowerBound(0)
                      .defaultValue(DirectoryServer.DEFAULT_TIMEOUT)
                      .valuePlaceholder(INFO_SECONDS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      logFilePath = new StringArgument(
              "logfile", 'l', "logFile", false, false,
              true, INFO_PATH_PLACEHOLDER.get(), null, null,
              INFO_WAIT4DEL_DESCRIPTION_LOG_FILE.get());
      argParser.addArgument(logFilePath);
      outputFilePath = new StringArgument(
              "outputfile", 'o', "outputFile",
              false, false,
              true, INFO_PATH_PLACEHOLDER.get(), null, null,
              INFO_WAIT4DEL_DESCRIPTION_OUTPUT_FILE.get());
      argParser.addArgument(outputFilePath);
      timeout = new IntegerArgument("timeout", 't', "timeout", true, false,
                                    true, INFO_SECONDS_PLACEHOLDER.get(),
                                    DirectoryServer.DEFAULT_TIMEOUT,
                                    null, true, 0, false,
                                    0, INFO_WAIT4DEL_DESCRIPTION_TIMEOUT.get());
      argParser.addArgument(timeout);
      // Not used in this class, but required by the start-ds script
      // (see issue #3814)
      useLastKnownGoodConfig =
           new BooleanArgument("lastknowngoodconfig", 'L',
                               "useLastKnownGoodConfig",
                               INFO_DSCORE_DESCRIPTION_LASTKNOWNGOODCFG.get());
      argParser.addArgument(useLastKnownGoodConfig);
      // Not used in this class, but required by the start-ds script (see issue #3814)
      BooleanArgument.builder("useLastKnownGoodConfig")
              .shortIdentifier('L')
              .description(INFO_DSCORE_DESCRIPTION_LASTKNOWNGOODCFG.get())
              .buildAndAddToParser(argParser);
      // Not used in this class, but required by the start-ds script (see issue #3814)
      quietMode = CommonArguments.getQuiet();
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java
@@ -27,6 +27,8 @@
package org.opends.server.tools.dsreplication;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_BINDPWD_FILE_PLACEHOLDER;
import static com.forgerock.opendj.cli.CliMessages.INFO_PORT_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.AdminToolMessages.*;
@@ -199,6 +201,9 @@
  /** the 'change-number' argument for task reset-changenumber. */
  IntegerArgument resetChangeNumber;
  /** The "adminUid" non hidden argument */
  StringArgument adminUidArg;
  /** The text of the enable replication subcommand. */
  static final String ENABLE_REPLICATION_SUBCMD_NAME = "enable";
  /** The text of the disable replication subcommand. */
@@ -417,35 +422,33 @@
    int index = 0;
    baseDNsArg = new StringArgument("baseDNs", OPTION_SHORT_BASEDN,
        OPTION_LONG_BASEDN, false, true, true, INFO_BASEDN_PLACEHOLDER.get(),
        null,
        null, INFO_DESCRIPTION_REPLICATION_BASEDNS.get());
    baseDNsArg.setPropertyName(OPTION_LONG_BASEDN);
    baseDNsArg =
            StringArgument.builder(OPTION_LONG_BASEDN)
                    .shortIdentifier(OPTION_SHORT_BASEDN)
                    .description(INFO_DESCRIPTION_REPLICATION_BASEDNS.get())
                    .multiValued()
                    .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                    .buildArgument();
    defaultArgs.add(index++, baseDNsArg);
    secureArgsList.adminUidArg = new StringArgument("adminUID", 'I',
        OPTION_LONG_ADMIN_UID, false, false, true,
        INFO_ADMINUID_PLACEHOLDER.get(),
        Constants.GLOBAL_ADMIN_UID, null,
        INFO_DESCRIPTION_REPLICATION_ADMIN_UID.get(
            ENABLE_REPLICATION_SUBCMD_NAME));
    getAdminUidArg().setPropertyName(OPTION_LONG_ADMIN_UID);
    getAdminUidArg().setHidden(false);
    defaultArgs.add(index++, getAdminUidArg());
    adminUidArg = CommonArguments.getAdminUid(
            INFO_DESCRIPTION_REPLICATION_ADMIN_UID.get(ENABLE_REPLICATION_SUBCMD_NAME));
    defaultArgs.add(index++, adminUidArg);
    secureArgsList.bindPasswordArg = new StringArgument(
        OPTION_LONG_ADMIN_PWD.toLowerCase(),
        OPTION_SHORT_BINDPWD, OPTION_LONG_ADMIN_PWD, false, false, true,
        INFO_BINDPWD_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORD.get());
    secureArgsList.bindPasswordArg =
            StringArgument.builder(OPTION_LONG_ADMIN_PWD)
                    .shortIdentifier(OPTION_SHORT_BINDPWD)
                    .description(INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORD.get())
                    .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                    .buildArgument();
    defaultArgs.add(index++, secureArgsList.bindPasswordArg);
    secureArgsList.bindPasswordFileArg = new FileBasedArgument(
        OPTION_LONG_ADMIN_PWD_FILE.toLowerCase(),
        OPTION_SHORT_BINDPWD_FILE, OPTION_LONG_ADMIN_PWD_FILE, false, false,
        INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORDFILE.get());
    secureArgsList.bindPasswordFileArg =
            FileBasedArgument.builder(OPTION_LONG_ADMIN_PWD_FILE)
                    .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                    .description(INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORDFILE.get())
                    .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                    .buildArgument();
    defaultArgs.add(index++, secureArgsList.bindPasswordFileArg);
    defaultArgs.remove(verboseArg);
@@ -476,12 +479,6 @@
    configFileArg = CommonArguments.getConfigFile();
    defaultArgs.add(index++, configFileArg);
    for (int i=0; i<index; i++)
    {
      Argument arg = defaultArgs.get(i);
      arg.setPropertyName(arg.getLongIdentifier());
    }
    this.propertiesFileArgument = CommonArguments.getPropertiesFile();
    defaultArgs.add(this.propertiesFileArgument);
    setFilePropertiesArgument(this.propertiesFileArgument);
@@ -534,136 +531,145 @@
    createServerArgs1();
    createServerArgs2();
    skipPortCheckArg = new BooleanArgument(
        "skipportcheck", 'S', "skipPortCheck",
        INFO_DESCRIPTION_ENABLE_REPLICATION_SKIPPORT.get());
    noSchemaReplicationArg = new BooleanArgument(
        "noschemareplication", null, "noSchemaReplication",
        INFO_DESCRIPTION_ENABLE_REPLICATION_NO_SCHEMA_REPLICATION.get());
    useSecondServerAsSchemaSourceArg = new BooleanArgument(
        "usesecondserverasschemasource", null, "useSecondServerAsSchemaSource",
        INFO_DESCRIPTION_ENABLE_REPLICATION_USE_SECOND_AS_SCHEMA_SOURCE.get(
            "--"+noSchemaReplicationArg.getLongIdentifier()));
    skipPortCheckArg =
            BooleanArgument.builder("skipPortCheck")
                    .shortIdentifier('S')
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_SKIPPORT.get())
                    .buildArgument();
    noSchemaReplicationArg =
            BooleanArgument.builder("noSchemaReplication")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_NO_SCHEMA_REPLICATION.get())
                    .buildArgument();
    useSecondServerAsSchemaSourceArg =
            BooleanArgument.builder("useSecondServerAsSchemaSource")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_USE_SECOND_AS_SCHEMA_SOURCE.get(
                            "--" + noSchemaReplicationArg.getLongIdentifier()))
                    .buildArgument();
    enableReplicationSubCmd = new SubCommand(this,
        ENABLE_REPLICATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_ENABLE_REPLICATION.get());
    Argument[] argsToAdd = {
    addArgumentsToSubCommand(enableReplicationSubCmd,
          server1.hostNameArg, server1.portArg, server1.bindDnArg, server1.bindPasswordArg,
          server1.bindPasswordFileArg, server1.replicationPortArg, server1.secureReplicationArg,
          server1.noReplicationServerArg, server1.onlyReplicationServerArg,
          server2.hostNameArg, server2.portArg, server2.bindDnArg, server2.bindPasswordArg,
          server2.bindPasswordFileArg, server2.replicationPortArg, server2.secureReplicationArg,
          server2.noReplicationServerArg, server2.onlyReplicationServerArg,
          skipPortCheckArg, noSchemaReplicationArg, useSecondServerAsSchemaSourceArg
    };
    for (Argument arg : argsToAdd)
    {
      arg.setPropertyName(arg.getLongIdentifier());
      enableReplicationSubCmd.addArgument(arg);
    }
            skipPortCheckArg, noSchemaReplicationArg, useSecondServerAsSchemaSourceArg);
  }
  private void createServerArgs1() throws ArgumentException
  {
    ServerArgs server = server1;
    server.hostNameArg = new StringArgument("host1", OPTION_SHORT_HOST,
        "host1", false, false, true, INFO_HOST_PLACEHOLDER.get(),
        getDefaultHostValue(),
        null, INFO_DESCRIPTION_ENABLE_REPLICATION_HOST1.get());
    server.portArg = new IntegerArgument("port1", OPTION_SHORT_PORT, "port1",
        false, false, true, INFO_PORT_PLACEHOLDER.get(),
        defaultAdminPort, null,
        true, 1,
        true, 65336,
        INFO_DESCRIPTION_ENABLE_REPLICATION_SERVER_PORT1.get());
    server.bindDnArg = new StringArgument("bindDN1", OPTION_SHORT_BINDDN,
        "bindDN1", false, false, true, INFO_BINDDN_PLACEHOLDER.get(),
        "cn=Directory Manager", null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN1.get());
    server.bindPasswordArg = new StringArgument("bindPassword1",
        null, "bindPassword1", false, false, true,
        INFO_BINDPWD_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD1.get());
    server.bindPasswordFileArg = new FileBasedArgument("bindPasswordFile1",
        null, "bindPasswordFile1", false, false,
        INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE1.get());
    server.replicationPortArg = new IntegerArgument("replicationPort1", 'r',
        "replicationPort1", false, false, true, INFO_PORT_PLACEHOLDER.get(),
        8989, null,
        true, 1,
        true, 65336,
        INFO_DESCRIPTION_ENABLE_REPLICATION_PORT1.get());
    server.secureReplicationArg = new BooleanArgument("secureReplication1", null,
        "secureReplication1",
        INFO_DESCRIPTION_ENABLE_SECURE_REPLICATION1.get());
    server.noReplicationServerArg = new BooleanArgument(
        "noreplicationserver1", null, "noReplicationServer1",
        INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER1.get());
    server.onlyReplicationServerArg = new BooleanArgument(
        "onlyreplicationserver1", null, "onlyReplicationServer1",
        INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER1.get());
    server.hostNameArg =
            StringArgument.builder("host1")
                    .shortIdentifier(OPTION_SHORT_HOST)
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_HOST1.get())
                    .defaultValue(secureArgsList.getDefaultHostName())
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    server.portArg =
            IntegerArgument.builder("port1")
                    .shortIdentifier(OPTION_SHORT_PORT)
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_SERVER_PORT1.get())
                    .range(1, 65336)
                    .defaultValue(defaultAdminPort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    server.bindDnArg =
            StringArgument.builder("bindDN1")
                    .shortIdentifier(OPTION_SHORT_BINDDN)
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN1.get())
                    .defaultValue("cn=Directory Manager")
                    .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                    .buildArgument();
    server.bindPasswordArg =
            StringArgument.builder("bindPassword1")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD1.get())
                    .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                    .buildArgument();
    server.bindPasswordFileArg =
            FileBasedArgument.builder("bindPasswordFile1")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE1.get())
                    .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                    .buildArgument();
    server.replicationPortArg =
            IntegerArgument.builder("replicationPort1")
                    .shortIdentifier('r')
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_PORT1.get())
                    .range(1, 65336)
                    .defaultValue(8989)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    server.secureReplicationArg =
            BooleanArgument.builder("secureReplication1")
                    .description(INFO_DESCRIPTION_ENABLE_SECURE_REPLICATION1.get())
                    .buildArgument();
    server.noReplicationServerArg =
            BooleanArgument.builder("noReplicationServer1")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER1.get())
                    .buildArgument();
    server.onlyReplicationServerArg =
            BooleanArgument.builder("onlyReplicationServer1")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER1.get())
                    .buildArgument();
  }
  private void createServerArgs2() throws ArgumentException
  {
    ServerArgs server = server2;
    server.hostNameArg = new StringArgument("host2", 'O',
        "host2", false, false, true, INFO_HOST_PLACEHOLDER.get(),
        getDefaultHostValue(),
        null, INFO_DESCRIPTION_ENABLE_REPLICATION_HOST2.get());
    server.portArg = new IntegerArgument("port2", null, "port2",
        false, false, true, INFO_PORT_PLACEHOLDER.get(), defaultAdminPort, null,
        true, 1,
        true, 65336,
        INFO_DESCRIPTION_ENABLE_REPLICATION_SERVER_PORT2.get());
    server.bindDnArg = new StringArgument("bindDN2", null,
        "bindDN2", false, false, true, INFO_BINDDN_PLACEHOLDER.get(),
        "cn=Directory Manager", null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN2.get());
    server.bindPasswordArg = new StringArgument("bindPassword2",
        null, "bindPassword2", false, false, true,
        INFO_BINDPWD_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD2.get());
    server.bindPasswordFileArg = new FileBasedArgument("bindPasswordFile2",
        'F', "bindPasswordFile2", false, false,
        INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE2.get());
    server.replicationPortArg = new IntegerArgument("replicationPort2", 'R',
        "replicationPort2", false, false, true, INFO_PORT_PLACEHOLDER.get(),
        8989, null,
        true, 1,
        true, 65336,
        INFO_DESCRIPTION_ENABLE_REPLICATION_PORT2.get());
    server.secureReplicationArg = new BooleanArgument("secureReplication2", null,
        "secureReplication2",
        INFO_DESCRIPTION_ENABLE_SECURE_REPLICATION2.get());
    server.noReplicationServerArg = new BooleanArgument(
        "noreplicationserver2", null, "noReplicationServer2",
        INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER2.get());
    server.onlyReplicationServerArg = new BooleanArgument(
        "onlyreplicationserver2", null, "onlyReplicationServer2",
        INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER2.get());
    server.hostNameArg =
            StringArgument.builder("host2")
                    .shortIdentifier('O')
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_HOST2.get())
                    .defaultValue(secureArgsList.getDefaultHostName())
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    server.portArg =
            IntegerArgument.builder("port2")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_SERVER_PORT2.get())
                    .range(1, 65336)
                    .defaultValue(defaultAdminPort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    server.bindDnArg =
            StringArgument.builder("bindDN2")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN2.get())
                    .defaultValue("cn=Directory Manager")
                    .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                    .buildArgument();
    server.bindPasswordArg =
            StringArgument.builder("bindPassword2")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD2.get())
                    .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                    .buildArgument();
    server.bindPasswordFileArg =
            FileBasedArgument.builder("bindPasswordFile2")
                    .shortIdentifier('F')
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE2.get())
                    .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                    .buildArgument();
    server.replicationPortArg =
            IntegerArgument.builder("replicationPort2")
                    .shortIdentifier('R')
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_PORT2.get())
                    .range(1, 65336)
                    .defaultValue(8989)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    server.secureReplicationArg =
            BooleanArgument.builder("secureReplication2")
                    .description(INFO_DESCRIPTION_ENABLE_SECURE_REPLICATION2.get())
                    .buildArgument();
    server.noReplicationServerArg =
            BooleanArgument.builder("noReplicationServer2")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER2.get())
                    .buildArgument();
    server.onlyReplicationServerArg =
            BooleanArgument.builder("onlyReplicationServer2")
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER2.get())
                    .buildArgument();
  }
  /**
@@ -678,18 +684,22 @@
    disableReplicationSubCmd = new SubCommand(this,
        DISABLE_REPLICATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_DISABLE_REPLICATION.get());
    secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
    secureArgsList.bindDnArg = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
        OPTION_LONG_BINDDN, false, false, true, INFO_BINDDN_PLACEHOLDER.get(),
        "cn=Directory Manager", OPTION_LONG_BINDDN,
        INFO_DESCRIPTION_DISABLE_REPLICATION_BINDDN.get());
    disableReplicationServerArg = new BooleanArgument(
        "disablereplicationserver", null, "disableReplicationServer",
        INFO_DESCRIPTION_DISABLE_REPLICATION_SERVER.get());
    disableAllArg = new BooleanArgument(
        "disableall", 'a', "disableAll",
        INFO_DESCRIPTION_DISABLE_ALL.get());
    secureArgsList.bindDnArg =
            StringArgument.builder(OPTION_LONG_BINDDN)
                    .shortIdentifier(OPTION_SHORT_BINDDN)
                    .description(INFO_DESCRIPTION_DISABLE_REPLICATION_BINDDN.get())
                    .defaultValue("cn=Directory Manager")
                    .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                    .buildArgument();
    disableReplicationServerArg =
            BooleanArgument.builder("disableReplicationServer")
                    .shortIdentifier('a')
                    .description(INFO_DESCRIPTION_DISABLE_REPLICATION_SERVER.get())
                    .buildArgument();
    disableAllArg =
            BooleanArgument.builder("disableAll")
                    .description(INFO_DESCRIPTION_DISABLE_ALL.get())
                    .buildArgument();
    Argument[] argsToAdd = { secureArgsList.hostNameArg,
        secureArgsList.portArg, secureArgsList.bindDnArg,
@@ -708,39 +718,42 @@
  {
    initializeReplicationSubCmd = new SubCommand(this, INITIALIZE_REPLICATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_INITIALIZE_REPLICATION.get(INITIALIZE_ALL_REPLICATION_SUBCMD_NAME));
    Argument[] argsToAdd = {
        hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg
    };
    setSubCommandArguments(initializeReplicationSubCmd, argsToAdd);
    addArgumentsToSubCommand(initializeReplicationSubCmd,
        hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg);
  }
  private void createRelatedServersOptions() throws ArgumentException
  {
    hostNameSourceArg = new StringArgument("hostSource", OPTION_SHORT_HOST,
        "hostSource", false, false, true, INFO_HOST_PLACEHOLDER.get(),
        getDefaultHostValue(), null,
        INFO_DESCRIPTION_INITIALIZE_REPLICATION_HOST_SOURCE.get());
    portSourceArg = new IntegerArgument("portSource", OPTION_SHORT_PORT,
        "portSource", false, false, true, INFO_PORT_PLACEHOLDER.get(),
        defaultAdminPort, null,
        true, 1,
        true, 65336,
        INFO_DESCRIPTION_INITIALIZE_REPLICATION_SERVER_PORT_SOURCE.get());
    hostNameDestinationArg = new StringArgument("hostDestination", 'O',
        "hostDestination", false, false, true, INFO_HOST_PLACEHOLDER.get(),
        getDefaultHostValue(), null,
        INFO_DESCRIPTION_INITIALIZE_REPLICATION_HOST_DESTINATION.get());
    portDestinationArg = new IntegerArgument("portDestination", null,
        "portDestination", false, false, true, INFO_PORT_PLACEHOLDER.get(),
        defaultAdminPort,
        null,
        true, 1,
        true, 65336,
        INFO_DESCRIPTION_INITIALIZE_REPLICATION_SERVER_PORT_DESTINATION.get());
    final String defaultHostName = secureArgsList.getDefaultHostName();
    hostNameSourceArg =
            StringArgument.builder("hostSource")
                    .shortIdentifier(OPTION_SHORT_HOST)
                    .description(INFO_DESCRIPTION_INITIALIZE_REPLICATION_HOST_SOURCE.get())
                    .defaultValue(defaultHostName)
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    portSourceArg =
            IntegerArgument.builder("portSource")
                    .shortIdentifier(OPTION_SHORT_PORT)
                    .description(INFO_DESCRIPTION_INITIALIZE_REPLICATION_SERVER_PORT_SOURCE.get())
                    .range(1, 65336)
                    .defaultValue(defaultAdminPort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    hostNameDestinationArg =
            StringArgument.builder("hostDestination")
                    .shortIdentifier('O')
                    .description(INFO_DESCRIPTION_INITIALIZE_REPLICATION_HOST_DESTINATION.get())
                    .defaultValue(defaultHostName)
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    portDestinationArg =
            IntegerArgument.builder("portDestination")
                    .description(INFO_DESCRIPTION_INITIALIZE_REPLICATION_SERVER_PORT_DESTINATION.get())
                    .range(1, 65336)
                    .defaultValue(defaultAdminPort)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
  }
  /**
@@ -756,7 +769,6 @@
        INITIALIZE_ALL_REPLICATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_INITIALIZE_ALL_REPLICATION.get(
            INITIALIZE_REPLICATION_SUBCMD_NAME));
    secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
    Argument[] argsToAdd = { secureArgsList.hostNameArg,
        secureArgsList.portArg };
    for (Argument arg : argsToAdd)
@@ -779,13 +791,12 @@
        PRE_EXTERNAL_INITIALIZATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_PRE_EXTERNAL_INITIALIZATION.get(
            POST_EXTERNAL_INITIALIZATION_SUBCMD_NAME));
    secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
    BooleanArgument externalInitializationLocalOnlyArg = new BooleanArgument(
        "local-only",
        'l',
        "local-only",
        LocalizableMessage.EMPTY);
    externalInitializationLocalOnlyArg.setHidden(true);
    BooleanArgument externalInitializationLocalOnlyArg =
            BooleanArgument.builder("local-only")
                    .shortIdentifier('l')
                    .description(LocalizableMessage.EMPTY)
                    .hidden()
                    .buildArgument();
    Argument[] argsToAdd = { secureArgsList.hostNameArg,
        secureArgsList.portArg,
@@ -811,7 +822,6 @@
        POST_EXTERNAL_INITIALIZATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_POST_EXTERNAL_INITIALIZATION.get(
            PRE_EXTERNAL_INITIALIZATION_SUBCMD_NAME));
    secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
    Argument[] argsToAdd = { secureArgsList.hostNameArg,
        secureArgsList.portArg };
    for (Argument arg : argsToAdd)
@@ -824,27 +834,17 @@
  {
    resetChangelogNumber = new SubCommand(this, RESET_CHANGE_NUMBER_SUBCMD_NAME,
        INFO_DESCRIPTION_RESET_CHANGE_NUMBER.get());
    resetChangeNumber = newChangeNumberArgument();
    Argument[] argsToAdd = {
        hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg, resetChangeNumber
    };
    setSubCommandArguments(resetChangelogNumber, argsToAdd);
  }
  private void setSubCommandArguments(SubCommand subCommand, Argument[] argsToAdd) throws ArgumentException
  {
    for (Argument arg : argsToAdd)
    {
      arg.setPropertyName(arg.getLongIdentifier());
      subCommand.addArgument(arg);
    }
    addArgumentsToSubCommand(resetChangelogNumber,
            hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg, resetChangeNumber);
  }
  IntegerArgument newChangeNumberArgument() throws ArgumentException
  {
    return new IntegerArgument("change-number", null, "change-number",
        false, true, INFO_CHANGE_NUMBER_PLACEHOLDER.get(), INFO_DESCRIPTION_START_CHANGE_NUMBER.get());
    return IntegerArgument.builder("change-number")
            .description(INFO_DESCRIPTION_START_CHANGE_NUMBER.get())
            .valuePlaceholder(INFO_CHANGE_NUMBER_PLACEHOLDER.get())
            .buildArgument();
  }
  /**
@@ -858,19 +858,13 @@
    statusReplicationSubCmd = new SubCommand(this,
        STATUS_REPLICATION_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_STATUS_REPLICATION.get());
    scriptFriendlyArg = new BooleanArgument(
        "script-friendly",
        's',
        "script-friendly",
        INFO_DESCRIPTION_SCRIPT_FRIENDLY.get());
    scriptFriendlyArg.setPropertyName(scriptFriendlyArg.getLongIdentifier());
    secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
    Argument[] argsToAdd = { secureArgsList.hostNameArg,
        secureArgsList.portArg, scriptFriendlyArg };
    for (Argument arg : argsToAdd)
    {
      statusReplicationSubCmd.addArgument(arg);
    }
    scriptFriendlyArg =
            BooleanArgument.builder("script-friendly")
                    .shortIdentifier('s')
                    .description(INFO_DESCRIPTION_SCRIPT_FRIENDLY.get())
                    .buildArgument();
    addArgumentsToSubCommand(
            statusReplicationSubCmd, secureArgsList.hostNameArg, secureArgsList.portArg, scriptFriendlyArg);
  }
  /**
@@ -879,41 +873,32 @@
   * initializeGlobalArguments has already been called and that hostNameArg and
   * portArg have been created.
   */
  private void createPurgeHistoricalSubCommand()
  throws ArgumentException
  private void createPurgeHistoricalSubCommand() throws ArgumentException
  {
    maximumDurationArg = new IntegerArgument(
        "maximumDuration",
        null, // shortId
        "maximumDuration",
        true, // isRequired
        false, // isMultivalued
        true,  // needsValue
        INFO_MAXIMUM_DURATION_PLACEHOLDER.get(),
        PurgeConflictsHistoricalTask.DEFAULT_MAX_DURATION,
        null,
        true, 0,
        false, Integer.MAX_VALUE,
        INFO_DESCRIPTION_PURGE_HISTORICAL_MAXIMUM_DURATION.get());
    maximumDurationArg =
            IntegerArgument.builder("maximumDuration")
                    .description(INFO_DESCRIPTION_PURGE_HISTORICAL_MAXIMUM_DURATION.get())
                    .required()
                    .lowerBound(0)
                    .defaultValue(PurgeConflictsHistoricalTask.DEFAULT_MAX_DURATION)
                    .valuePlaceholder(INFO_MAXIMUM_DURATION_PLACEHOLDER.get())
                    .buildArgument();
    purgeHistoricalSubCmd = new SubCommand(
        this,
        PURGE_HISTORICAL_SUBCMD_NAME,
        INFO_DESCRIPTION_SUBCMD_PURGE_HISTORICAL.get());
    Argument[] argsToAdd = {
        secureArgsList.hostNameArg,
        secureArgsList.portArg,
        maximumDurationArg};
    for (Argument arg : argsToAdd)
    {
      arg.setPropertyName(arg.getLongIdentifier());
      purgeHistoricalSubCmd.addArgument(arg);
    addArgumentsToSubCommand(purgeHistoricalSubCmd,
            secureArgsList.hostNameArg, secureArgsList.portArg, maximumDurationArg);
    addArgumentsToSubCommand(purgeHistoricalSubCmd, taskArgs.getArguments());
    }
    for (Argument arg : taskArgs.getArguments())
  private void addArgumentsToSubCommand(final SubCommand subCommand, final Argument... args) throws ArgumentException
    {
      purgeHistoricalSubCmd.addArgument(arg);
    for (final Argument arg : args)
    {
      subCommand.addArgument(arg);
    }
  }
@@ -989,7 +974,7 @@
   */
  StringArgument getAdminUidArg()
  {
    return secureArgsList.adminUidArg;
    return adminUidArg;
  }
  /**
@@ -1658,30 +1643,6 @@
  }
  /**
   * Returns the default value to be used for the host.
   * @return the default value to be used for the host.
   */
  private String getDefaultHostValue()
  {
    if (defaultLocalHostValue == null)
    {
      try
      {
        defaultLocalHostValue =
          java.net.InetAddress.getLocalHost().getHostName();
      }
      catch (Throwable t)
      {
      }
      if (defaultLocalHostValue == null)
      {
        defaultLocalHostValue = "localhost";
      }
    }
    return defaultLocalHostValue;
  }
  /**
   * Returns the SecureConnectionCliArgs object containing the arguments
   * of this parser.
   * @return the SecureConnectionCliArgs object containing the arguments
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -68,13 +68,13 @@
import javax.net.ssl.SSLHandshakeException;
import javax.net.ssl.TrustManager;
import com.forgerock.opendj.cli.CommonArguments;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg0;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.admin.ads.*;
import org.opends.admin.ads.ADSContext.ADSPropertySyntax;
import org.opends.admin.ads.ADSContext.AdministratorProperty;
@@ -396,14 +396,7 @@
      return CANNOT_INITIALIZE_ARGS;
    }
    try
    {
      argParser.getSecureArgsList().initArgumentsWithConfiguration();
    }
    catch (ConfigException ce)
    {
      // Ignore.
    }
    argParser.getSecureArgsList().initArgumentsWithConfiguration(argParser);
    // Parse the command-line arguments provided to this program.
    try
@@ -472,10 +465,11 @@
    {
      try
      {
        userProvidedAdminPwdFile = new FileBasedArgument(
            "adminPasswordFile", OPTION_SHORT_BINDPWD_FILE, "adminPasswordFile", false, false,
            INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
            INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORDFILE.get());
        userProvidedAdminPwdFile = FileBasedArgument.builder("adminPasswordFile")
                .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                .description(INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORDFILE.get())
                .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                .buildArgument();
        userProvidedAdminPwdFile.getNameToValueMap().putAll(
            argParser.getSecureArgsList().bindPasswordFileArg.getNameToValueMap());
      }
@@ -8509,17 +8503,13 @@
      }
    }
    IntegerArgument maximumDurationArg = new IntegerArgument(
        argParser.maximumDurationArg.getName(),
        argParser.maximumDurationArg.getShortIdentifier(),
        argParser.maximumDurationArg.getLongIdentifier(),
        argParser.maximumDurationArg.isRequired(),
        argParser.maximumDurationArg.isMultiValued(),
        argParser.maximumDurationArg.needsValue(),
        argParser.maximumDurationArg.getValuePlaceholder(),
        PurgeConflictsHistoricalTask.DEFAULT_MAX_DURATION,
        argParser.maximumDurationArg.getPropertyName(),
        argParser.maximumDurationArg.getDescription());
    IntegerArgument maximumDurationArg = IntegerArgument.builder(argParser.maximumDurationArg.getLongIdentifier())
            .shortIdentifier(argParser.maximumDurationArg.getShortIdentifier())
            .description(argParser.maximumDurationArg.getDescription())
            .required()
            .defaultValue(PurgeConflictsHistoricalTask.DEFAULT_MAX_DURATION)
            .valuePlaceholder(argParser.maximumDurationArg.getValuePlaceholder())
            .buildArgument();
    maximumDurationArg.addValue(String.valueOf(uData.getMaximumDuration()));
    commandBuilder.addArgument(maximumDurationArg);
  }
@@ -8536,11 +8526,13 @@
  throws ArgumentException
  {
    List<String> baseDNs = uData.getBaseDNs();
    StringArgument baseDNsArg = new StringArgument("baseDNs",
        OPTION_SHORT_BASEDN,
        OPTION_LONG_BASEDN, false, true, true, INFO_BASEDN_PLACEHOLDER.get(),
        null,
        null, INFO_DESCRIPTION_REPLICATION_BASEDNS.get());
    StringArgument baseDNsArg =
            StringArgument.builder(OPTION_LONG_BASEDN)
                    .shortIdentifier(OPTION_SHORT_BASEDN)
                    .description(INFO_DESCRIPTION_REPLICATION_BASEDNS.get())
                    .multiValued()
                    .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
                    .buildArgument();
    for (String baseDN : baseDNs)
    {
      baseDNsArg.addValue(baseDN);
@@ -8593,9 +8585,11 @@
    if (argParser.isVerbose())
    {
      commandBuilder.addArgument(new BooleanArgument("verbose",
          OPTION_SHORT_VERBOSE,
          OPTION_LONG_VERBOSE, INFO_DESCRIPTION_VERBOSE.get()));
      commandBuilder.addArgument(
              BooleanArgument.builder(OPTION_LONG_VERBOSE)
                      .shortIdentifier(OPTION_SHORT_VERBOSE)
                      .description(INFO_DESCRIPTION_VERBOSE.get())
                      .buildArgument());
    }
    if (argParser.isScriptFriendly())
@@ -8845,10 +8839,7 @@
    {
      if (uData.getAdminUid() != null)
      {
        StringArgument adminUID = new StringArgument(OPTION_LONG_ADMIN_UID, 'I',
            OPTION_LONG_ADMIN_UID, false, false, true,
            INFO_ADMINUID_PLACEHOLDER.get(),
            Constants.GLOBAL_ADMIN_UID, null,
        final StringArgument adminUID = CommonArguments.getAdminUid(
            INFO_DESCRIPTION_REPLICATION_ADMIN_UID.get(ENABLE_REPLICATION_SUBCMD_NAME));
        adminUID.addValue(uData.getAdminUid());
        commandBuilder.addArgument(adminUID);
@@ -8919,45 +8910,56 @@
    if (!uData.replicateSchema())
    {
      commandBuilder.addArgument(new BooleanArgument(
          "noschemareplication", null, "noSchemaReplication",
          INFO_DESCRIPTION_ENABLE_REPLICATION_NO_SCHEMA_REPLICATION.get()));
      commandBuilder.addArgument(
              BooleanArgument.builder("noSchemaReplication")
                      .description(INFO_DESCRIPTION_ENABLE_REPLICATION_NO_SCHEMA_REPLICATION.get())
                      .buildArgument());
    }
    if (argParser.skipReplicationPortCheck())
    {
      commandBuilder.addArgument(new BooleanArgument(
          "skipportcheck", 'S', "skipPortCheck",
          INFO_DESCRIPTION_ENABLE_REPLICATION_SKIPPORT.get()));
      commandBuilder.addArgument(
              BooleanArgument.builder("skipPortCheck")
                      .shortIdentifier('S')
                      .description(INFO_DESCRIPTION_ENABLE_REPLICATION_SKIPPORT.get())
                      .buildArgument());
    }
    if (argParser.useSecondServerAsSchemaSource())
    {
      commandBuilder.addArgument(new BooleanArgument(
          "usesecondserverasschemasource", null,
          "useSecondServerAsSchemaSource",
          INFO_DESCRIPTION_ENABLE_REPLICATION_USE_SECOND_AS_SCHEMA_SOURCE.get(
              "--" + argParser.noSchemaReplicationArg.getLongIdentifier())));
      commandBuilder.addArgument(
              BooleanArgument.builder("useSecondServerAsSchemaSource")
                      .description(INFO_DESCRIPTION_ENABLE_REPLICATION_USE_SECOND_AS_SCHEMA_SOURCE.get(
                              "--" + argParser.noSchemaReplicationArg.getLongIdentifier()))
                      .buildArgument());
    }
  }
  private IntegerArgument getReplicationPortArg(
      String name, EnableReplicationServerData server, int defaultValue, Arg0 description) throws ArgumentException
  {
    IntegerArgument replicationPort = new IntegerArgument(
        name, 'r', name, false, false, true,
        INFO_PORT_PLACEHOLDER.get(), defaultValue, null, description.get());
    int value = server.getReplicationPort();
    replicationPort.addValue(String.valueOf(value));
    IntegerArgument replicationPort =
            IntegerArgument.builder(name)
                    .shortIdentifier('r')
                    .description(description.get())
                    .defaultValue(defaultValue)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    replicationPort.addValue(String.valueOf(server.getReplicationPort()));
    return replicationPort;
  }
  private BooleanArgument newBooleanArgument(String name, Arg0 msg) throws ArgumentException
  {
    return new BooleanArgument(name, null, name, msg.get());
    return BooleanArgument.builder(name)
            .description(msg.get())
            .buildArgument();
  }
  private BooleanArgument newBooleanArgument(BooleanArgument arg, Arg0 msg) throws ArgumentException
  {
    return new BooleanArgument(arg.getName(), arg.getShortIdentifier(), arg.getLongIdentifier(), msg.get());
    return BooleanArgument.builder(arg.getLongIdentifier())
            .shortIdentifier(arg.getShortIdentifier())
            .description(msg.get())
            .buildArgument();
  }
  private StringArgument getBindPassword1Arg(Argument arg) throws ArgumentException
@@ -8972,34 +8974,40 @@
  private StringArgument getBindPasswordArg(String name, Argument arg, Arg0 bindPwdMsg) throws ArgumentException
  {
    StringArgument bindPasswordArg = new StringArgument(
        name, null, name, false, false, true,
        INFO_BINDPWD_PLACEHOLDER.get(), null, null, bindPwdMsg.get());
    StringArgument bindPasswordArg =
            StringArgument.builder(name)
                    .description(bindPwdMsg.get())
                    .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
                    .buildArgument();
    bindPasswordArg.addValue(arg.getValue());
    return bindPasswordArg;
  }
  private FileBasedArgument getBindPasswordFile1Arg() throws ArgumentException
  {
    return new FileBasedArgument(
        "bindPasswordFile1", null, "bindPasswordFile1", false, false,
        INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE1.get());
    return FileBasedArgument.builder("bindPasswordFile1")
            .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE1.get())
            .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
            .buildArgument();
  }
  private FileBasedArgument getBindPasswordFile2Arg() throws ArgumentException
  {
    return new FileBasedArgument(
        "bindPasswordFile2", null, "bindPasswordFile2", false, false,
        INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE2.get());
    return FileBasedArgument.builder("bindPasswordFile2")
            .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORDFILE2.get())
            .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
            .buildArgument();
  }
  private StringArgument getBindDN1Arg(EnableReplicationUserData uData) throws ArgumentException
  {
    StringArgument bindDN = new StringArgument("bindDN1", OPTION_SHORT_BINDDN, "bindDN1", false, false, true,
        INFO_BINDDN_PLACEHOLDER.get(), "cn=Directory Manager", null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN1.get());
    StringArgument bindDN =
            StringArgument.builder("bindDN1")
                    .shortIdentifier(OPTION_SHORT_BINDDN)
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN1.get())
                    .defaultValue("cn=Directory Manager")
                    .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                    .buildArgument();
    bindDN.addValue(uData.getServer1().getBindDn());
    return bindDN;
  }
@@ -9007,9 +9015,13 @@
  private StringArgument getBindDN2Arg(EnableReplicationUserData uData, Character shortIdentifier)
      throws ArgumentException
  {
    StringArgument bindDN = new StringArgument("bindDN2", shortIdentifier, "bindDN2", false, false, true,
        INFO_BINDDN_PLACEHOLDER.get(), "cn=Directory Manager", null,
        INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN2.get());
    StringArgument bindDN =
            StringArgument.builder("bindDN2")
                    .shortIdentifier(shortIdentifier)
                    .description(INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN2.get())
                    .defaultValue("cn=Directory Manager")
                    .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
                    .buildArgument();
    bindDN.addValue(uData.getServer2().getBindDn());
    return bindDN;
  }
@@ -9078,18 +9090,21 @@
  private StringArgument getAdminPasswordArg() throws ArgumentException
  {
    return new StringArgument("adminPassword",
        OPTION_SHORT_BINDPWD, "adminPassword", false, false, true,
        INFO_BINDPWD_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORD.get());
    return StringArgument.builder("adminPassword")
            .shortIdentifier(OPTION_SHORT_BINDPWD)
            .description(INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORD.get())
            .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
            .buildArgument();
  }
  private FileBasedArgument getAdminPasswordFileArg(Argument arg) throws ArgumentException
  {
    FileBasedArgument fbArg = new FileBasedArgument(
        "adminPasswordFile", OPTION_SHORT_BINDPWD_FILE, "adminPasswordFile", false, false,
        INFO_BINDPWD_FILE_PLACEHOLDER.get(), null, null,
        INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORDFILE.get());
    FileBasedArgument fbArg =
            FileBasedArgument.builder("adminPasswordFile")
                    .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
                    .description(INFO_DESCRIPTION_REPLICATION_ADMIN_BINDPASSWORDFILE.get())
                    .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
                    .buildArgument();
    fbArg.getNameToValueMap().putAll(((FileBasedArgument) arg).getNameToValueMap());
    return fbArg;
  }
@@ -9097,8 +9112,13 @@
  private IntegerArgument getPortArg(String longIdentifier, Character shortIdentifier, int value, Arg0 arg)
      throws ArgumentException
  {
    IntegerArgument iArg = new IntegerArgument(longIdentifier, shortIdentifier, longIdentifier, false, false, true,
        INFO_PORT_PLACEHOLDER.get(), 4444, null, arg.get());
    IntegerArgument iArg =
            IntegerArgument.builder(longIdentifier)
                    .shortIdentifier(shortIdentifier)
                    .description(arg.get())
                    .defaultValue(4444)
                    .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
                    .buildArgument();
    iArg.addValue(String.valueOf(value));
    return iArg;
  }
@@ -9106,8 +9126,12 @@
  private StringArgument getHostArg(String longIdentifier, char shortIdentifier, String value,
      Arg0 description) throws ArgumentException
  {
    StringArgument sArg = new StringArgument(longIdentifier, shortIdentifier, longIdentifier, false, false, true,
        INFO_HOST_PLACEHOLDER.get(), null, null, description.get());
    StringArgument sArg =
            StringArgument.builder(longIdentifier)
                    .shortIdentifier(shortIdentifier)
                    .description(description.get())
                    .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                    .buildArgument();
    sArg.addValue(value);
    return sArg;
  }
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java
@@ -27,6 +27,8 @@
package org.opends.server.tools.makeldif;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.CliMessages.INFO_MAKELDIF_DESCRIPTION_SEED;
import static com.forgerock.opendj.cli.CliMessages.INFO_SEED_PLACEHOLDER;
import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
@@ -167,54 +169,50 @@
    try
    {
      configFile = new StringArgument("configfile", 'c', "configFile", true,
                                      false, true,
                                      INFO_CONFIGFILE_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_DESCRIPTION_CONFIG_FILE.get());
      configFile.setHidden(true);
      argParser.addArgument(configFile);
      configClass = new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS,
                                       OPTION_LONG_CONFIG_CLASS, false,
                                       false, true,
                                       INFO_CONFIGCLASS_PLACEHOLDER.get(), null,
                                       null,
                                       INFO_DESCRIPTION_CONFIG_CLASS.get());
      configClass.setHidden(true);
      argParser.addArgument(configClass);
      configFile =
              StringArgument.builder("configFile")
                      .shortIdentifier('c')
                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      configClass =
              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
                      .hidden()
                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      resourcePath =
           new StringArgument("resourcepath", 'r', "resourcePath", true, false,
                              true, INFO_PATH_PLACEHOLDER.get(), null, null,
                              INFO_MAKELDIF_DESCRIPTION_RESOURCE_PATH.get());
      resourcePath.setHidden(true);
      argParser.addArgument(resourcePath);
              StringArgument.builder("resourcePath")
                      .shortIdentifier('r')
                      .description(INFO_MAKELDIF_DESCRIPTION_RESOURCE_PATH.get())
                      .hidden()
                      .required()
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      templatePath =
              new StringArgument("templatefile", 't', "templateFile",
                                 true, false, true, INFO_FILE_PLACEHOLDER.get(),
                                 null, null,
                                 INFO_MAKELDIF_DESCRIPTION_TEMPLATE.get());
      argParser.addArgument(templatePath);
      ldifFile = new StringArgument("ldiffile", 'o', "ldifFile", true, false,
                                    true, INFO_FILE_PLACEHOLDER.get(), null,
                                    null, INFO_MAKELDIF_DESCRIPTION_LDIF.get());
      argParser.addArgument(ldifFile);
      randomSeed = new IntegerArgument("randomseed", OPTION_SHORT_RANDOM_SEED,
                                       OPTION_LONG_RANDOM_SEED, false,
                                       false, true, INFO_SEED_PLACEHOLDER.get(),
                                       0, null,
                                       INFO_MAKELDIF_DESCRIPTION_SEED.get());
      argParser.addArgument(randomSeed);
              StringArgument.builder("templateFile")
                      .shortIdentifier('t')
                      .description(INFO_MAKELDIF_DESCRIPTION_TEMPLATE.get())
                      .required()
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      ldifFile =
              StringArgument.builder("ldifFile")
                      .shortIdentifier('o')
                      .description(INFO_MAKELDIF_DESCRIPTION_LDIF.get())
                      .required()
                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      randomSeed =
              IntegerArgument.builder(OPTION_LONG_RANDOM_SEED)
                      .shortIdentifier(OPTION_SHORT_RANDOM_SEED)
                      .description(INFO_MAKELDIF_DESCRIPTION_SEED.get())
                      .defaultValue(0)
                      .valuePlaceholder(INFO_SEED_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCli.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 */
package org.opends.server.tools.status;
@@ -62,7 +62,6 @@
import org.forgerock.opendj.config.LDAPProfile;
import org.forgerock.opendj.config.client.ManagementContext;
import org.forgerock.opendj.config.client.ldap.LDAPManagementContext;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.AuthorizationException;
import org.forgerock.opendj.ldap.Connection;
import org.forgerock.opendj.ldap.LDAPConnectionFactory;
@@ -227,14 +226,7 @@
      return ReturnCode.CLIENT_SIDE_PARAM_ERROR.get();
    }
    try
    {
      argParser.getSecureArgsList().initArgumentsWithConfiguration();
    }
    catch (ConfigException ce)
    {
      // Ignore.
    }
    argParser.getSecureArgsList().initArgumentsWithConfiguration(argParser);
    // Validate user provided data
    try {
opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCliArgumentParser.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2008-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS.
 *      Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.opends.server.tools.status;
@@ -109,10 +109,13 @@
    initializeGlobalArguments(defaultArgs);
    refreshArg = new IntegerArgument("refresh", 'r',
        "refresh", false, true, INFO_PERIOD_PLACEHOLDER.get(),
        true, 1, false, Integer.MAX_VALUE,
        INFO_DESCRIPTION_REFRESH_PERIOD.get());
    refreshArg =
            IntegerArgument.builder("refresh")
                    .shortIdentifier('r')
                    .description(INFO_DESCRIPTION_REFRESH_PERIOD.get())
                    .lowerBound(1)
                    .valuePlaceholder(INFO_PERIOD_PLACEHOLDER.get())
                    .buildArgument();
    addGlobalArgument(refreshArg, ioArgGroup);
  }
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskScheduleUserData.java
@@ -276,14 +276,19 @@
    StringArgument arg;
    try
    {
      arg = new StringArgument(argToClone.getName(),
          argToClone.getShortIdentifier(), argToClone.getLongIdentifier(),
          argToClone.isRequired(), argToClone.isMultiValued(),
          argToClone.needsValue(),
          argToClone.getValuePlaceholder(),
          argToClone.getDefaultValue(),
          argToClone.getPropertyName(),
          argToClone.getDescription());
      StringArgument.Builder argBuilder =
              StringArgument.builder(argToClone.getLongIdentifier())
                      .shortIdentifier(argToClone.getShortIdentifier())
                      .description(argToClone.getDescription())
                      .defaultValue(argToClone.getDefaultValue())
                      .valuePlaceholder(argToClone.getValuePlaceholder());
      if (argToClone.isRequired()) {
        argBuilder.required();
      }
      if (argToClone.isMultiValued()) {
        argBuilder.multiValued();
      }
      arg = argBuilder.buildArgument();
    }
    catch (ArgumentException e)
    {
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2007-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2015 ForgeRock AS
 *      Portions Copyright 2012-2016 ForgeRock AS
 */
package org.opends.server.tools.tasks;
@@ -158,10 +158,11 @@
        argParser.addArgument(arg, taskGroup);
      }
      testIfOfflineArg = new BooleanArgument("testIfOffline", null,
          "testIfOffline", INFO_DESCRIPTION_TEST_IF_OFFLINE.get());
      testIfOfflineArg.setHidden(true);
      argParser.addArgument(testIfOfflineArg);
      testIfOfflineArg =
              BooleanArgument.builder("testIfOffline")
                      .description(INFO_DESCRIPTION_TEST_IF_OFFLINE.get())
                      .hidden()
                      .buildAndAddToParser(argParser);
    } catch (ArgumentException e) {
      // should never happen
    }
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeCli.java
@@ -21,7 +21,7 @@
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2013-2015 ForgeRock AS.
 *      Portions Copyright 2013-2016 ForgeRock AS.
 */
package org.opends.server.tools.upgrade;
@@ -229,16 +229,14 @@
      noPrompt = CommonArguments.getNoPrompt();
      verbose = CommonArguments.getVerbose();
      quietMode = CommonArguments.getQuiet();
      ignoreErrors =
          new BooleanArgument(OPTION_LONG_IGNORE_ERRORS, null,
              OPTION_LONG_IGNORE_ERRORS, INFO_UPGRADE_OPTION_IGNORE_ERRORS
                  .get());
      force = new BooleanArgument(OPTION_LONG_FORCE_UPGRADE, null,
          OPTION_LONG_FORCE_UPGRADE,
          INFO_UPGRADE_OPTION_FORCE.get(OPTION_LONG_NO_PROMPT));
              BooleanArgument.builder(OPTION_LONG_IGNORE_ERRORS)
                      .description(INFO_UPGRADE_OPTION_IGNORE_ERRORS.get())
                      .buildArgument();
      force =
              BooleanArgument.builder(OPTION_LONG_FORCE_UPGRADE)
                      .description(INFO_UPGRADE_OPTION_FORCE.get(OPTION_LONG_NO_PROMPT))
                      .buildArgument();
      acceptLicense = CommonArguments.getAcceptLicense();
      showUsageArgument = CommonArguments.getShowUsage();
opendj-server-legacy/src/main/java/org/opends/server/util/Base64.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions Copyright 2014-2015 ForgeRock AS.
 *      Portions Copyright 2014-2016 ForgeRock AS.
 */
package org.opends.server.util;
@@ -487,54 +487,47 @@
      encodeSubCommand = new SubCommand(argParser, "encode",
                                        INFO_BASE64_ENCODE_DESCRIPTION.get());
      encodedData = new StringArgument("encodeddata", 'd', "encodedData", false,
                             false, true, INFO_DATA_PLACEHOLDER.get(), null,
                             null,
                             INFO_BASE64_ENCODED_DATA_DESCRIPTION.get());
      decodeSubCommand.addArgument(encodedData);
      encodedFile = new StringArgument("encodedfile", 'f', "encodedDataFile",
                             false, false, true, INFO_PATH_PLACEHOLDER.get(),
                             null, null,
                             INFO_BASE64_ENCODED_FILE_DESCRIPTION.get());
      decodeSubCommand.addArgument(encodedFile);
      toRawFile = new StringArgument("torawfile", 'o', "toRawFile", false,
                                     false, true, INFO_PATH_PLACEHOLDER.get(),
                                     null, null,
                                     INFO_BASE64_TO_RAW_FILE_DESCRIPTION.get());
      decodeSubCommand.addArgument(toRawFile);
      rawData = new StringArgument("rawdata", 'd', "rawData", false, false,
                                   true, INFO_DATA_PLACEHOLDER.get(), null,
                                   null,
                                   INFO_BASE64_RAW_DATA_DESCRIPTION.get());
      encodeSubCommand.addArgument(rawData);
      rawFile = new StringArgument("rawfile", 'f', "rawDataFile", false, false,
                                   true, INFO_PATH_PLACEHOLDER.get(), null,
                                   null,
                                   INFO_BASE64_RAW_FILE_DESCRIPTION.get());
      encodeSubCommand.addArgument(rawFile);
      toEncodedFile = new StringArgument("toencodedfile", 'o', "toEncodedFile",
                               false, false, true, INFO_PATH_PLACEHOLDER.get(),
                               null, null,
                               INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION.get());
      encodeSubCommand.addArgument(toEncodedFile);
      encodedData =
              StringArgument.builder("encodedData")
                      .shortIdentifier('d')
                      .description(INFO_BASE64_ENCODED_DATA_DESCRIPTION.get())
                      .valuePlaceholder(INFO_DATA_PLACEHOLDER.get())
                      .buildAndAddToSubCommand(decodeSubCommand);
      encodedFile =
              StringArgument.builder("encodedDataFile")
                      .shortIdentifier('f')
                      .description(INFO_BASE64_ENCODED_FILE_DESCRIPTION.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToSubCommand(decodeSubCommand);
      toRawFile =
              StringArgument.builder("toRawFile")
                      .shortIdentifier('o')
                      .description(INFO_BASE64_TO_RAW_FILE_DESCRIPTION.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToSubCommand(decodeSubCommand);
      rawData =
              StringArgument.builder("rawData")
                      .shortIdentifier('d')
                      .description(INFO_BASE64_RAW_DATA_DESCRIPTION.get())
                      .valuePlaceholder(INFO_DATA_PLACEHOLDER.get())
                      .buildAndAddToSubCommand(encodeSubCommand);
      rawFile =
              StringArgument.builder("rawDataFile")
                      .shortIdentifier('f')
                      .description(INFO_BASE64_RAW_FILE_DESCRIPTION.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToSubCommand(encodeSubCommand);
      toEncodedFile =
              StringArgument.builder("toEncodedFile")
                      .shortIdentifier('o')
                      .description(INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION.get())
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToSubCommand(encodeSubCommand);
      ArrayList<SubCommand> subCommandList = new ArrayList<>(2);
      subCommandList.add(decodeSubCommand);
      subCommandList.add(encodeSubCommand);
      showUsage = CommonArguments.getShowUsage();
      argParser.addGlobalArgument(showUsage);
      argParser.setUsageGroupArgument(showUsage, subCommandList);
opendj-server-legacy/src/main/java/org/opends/server/util/EMailMessage.java
@@ -23,7 +23,7 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions Copyright 2014-2015 ForgeRock AS
 *      Portions Copyright 2014-2016 ForgeRock AS
 *      Portions copyright 2015 Edan Idzerda
 */
package org.opends.server.util;
@@ -534,42 +534,52 @@
    try
    {
      host = new StringArgument("host", 'h', "host", true, true, true,
                                INFO_HOST_PLACEHOLDER.get(), "127.0.0.1", null,
                                INFO_EMAIL_HOST_DESCRIPTION.get());
      argParser.addArgument(host);
      from = new StringArgument("from", 'f', "from", true, false, true,
                                INFO_ADDRESS_PLACEHOLDER.get(), null, null,
                                INFO_EMAIL_FROM_DESCRIPTION.get());
      argParser.addArgument(from);
      to = new StringArgument("to", 't', "to", true, true, true,
                              INFO_ADDRESS_PLACEHOLDER.get(),
                              null, null, INFO_EMAIL_TO_DESCRIPTION.get());
      argParser.addArgument(to);
      subject = new StringArgument("subject", 's', "subject", true, false, true,
                                   INFO_SUBJECT_PLACEHOLDER.get(), null, null,
                                   INFO_EMAIL_SUBJECT_DESCRIPTION.get());
      argParser.addArgument(subject);
      bodyFile = new StringArgument("bodyfile", 'b', "body", true, true, true,
                                    INFO_PATH_PLACEHOLDER.get(), null, null,
                                    INFO_EMAIL_BODY_DESCRIPTION.get());
      argParser.addArgument(bodyFile);
      attachFile = new StringArgument("attachfile", 'a', "attach", false, true,
                                      true, INFO_PATH_PLACEHOLDER.get(), null,
                                      null,
                                      INFO_EMAIL_ATTACH_DESCRIPTION.get());
      argParser.addArgument(attachFile);
      host =
              StringArgument.builder("host")
                      .shortIdentifier('h')
                      .description(INFO_EMAIL_HOST_DESCRIPTION.get())
                      .multiValued()
                      .required()
                      .defaultValue("127.0.0.1")
                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      from =
              StringArgument.builder("from")
                      .shortIdentifier('f')
                      .description(INFO_EMAIL_FROM_DESCRIPTION.get())
                      .required()
                      .valuePlaceholder(INFO_ADDRESS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      to =
              StringArgument.builder("to")
                      .shortIdentifier('t')
                      .description(INFO_EMAIL_TO_DESCRIPTION.get())
                      .multiValued()
                      .required()
                      .valuePlaceholder(INFO_ADDRESS_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      subject =
              StringArgument.builder("subject")
                      .shortIdentifier('s')
                      .description(INFO_EMAIL_SUBJECT_DESCRIPTION.get())
                      .required()
                      .valuePlaceholder(INFO_SUBJECT_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      bodyFile =
              StringArgument.builder("body")
                      .shortIdentifier('b')
                      .description(INFO_EMAIL_BODY_DESCRIPTION.get())
                      .multiValued()
                      .required()
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      attachFile =
              StringArgument.builder("attach")
                      .shortIdentifier('a')
                      .description(INFO_EMAIL_ATTACH_DESCRIPTION.get())
                      .multiValued()
                      .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
                      .buildAndAddToParser(argParser);
      showUsage = CommonArguments.getShowUsage();
      argParser.addArgument(showUsage);
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
@@ -2491,8 +2491,7 @@
        for (Argument otherArg : args) {
          if (arg != otherArg && arg.isPresent() && otherArg.isPresent()) {
            throw new ArgumentException(
                    ToolMessages.ERR_INCOMPATIBLE_ARGUMENTS.get(
                            arg.getName(), otherArg.getName()));
                    ToolMessages.ERR_INCOMPATIBLE_ARGUMENTS.get(arg.getLongIdentifier(), otherArg.getLongIdentifier()));
          }
        }
      }
opendj-server-legacy/src/main/java/org/opends/server/util/cli/LDAPConnectionConsoleInteraction.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2011-2015 ForgeRock AS
 *      Portions Copyright 2011-2016 ForgeRock AS
 */
package org.opends.server.util.cli;
@@ -630,9 +630,9 @@
    // Get the LDAP bind credentials.
    state.bindDN = secureArgsList.bindDnArg.getValue();
    state.adminUID= secureArgsList.adminUidArg.getValue();
    state.adminUID= secureArgsList.adminUidHiddenArg.getValue();
    final boolean useAdmin = secureArgsList.useAdminUID();
    if (useAdmin && secureArgsList.adminUidArg.isPresent())
    if (useAdmin && secureArgsList.adminUidHiddenArg.isPresent())
    {
      state.providedAdminUID = state.adminUID;
    }
@@ -737,9 +737,9 @@
        }
        if (addAdmin)
        {
          copySecureArgsList.adminUidArg.clearValues();
          copySecureArgsList.adminUidArg.addValue(getAdministratorUID());
          commandBuilder.addArgument(copySecureArgsList.adminUidArg);
          copySecureArgsList.adminUidHiddenArg.clearValues();
          copySecureArgsList.adminUidHiddenArg.addValue(getAdministratorUID());
          commandBuilder.addArgument(copySecureArgsList.adminUidHiddenArg);
        }
        else if (addBindDN)
        {
@@ -750,9 +750,9 @@
      }
      else if (useAdmin)
      {
        copySecureArgsList.adminUidArg.clearValues();
        copySecureArgsList.adminUidArg.addValue(getAdministratorUID());
        commandBuilder.addArgument(copySecureArgsList.adminUidArg);
        copySecureArgsList.adminUidHiddenArg.clearValues();
        copySecureArgsList.adminUidHiddenArg.addValue(getAdministratorUID());
        commandBuilder.addArgument(copySecureArgsList.adminUidHiddenArg);
      }
      else
      {
@@ -1978,8 +1978,8 @@
    secureArgsList.useStartTLSArg.setPresent(state.useStartTLS);
    if (adminUid != null)
    {
      secureArgsList.adminUidArg.addValue(adminUid);
      secureArgsList.adminUidArg.setPresent(true);
      secureArgsList.adminUidHiddenArg.addValue(adminUid);
      secureArgsList.adminUidHiddenArg.setPresent(true);
    }
    if (bindDn != null)
    {
@@ -2025,8 +2025,8 @@
    secureArgsList.bindPasswordFileArg.getNameToValueMap().clear();
    secureArgsList.bindPasswordFileArg.setPresent(false);
    state.bindPassword = null;
    secureArgsList.adminUidArg.clearValues();
    secureArgsList.adminUidArg.setPresent(false);
    secureArgsList.adminUidHiddenArg.clearValues();
    secureArgsList.adminUidHiddenArg.setPresent(false);
  }
  private void initializeTrustManager() throws ArgumentException
opendj-server/src/main/java/org/forgerock/opendj/server/setup/cli/SetupCli.java
@@ -20,7 +20,7 @@
 *
 * CDDL HEADER END
 *
 *      Copyright 2014-2015 ForgeRock AS.
 *      Copyright 2014-2016 ForgeRock AS.
 */
package org.forgerock.opendj.server.setup.cli;
@@ -249,7 +249,7 @@
        keyStorePassword = addGlobal(CommonArguments.getKeyStorePassword());
        keyStorePasswordFile = addGlobal(CommonArguments.getKeyStorePasswordFile());
        certNickname = addGlobal(CommonArguments.getCertNickName());
        connectTimeout = CommonArguments.getConnectTimeOut();
        connectTimeout = CommonArguments.getConnectTimeOutHidden();
        // Utility Input Output Options.
        noPrompt = addGlobal(CommonArguments.getNoPrompt());