From cbabf3a2b06c69420e7bb524c59afdd4669021e2 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 08 Jun 2015 09:41:44 +0000
Subject: [PATCH] Extracted cannotDisplay() methods.
---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java | 46 +++++---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/GetPropSubCommandHandler.java | 13 --
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java | 32 +++---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java | 7
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java | 10 +
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java | 134 +++++++-------------------
6 files changed, 94 insertions(+), 148 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 46b7c16..ca65b3d 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
@@ -251,10 +251,7 @@
boolean isFirst = true;
for (ManagedObjectDefinition<?, ?> mod : getSubTypes(d).values()) {
- // Only display advanced types and custom types in advanced mode.
- if (!app.isAdvancedMode()
- && (mod.hasOption(ManagedObjectOption.ADVANCED)
- || CLIProfile.getInstance().isForCustomization(mod))) {
+ if (cannotDisplayAdvancedOrCustomTypes(app, mod)) {
continue;
}
@@ -616,8 +613,7 @@
if (app.isInteractive()) {
SortedSet<PropertyDefinition<?>> properties = new TreeSet<>();
for (PropertyDefinition<?> pd : d.getAllPropertyDefinitions()) {
- if (pd.hasOption(PropertyOption.HIDDEN)
- || (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED))) {
+ if (cannotDisplay(app, pd)) {
continue;
}
properties.add(pd);
@@ -707,6 +703,11 @@
}
}
+ private static boolean cannotDisplay(ConsoleApplication app, PropertyDefinition<?> pd) {
+ return pd.hasOption(PropertyOption.HIDDEN)
+ || (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED));
+ }
+
/** Interactively create the child by prompting for the name. */
private static <C extends ConfigurationClient, S
extends Configuration> ManagedObject<? extends C> createChildInteractively(
@@ -813,17 +814,9 @@
Iterator<ManagedObjectDefinition<? extends C, ? extends S>> i;
for (i = filteredTypes.iterator(); i.hasNext();) {
ManagedObjectDefinition<? extends C, ? extends S> cd = i.next();
-
- if (prohibitedTypes.contains(cd.getName())) {
- // Remove filtered types.
+ if (prohibitedTypes.contains(cd.getName())
+ || cannotDisplayAdvancedOrCustomTypes(app, cd)) {
i.remove();
- } else if (!app.isAdvancedMode()) {
- // Only display advanced types and custom types in advanced mode.
- if (cd.hasOption(ManagedObjectOption.ADVANCED)) {
- i.remove();
- } else if (CLIProfile.getInstance().isForCustomization(cd)) {
- i.remove();
- }
}
}
@@ -868,6 +861,13 @@
}
}
+ /** Only display advanced types and custom types in advanced mode. */
+ private static boolean cannotDisplayAdvancedOrCustomTypes(
+ ConsoleApplication app, ManagedObjectDefinition<?, ?> defn) {
+ return !app.isAdvancedMode()
+ && (defn.hasOption(ManagedObjectOption.ADVANCED) || CLIProfile.getInstance().isForCustomization(defn));
+ }
+
/** The sub-commands naming arguments. */
private final List<StringArgument> namingArgs;
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/GetPropSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/GetPropSubCommandHandler.java
index 36f8aa9..f106a01 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/GetPropSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/GetPropSubCommandHandler.java
@@ -48,7 +48,6 @@
import org.forgerock.opendj.config.ManagedObjectPath;
import org.forgerock.opendj.config.OptionalRelationDefinition;
import org.forgerock.opendj.config.PropertyDefinition;
-import org.forgerock.opendj.config.PropertyOption;
import org.forgerock.opendj.config.RelationDefinition;
import org.forgerock.opendj.config.RelativeInheritedDefaultBehaviorProvider;
import org.forgerock.opendj.config.SetRelationDefinition;
@@ -273,18 +272,12 @@
builder.appendHeading(INFO_DSCFG_HEADING_PROPERTY_VALUE.get());
builder.addSortKey(0);
for (PropertyDefinition<?> pd : pdList) {
- if (pd.hasOption(PropertyOption.HIDDEN)) {
+ if (cannotDisplay(app, pd, propertyNames)) {
continue;
}
- if (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED)) {
- continue;
- }
-
- if (propertyNames.isEmpty() || propertyNames.contains(pd.getName())) {
- displayProperty(app, builder, child, pd, valuePrinter);
- setCommandBuilderUseful(true);
- }
+ displayProperty(app, builder, child, pd, valuePrinter);
+ setCommandBuilderUseful(true);
}
PrintStream out = app.getOutputStream();
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
index ac2441c..9b120fc 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
@@ -26,9 +26,9 @@
*/
package org.forgerock.opendj.config.dsconfig;
-import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
import static com.forgerock.opendj.cli.CliMessages.*;
-import static com.forgerock.opendj.cli.Utils.MAX_LINE_WIDTH;
+import static com.forgerock.opendj.cli.Utils.*;
+import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
import java.io.PrintStream;
import java.util.Collection;
@@ -51,7 +51,6 @@
import org.forgerock.opendj.config.DefaultBehaviorProviderVisitor;
import org.forgerock.opendj.config.DefinedDefaultBehaviorProvider;
import org.forgerock.opendj.config.EnumPropertyDefinition;
-import org.forgerock.opendj.config.ManagedObjectOption;
import org.forgerock.opendj.config.PropertyDefinition;
import org.forgerock.opendj.config.PropertyDefinitionUsageBuilder;
import org.forgerock.opendj.config.PropertyDefinitionVisitor;
@@ -64,12 +63,12 @@
import com.forgerock.opendj.cli.ArgumentException;
import com.forgerock.opendj.cli.BooleanArgument;
-import com.forgerock.opendj.cli.StringArgument;
-import com.forgerock.opendj.cli.SubCommand;
-import com.forgerock.opendj.cli.SubCommandArgumentParser;
import com.forgerock.opendj.cli.ClientException;
import com.forgerock.opendj.cli.ConsoleApplication;
import com.forgerock.opendj.cli.MenuResult;
+import com.forgerock.opendj.cli.StringArgument;
+import com.forgerock.opendj.cli.SubCommand;
+import com.forgerock.opendj.cli.SubCommandArgumentParser;
import com.forgerock.opendj.cli.TableBuilder;
import com.forgerock.opendj.cli.TablePrinter;
import com.forgerock.opendj.cli.TextTablePrinter;
@@ -138,7 +137,6 @@
public LocalizableMessage visitUndefined(UndefinedDefaultBehaviorProvider<T> d, PropertyDefinition<T> p) {
return INFO_DSCFG_HELP_FIELD_UNDEFINED.get();
}
-
}
/**
@@ -466,29 +464,17 @@
builder.startRow();
builder.appendCell(INFO_DSCFG_HELP_HEADING_ADVANCED.get());
builder.appendCell(HEADING_SEPARATOR);
- if (pd.hasOption(PropertyOption.ADVANCED)) {
- builder.appendCell(INFO_GENERAL_YES.get());
- } else {
- builder.appendCell(INFO_GENERAL_NO.get());
- }
+ builder.appendCell(hasOptionYN(pd, PropertyOption.ADVANCED));
builder.startRow();
builder.appendCell(INFO_DSCFG_HELP_HEADING_MULTI_VALUED.get());
builder.appendCell(HEADING_SEPARATOR);
- if (pd.hasOption(PropertyOption.MULTI_VALUED)) {
- builder.appendCell(INFO_GENERAL_YES.get());
- } else {
- builder.appendCell(INFO_GENERAL_NO.get());
- }
+ builder.appendCell(hasOptionYN(pd, PropertyOption.MULTI_VALUED));
builder.startRow();
builder.appendCell(INFO_DSCFG_HELP_HEADING_MANDATORY.get());
builder.appendCell(HEADING_SEPARATOR);
- if (pd.hasOption(PropertyOption.MANDATORY)) {
- builder.appendCell(INFO_GENERAL_YES.get());
- } else {
- builder.appendCell(INFO_GENERAL_NO.get());
- }
+ builder.appendCell(hasOptionYN(pd, PropertyOption.MANDATORY));
builder.startRow();
builder.appendCell(INFO_DSCFG_HELP_HEADING_READ_ONLY.get());
@@ -509,28 +495,34 @@
builder.print(factory);
// Administrator action.
- AdministratorAction action = pd.getAdministratorAction();
- LocalizableMessage synopsis = action.getSynopsis();
- if (synopsis == null) {
- switch (action.getType()) {
- case COMPONENT_RESTART:
- synopsis = INFO_DSCFG_HELP_FIELD_COMPONENT_RESTART.get(d.getUserFriendlyName());
- break;
- case SERVER_RESTART:
- synopsis = INFO_DSCFG_HELP_FIELD_SERVER_RESTART.get();
- break;
- default:
- // Do nothing.
- break;
- }
- }
-
+ LocalizableMessage synopsis = getSynopsis(d, pd);
if (synopsis != null) {
app.println();
app.println(synopsis);
}
}
+ private static LocalizableMessage hasOptionYN(PropertyDefinition<?> pd, PropertyOption option) {
+ return pd.hasOption(option) ? INFO_GENERAL_YES.get() : INFO_GENERAL_NO.get();
+ }
+
+ private static LocalizableMessage getSynopsis(AbstractManagedObjectDefinition<?, ?> d, PropertyDefinition<?> pd) {
+ AdministratorAction action = pd.getAdministratorAction();
+ LocalizableMessage synopsis = action.getSynopsis();
+ if (synopsis != null) {
+ return synopsis;
+ }
+
+ switch (action.getType()) {
+ case COMPONENT_RESTART:
+ return INFO_DSCFG_HELP_FIELD_COMPONENT_RESTART.get(d.getUserFriendlyName());
+ case SERVER_RESTART:
+ return INFO_DSCFG_HELP_FIELD_SERVER_RESTART.get();
+ default:
+ return null;
+ }
+ }
+
/** Displays the property option summary key. */
private static void displayPropertyOptionKey(ConsoleApplication app) {
LocalizableMessageBuilder builder;
@@ -854,52 +846,25 @@
// Display help for each property.
AbstractManagedObjectDefinition<?, ?> mod = subTypes.get(type);
-
- // Skip hidden types.
- if (mod.hasOption(ManagedObjectOption.HIDDEN)) {
- continue;
- }
-
- // Skip advanced types if required.
- if (!app.isAdvancedMode() && mod.hasOption(ManagedObjectOption.ADVANCED)) {
- continue;
- }
-
- // Skip if this does not have the required tag.
- if (tag != null && !mod.hasTag(tag)) {
+ if (cannotDisplay(app, mod, tag)) {
continue;
}
Set<PropertyDefinition<?>> pds = getPropertyDefinitions(mod);
for (PropertyDefinition<?> pd : pds) {
- if (pd.hasOption(PropertyOption.HIDDEN)) {
+ if (cannotDisplay(app, pd, propertyNames)) {
continue;
}
- if (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED)) {
- continue;
- }
-
- if (!propertyNames.isEmpty() && !propertyNames.contains(pd.getName())) {
- continue;
- }
-
- // Display the property.
+ // Display the property:
+ // - component category and type,
+ // - property name, options
+ // - syntax
builder.startRow();
-
- // Display the component category.
builder.appendCell(category);
-
- // Display the component type.
builder.appendCell(type);
-
- // Display the property name.
builder.appendCell(pd.getName());
-
- // Display the options.
builder.appendCell(getPropertyOptionSummary(pd));
-
- // Display the syntax.
PropertyDefinitionUsageBuilder v = new PropertyDefinitionUsageBuilder(false);
builder.appendCell(v.getUsage(pd));
}
@@ -940,35 +905,14 @@
// Display help for each property.
AbstractManagedObjectDefinition<?, ?> mod = subTypes.get(type);
-
- // Skip hidden types.
- if (mod.hasOption(ManagedObjectOption.HIDDEN)) {
+ if (cannotDisplay(app, mod, tag)) {
continue;
}
- // Skip advanced types if required.
- if (!app.isAdvancedMode() && mod.hasOption(ManagedObjectOption.ADVANCED)) {
- continue;
- }
-
- // Skip if this does not have the required tag.
- if (tag != null && !mod.hasTag(tag)) {
- continue;
- }
-
- Set<PropertyDefinition<?>> pds = getPropertyDefinitions(mod);
-
boolean isFirstProperty = true;
+ Set<PropertyDefinition<?>> pds = getPropertyDefinitions(mod);
for (PropertyDefinition<?> pd : pds) {
- if (pd.hasOption(PropertyOption.HIDDEN)) {
- continue;
- }
-
- if (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED)) {
- continue;
- }
-
- if (!propertyNames.isEmpty() && !propertyNames.contains(pd.getName())) {
+ if (cannotDisplay(app, pd, propertyNames)) {
continue;
}
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java
index 7324ca9..3796f8a 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java
@@ -345,7 +345,7 @@
// Output just the names of the children.
for (String name : children.keySet()) {
ManagedObjectDefinition<?, ?> d = children.get(name).getManagedObjectDefinition();
- if (!canDisplay(app, d)) {
+ if (!cannotDisplay(app, d)) {
app.println(LocalizableMessage.raw(name));
}
}
@@ -370,8 +370,7 @@
for (String name : children.keySet()) {
ManagedObject<?> child = children.get(name);
ManagedObjectDefinition<?, ?> d = child.getManagedObjectDefinition();
-
- if (canDisplay(app, d)) {
+ if (cannotDisplay(app, d)) {
continue;
}
@@ -441,7 +440,7 @@
return MenuResult.success(0);
}
- private boolean canDisplay(ConsoleApplication app, ManagedObjectDefinition<?, ?> d) {
+ private boolean cannotDisplay(ConsoleApplication app, ManagedObjectDefinition<?, ?> d) {
return !app.isAdvancedMode() && (d.hasOption(HIDDEN) || d.hasOption(ADVANCED));
}
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 b1829ad..dd9a010 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
@@ -248,10 +248,7 @@
if (app.isInteractive()) {
SortedSet<PropertyDefinition<?>> properties = new TreeSet<>();
for (PropertyDefinition<?> pd : d.getAllPropertyDefinitions()) {
- if (pd.hasOption(PropertyOption.HIDDEN)) {
- continue;
- }
- if (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED)) {
+ if (cannotDisplay(app, pd)) {
continue;
}
properties.add(pd);
@@ -346,6 +343,11 @@
}
}
+ private static boolean cannotDisplay(ConsoleApplication app, PropertyDefinition<?> pd) {
+ return pd.hasOption(PropertyOption.HIDDEN)
+ || (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED));
+ }
+
/**
* Check that any referenced components are enabled if required.
*/
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
index fd7cbef..0102fa7 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
@@ -58,6 +58,7 @@
import org.forgerock.opendj.config.OptionalRelationDefinition;
import org.forgerock.opendj.config.PropertyDefinition;
import org.forgerock.opendj.config.PropertyDefinitionUsageBuilder;
+import org.forgerock.opendj.config.PropertyOption;
import org.forgerock.opendj.config.RelationDefinition;
import org.forgerock.opendj.config.SetRelationDefinition;
import org.forgerock.opendj.config.SingletonRelationDefinition;
@@ -86,9 +87,7 @@
import com.forgerock.opendj.cli.TabSeparatedTablePrinter;
import com.forgerock.opendj.cli.TablePrinter;
-/**
- * An interface for sub-command implementations.
- */
+/** An interface for sub-command implementations. */
abstract class SubCommandHandler implements Comparable<SubCommandHandler> {
/**
@@ -430,9 +429,7 @@
}
}
- /**
- * A path serializer which is used to register a sub-command's naming arguments.
- */
+ /** A path serializer which is used to register a sub-command's naming arguments. */
private static final class NamingArgumentBuilder implements ManagedObjectPathSerializer {
/**
@@ -563,12 +560,9 @@
SingletonRelationDefinition<? super C, ? super S> r, AbstractManagedObjectDefinition<C, S> d) {
sz--;
}
-
}
- /**
- * The threshold above which choice menus should be displayed in multiple columns.
- */
+ /** The threshold above which choice menus should be displayed in multiple columns. */
public static final int MULTI_COLUMN_THRESHOLD = 8;
/** The value for the long option property. */
@@ -588,9 +582,7 @@
/** The value for the short option unit-time. */
private static final char OPTION_DSCFG_SHORT_UNIT_TIME = 'm';
- /**
- * The argument which should be used to specify zero or more property names.
- */
+ /** The argument which should be used to specify zero or more property names. */
private StringArgument propertyArgument;
/** The argument which should be used to request record mode. */
private BooleanArgument recordModeArgument;
@@ -962,12 +954,7 @@
}
ManagedObjectDefinition<?, ?> cd = child.getManagedObjectDefinition();
-
- if (cd.hasOption(ManagedObjectOption.HIDDEN)) {
- continue;
- }
-
- if (!app.isAdvancedMode() && cd.hasOption(ManagedObjectOption.ADVANCED)) {
+ if (cannotDisplay(app, cd, null)) {
continue;
}
@@ -1079,6 +1066,27 @@
}
/**
+ * Skips:
+ *
+ * <ul>
+ * <li>hidden types</li>
+ * <li>advanced types if required</li>
+ * <li>if this does not have the required tag</li>
+ * </ul>.
+ */
+ static boolean cannotDisplay(ConsoleApplication app, AbstractManagedObjectDefinition<?, ?> defn, Tag tag) {
+ return defn.hasOption(ManagedObjectOption.HIDDEN)
+ || (!app.isAdvancedMode() && defn.hasOption(ManagedObjectOption.ADVANCED))
+ || (tag != null && !defn.hasTag(tag));
+ }
+
+ static boolean cannotDisplay(ConsoleApplication app, PropertyDefinition<?> pd, Set<String> allowedPropertyNames) {
+ return pd.hasOption(PropertyOption.HIDDEN)
+ || (!app.isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED))
+ || !allowedPropertyNames.contains(pd.getName());
+ }
+
+ /**
* Registers the property name argument with the sub-command.
*
* @param subCommand
--
Gitblit v1.10.0