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, ""));