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

Jean-Noel Rouvignac
08.41.2015 cbabf3a2b06c69420e7bb524c59afdd4669021e2
Extracted cannotDisplay() methods.
6 files modified
242 ■■■■■ changed files
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java 32 ●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/GetPropSubCommandHandler.java 13 ●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java 134 ●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java 7 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java 10 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java 46 ●●●●● patch | view | raw | blame | history
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,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();
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