From df993e4e7a2b5af0c8e0907a80e1a4cef10ee56d Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Thu, 11 Feb 2016 14:17:18 +0000
Subject: [PATCH] OPENDJSDK-42 cli arguments fluent builder
---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java | 99 +++++++++++++++++++++++++++++++------------------
1 files changed, 62 insertions(+), 37 deletions(-)
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java
index ca65b3d..abb0bc0 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java
+++ b/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:
--
Gitblit v1.10.0