You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by pi...@apache.org on 2011/04/30 23:21:02 UTC

svn commit: r1098166 - in /karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands: Argument.java Option.java basic/DefaultActionPreparator.java

Author: pieber
Date: Sat Apr 30 21:21:02 2011
New Revision: 1098166

URL: http://svn.apache.org/viewvc?rev=1098166&view=rev
Log:
[KARAF-605] Add additional option to gogo Argument and Option to suppress or overwrite defaults to output in help

Signed-off-by: Andreas Pieber <an...@gmail.com>

Modified:
    karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Argument.java
    karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Option.java
    karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java

Modified: karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Argument.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Argument.java?rev=1098166&r1=1098165&r2=1098166&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Argument.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Argument.java Sat Apr 30 21:21:02 2011
@@ -18,6 +18,8 @@
  */
 package org.apache.felix.gogo.commands;
 
+import org.apache.karaf.shell.console.completer.StringsCompleter;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
@@ -30,6 +32,7 @@ import java.lang.annotation.ElementType;
 @Target({ElementType.FIELD})
 public @interface Argument
 {
+    public static final String DEFAULT_STRING= "DEFAULT";
 
     String DEFAULT = "##default";
 
@@ -42,4 +45,6 @@ public @interface Argument
     int index() default 0;
 
     boolean multiValued() default false;
+
+    String valueToShowInHelp() default DEFAULT_STRING;
 }

Modified: karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Option.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Option.java?rev=1098166&r1=1098165&r2=1098166&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Option.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/Option.java Sat Apr 30 21:21:02 2011
@@ -30,6 +30,8 @@ import java.lang.annotation.ElementType;
 @Target({ElementType.FIELD})
 public @interface Option
 {
+    public static final String DEFAULT_STRING= "DEFAULT";
+
     String name();
 
     String[] aliases() default {};
@@ -40,4 +42,5 @@ public @interface Option
 
     boolean multiValued() default false;
 
+    String valueToShowInHelp() default DEFAULT_STRING;
 }

Modified: karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java?rev=1098166&r1=1098165&r2=1098166&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/felix/gogo/commands/basic/DefaultActionPreparator.java Sat Apr 30 21:21:02 2011
@@ -71,6 +71,11 @@ public class DefaultActionPreparator imp
             return false;
         }
 
+        public String valueToShowInHelp()
+        {
+            return Option.DEFAULT_STRING;
+        }
+
         public Class<? extends Annotation> annotationType()
         {
             return Option.class;
@@ -110,6 +115,9 @@ public class DefaultActionPreparator imp
                             public boolean multiValued() {
                                 return delegate.multiValued();
                             }
+                            public String valueToShowInHelp() {
+                                return delegate.valueToShowInHelp();
+                            }
                             public Class<? extends Annotation> annotationType() {
                                 return delegate.annotationType();
                             }
@@ -444,18 +452,18 @@ public class DefaultActionPreparator imp
                 out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a(argument.name()).a(Ansi.Attribute.RESET));
                 printFormatted("                ", argument.description(), term != null ? term.getWidth() : 80, out);
                 if (!argument.required()) {
-                    try {
-                        argsMap.get(argument).setAccessible(true);
-                        Object o = argsMap.get(argument).get(action);
-                        if (o != null
-                                && (!(o instanceof Boolean) || ((Boolean) o))
-                                && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
-                            out.print("                    (defaults to ");
-                            out.print(o.toString());
-                            out.println(")");
+                    if (argument.valueToShowInHelp() != null && argument.valueToShowInHelp().length() != 0) {
+                         try {
+                            if (Argument.DEFAULT_STRING.equals(argument.valueToShowInHelp())) {
+                                argsMap.get(argument).setAccessible(true);
+                                Object o = argsMap.get(argument).get(action);
+                                printObjectDefaultsTo(out, o);
+                            } else {
+                                printDefaultsTo(out, argument.valueToShowInHelp());
+                            }
+                        } catch (Throwable t) {
+                            // Ignore
                         }
-                    } catch (Throwable t) {
-                        // Ignore
                     }
                 }
             }
@@ -474,18 +482,18 @@ public class DefaultActionPreparator imp
                 out.print("        ");
                 out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a(opt).a(Ansi.Attribute.RESET));
                 printFormatted("                ", option.description(), term != null ? term.getWidth() : 80, out);
-                try {
-                    optionsMap.get(option).setAccessible(true);
-                    Object o = optionsMap.get(option).get(action);
-                    if (o != null
-                            && (!(o instanceof Boolean) || ((Boolean) o))
-                            && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
-                        out.print("                (defaults to ");
-                        out.print(o.toString());
-                        out.println(")");
+                if (option.valueToShowInHelp() != null && option.valueToShowInHelp().length() != 0) {
+                    try {
+                        if(Option.DEFAULT_STRING.equals(option.valueToShowInHelp())) {
+                            optionsMap.get(option).setAccessible(true);
+                            Object o = optionsMap.get(option).get(action);
+                            printObjectDefaultsTo(out, o);
+                        } else {
+                            printDefaultsTo(out, option.valueToShowInHelp());
+                        }
+                    } catch (Throwable t) {
+                        // Ignore
                     }
-                } catch (Throwable t) {
-                    // Ignore
                 }
             }
             out.println();
@@ -497,6 +505,20 @@ public class DefaultActionPreparator imp
         }
     }
 
+    private void printObjectDefaultsTo(PrintStream out, Object o) {
+        if (o != null
+                && (!(o instanceof Boolean) || ((Boolean) o))
+                && (!(o instanceof Number) || ((Number) o).doubleValue() != 0.0)) {
+            printDefaultsTo(out, o.toString());
+        }
+    }
+
+    private void printDefaultsTo(PrintStream out, String value) {
+        out.print("                (defaults to ");
+        out.print(value);
+        out.println(")");
+    }
+
     protected String loadDescription(Class clazz, String desc) {
         if (desc.startsWith("classpath:")) {
             InputStream is = clazz.getResourceAsStream(desc.substring("classpath:".length()));