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 +++++++++++++++++++++++++++-------------------
 1 files changed, 27 insertions(+), 19 deletions(-)

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