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; 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,19 +272,13 @@ 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); } } PrintStream out = app.getOutputStream(); if (app.isScriptFriendly()) { 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; } 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)); } 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. */ 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