Add karaf commands to explain endpoints

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/136fe18c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/136fe18c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/136fe18c

Branch: refs/heads/master
Commit: 136fe18c1113d1d18c97c90a2ba48561cb8e443e
Parents: cacef35
Author: Claus Ibsen <davscl...@apache.org>
Authored: Fri Nov 7 09:27:48 2014 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Fri Nov 7 13:25:20 2014 +0100

----------------------------------------------------------------------
 .../camel/management/mbean/ManagedEndpoint.java |  5 +--
 .../camel/karaf/commands/EndpointExplain.java   | 34 ++++++++++++++++----
 .../camel/karaf/commands/EndpointList.java      | 19 ++++++++++-
 3 files changed, 49 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/136fe18c/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
index 08deefc..59cddf9 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
@@ -94,13 +94,14 @@ public class ManagedEndpoint implements ManagedInstance, 
ManagedEndpointMBean {
             for (Map<String, String> row : rows) {
                 String option = row.get("name");
                 String type = row.get("type");
+                String javaType = row.get("javaType");
                 String value = row.get("value") != null ? row.get("value") : 
"";
                 String description = row.get("description") != null ? 
row.get("description") : "";
 
                 CompositeType ct = 
CamelOpenMBeanTypes.explainEndpointsCompositeType();
                 CompositeData data = new CompositeDataSupport(ct, new String[]
-                        {"option", "type", "value", "description"},
-                        new Object[]{option, type, value, description});
+                        {"option", "type", "java type", "value", 
"description"},
+                        new Object[]{option, type, javaType, value, 
description});
                 answer.put(data);
             }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/136fe18c/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java
----------------------------------------------------------------------
diff --git 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java
 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java
index 9f5cd34..55d63b0 100644
--- 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java
+++ 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java
@@ -17,6 +17,8 @@
 package org.apache.camel.karaf.commands;
 
 import java.io.PrintStream;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -31,15 +33,15 @@ import org.apache.felix.gogo.commands.Option;
 /**
  * Explain the Camel endpoints available in the Karaf instance.
  */
-@Command(scope = "camel", name = "endpoint-explain", description = "Explain 
all Camel endpoints available in a CamelContext.")
+@Command(scope = "camel", name = "endpoint-explain", description = "Explain 
all Camel endpoints available in CamelContexts.")
 public class EndpointExplain extends CamelCommandSupport {
 
-    @Argument(index = 0, name = "name", description = "The Camel context name 
where to look for the endpoints", required = true, multiValued = false)
+    @Argument(index = 0, name = "name", description = "The Camel context name 
where to look for the endpoints", required = false, multiValued = false)
     String name;
 
-    @Option(name = "--allOptions", aliases = "-all", description = "Whether to 
include all options",
+    @Option(name = "--verbose", aliases = "-v", description = "Verbose output 
to explain all options",
             required = false, multiValued = false, valueToShowInHelp = "false")
-    boolean allOptions = false;
+    boolean verbose;
 
     @Option(name = "--scheme", aliases = "-s", description = "To filter 
endpoints by scheme",
             required = false, multiValued = true)
@@ -71,7 +73,9 @@ public class EndpointExplain extends CamelCommandSupport {
         final PrintStream out = System.out;
 
         for (Endpoint endpoint : endpoints) {
-            String json = camelController.explainEndpoint(name, 
endpoint.getEndpointUri(), allOptions);
+            String json = 
camelController.explainEndpoint(endpoint.getCamelContext().getName(), 
endpoint.getEndpointUri(), verbose);
+
+            out.println("Context:\t" + endpoint.getCamelContext().getName());
 
             // sanitize and mask uri so we dont see passwords
             String uri = URISupport.sanitizeUri(endpoint.getEndpointUri());
@@ -84,6 +88,15 @@ public class EndpointExplain extends CamelCommandSupport {
 
             // use a basic json parser
             List<Map<String, String>> options = 
JsonSchemaHelper.parseJsonSchema(json);
+
+            // lets sort the options by name
+            Collections.sort(options, new Comparator<Map<String, String>>() {
+                @Override
+                public int compare(Map<String, String> o1, Map<String, String> 
o2) {
+                    return o1.get("name").compareTo(o2.get("name"));
+                }
+            });
+
             for (Map<String, String> option : options) {
                 out.print("Option:\t\t");
                 out.println(option.get("name"));
@@ -92,6 +105,11 @@ public class EndpointExplain extends CamelCommandSupport {
                     out.print("Type:\t\t");
                     out.println(type);
                 }
+                String javaType = option.get("javaType");
+                if (javaType != null) {
+                    out.print("Java Type:\t");
+                    out.println(javaType);
+                }
                 String value = option.get("value");
                 if (value != null) {
                     out.print("Value:\t\t");
@@ -102,8 +120,12 @@ public class EndpointExplain extends CamelCommandSupport {
                     out.print("Description:\t");
                     out.println(description);
                 }
+                out.println();
+            }
+
+            if (options.isEmpty()) {
+                out.println();
             }
-            out.println();
         }
 
         return null;

http://git-wip-us.apache.org/repos/asf/camel/blob/136fe18c/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java
----------------------------------------------------------------------
diff --git 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java
 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java
index f366a05..467d6bc 100644
--- 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java
+++ 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java
@@ -18,6 +18,8 @@ package org.apache.camel.karaf.commands;
 
 import java.io.PrintStream;
 import java.net.URLDecoder;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
@@ -94,9 +96,19 @@ public class EndpointList extends CamelCommandSupport {
                     String json = 
camelController.explainEndpoint(endpoint.getCamelContext().getName(), 
endpoint.getEndpointUri(), verbose);
                     // use a basic json parser
                     List<Map<String, String>> options = 
JsonSchemaHelper.parseJsonSchema(json);
+
+                    // lets sort the options by name
+                    Collections.sort(options, new Comparator<Map<String, 
String>>() {
+                        @Override
+                        public int compare(Map<String, String> o1, Map<String, 
String> o2) {
+                            return o1.get("name").compareTo(o2.get("name"));
+                        }
+                    });
+
                     for (Map<String, String> option : options) {
                         String key = option.get("name");
                         String type = option.get("type");
+                        String javaType = option.get("javaType");
                         String value = option.get("value");
                         String desc = option.get("description");
                         if (key != null && value != null) {
@@ -106,8 +118,13 @@ public class EndpointList extends CamelCommandSupport {
                             }
                             String line = "\t" + key + "=" + value;
                             out.println(String.format(rowFormat, "", line, 
""));
+
                             if (type != null) {
-                                out.println(String.format(rowFormat, "", "\t" 
+ type, ""));
+                                String displayType = type;
+                                if (javaType != null && 
!displayType.equals(javaType)) {
+                                    displayType = type + " (" + javaType + ")";
+                                }
+                                out.println(String.format(rowFormat, "", "\t" 
+ displayType, ""));
                             }
                             if (desc != null) {
                                 out.println(String.format(rowFormat, "", "\t" 
+ desc, ""));

Reply via email to