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/SetPropSubCommandHandler.java | 162 ++++++++++++++++++++++++++++++++---------------------
1 files changed, 98 insertions(+), 64 deletions(-)
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java
index dd9a010..ca04562 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java
+++ b/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 {
@@ -149,14 +149,14 @@
* Creates a new set-xxx-prop sub-command for an instantiable relation.
*
* @param parser
- * The sub-command argument parser.
+ * The sub-command argument parser.
* @param path
- * The parent managed object path.
+ * The parent managed object path.
* @param r
- * The instantiable relation.
+ * The instantiable relation.
* @return Returns the new set-xxx-prop sub-command.
* @throws ArgumentException
- * If the sub-command could not be created successfully.
+ * If the sub-command could not be created successfully.
*/
public static SetPropSubCommandHandler create(SubCommandArgumentParser parser, ManagedObjectPath<?, ?> path,
InstantiableRelationDefinition<?, ?> r) throws ArgumentException {
@@ -167,14 +167,14 @@
* Creates a new set-xxx-prop sub-command for an optional relation.
*
* @param parser
- * The sub-command argument parser.
+ * The sub-command argument parser.
* @param path
- * The parent managed object path.
+ * The parent managed object path.
* @param r
- * The optional relation.
+ * The optional relation.
* @return Returns the new set-xxx-prop sub-command.
* @throws ArgumentException
- * If the sub-command could not be created successfully.
+ * If the sub-command could not be created successfully.
*/
public static SetPropSubCommandHandler create(SubCommandArgumentParser parser, ManagedObjectPath<?, ?> path,
OptionalRelationDefinition<?, ?> r) throws ArgumentException {
@@ -185,14 +185,14 @@
* Creates a new set-xxx-prop sub-command for a set relation.
*
* @param parser
- * The sub-command argument parser.
+ * The sub-command argument parser.
* @param path
- * The parent managed object path.
+ * The parent managed object path.
* @param r
- * The set relation.
+ * The set relation.
* @return Returns the new set-xxx-prop sub-command.
* @throws ArgumentException
- * If the sub-command could not be created successfully.
+ * If the sub-command could not be created successfully.
*/
public static SetPropSubCommandHandler create(SubCommandArgumentParser parser, ManagedObjectPath<?, ?> path,
SetRelationDefinition<?, ?> r) throws ArgumentException {
@@ -203,14 +203,14 @@
* Creates a new set-xxx-prop sub-command for a singleton relation.
*
* @param parser
- * The sub-command argument parser.
+ * The sub-command argument parser.
* @param path
- * The parent managed object path.
+ * The parent managed object path.
* @param r
- * The singleton relation.
+ * The singleton relation.
* @return Returns the new set-xxx-prop sub-command.
* @throws ArgumentException
- * If the sub-command could not be created successfully.
+ * If the sub-command could not be created successfully.
*/
public static SetPropSubCommandHandler create(SubCommandArgumentParser parser, ManagedObjectPath<?, ?> path,
SingletonRelationDefinition<?, ?> r) throws ArgumentException {
@@ -222,20 +222,20 @@
* object.
*
* @param app
- * The console application.
+ * The console application.
* @param context
- * The management context.
+ * The management context.
* @param mo
- * The managed object to be configured.
+ * The managed object to be configured.
* @param handler
- * The SubCommandHandler whose command builder properties must be updated.
+ * The SubCommandHandler whose command builder properties must be updated.
* @return Returns a MenuResult.success() if the managed object was configured successfully, or MenuResult.quit(),
- * or MenuResult.cancel(), if the managed object was edited interactively and the user chose to quit or
- * cancel.
+ * or MenuResult.cancel(), if the managed object was edited interactively and the user chose to quit or
+ * cancel.
* @throws ClientException
- * If an unrecoverable client exception occurred whilst interacting with the server.
+ * If an unrecoverable client exception occurred whilst interacting with the server.
* @throws ClientException
- * If an error occurred whilst interacting with the console.
+ * If an error occurred whilst interacting with the console.
*/
public static MenuResult<Void> modifyManagedObject(ConsoleApplication app, ManagementContext context,
ManagedObject<?> mo, SubCommandHandler handler) throws ClientException {
@@ -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());
@@ -864,12 +879,12 @@
* modification proposed by the user in the provided PropertyEditorModification object.
*
* @param mod
- * the object describing the modification made.
+ * the object describing the modification made.
* @param <T>
- * the type of the property to be retrieved.
+ * the type of the property to be retrieved.
* @return the argument representing the modification.
* @throws ArgumentException
- * if there is a problem creating the argument.
+ * if there is a problem creating the argument.
*/
private static <T> Argument createArgument(PropertyEditorModification<T> mod) throws ArgumentException {
StringArgument arg;
@@ -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));
}
--
Gitblit v1.10.0