CAMEL-8044: Camel commands useable for remote JVMs using jolokia
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b15b009a Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b15b009a Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b15b009a Branch: refs/heads/master Commit: b15b009a21805bfbc2553fbbec5a132aecd69681 Parents: 57b91f8 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Dec 11 18:56:01 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Dec 11 18:56:10 2014 +0100 ---------------------------------------------------------------------- .../jolokia/JolokiaCamelController.java | 37 ++++++++++++++++++-- .../commands/jolokia/JolokiaRemoteTest.java | 9 +++++ 2 files changed, 44 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b15b009a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/JolokiaCamelController.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/JolokiaCamelController.java b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/JolokiaCamelController.java index bb87e81..3e7b251 100644 --- a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/JolokiaCamelController.java +++ b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/JolokiaCamelController.java @@ -491,9 +491,42 @@ public class JolokiaCamelController extends AbstractCamelController implements R throw new IllegalStateException("Need to connect to remote jolokia first"); } - // TODO: implement me + List<Map<String, String>> answer = new ArrayList<Map<String, String>>(); - return null; + ObjectName found = lookupCamelContext(camelContextName); + if (found != null) { + J4pExecResponse response = jolokia.execute(new J4pExecRequest(found, "listComponents()")); + if (response != null) { + JSONObject data = response.getValue(); + for (Object obj : data.values()) { + JSONObject data2 = (JSONObject) obj; + JSONObject component = (JSONObject) data2.values().iterator().next(); + + Map<String, String> row = new LinkedHashMap<String, String>(); + row.put("artifactId", asString(component.get("artifactId"))); + row.put("description", asString(component.get("description"))); + row.put("groupId", asString(component.get("groupId"))); + row.put("label", asString(component.get("label"))); + row.put("name", asString(component.get("name"))); + row.put("status", asString(component.get("status"))); + row.put("type", asString(component.get("type"))); + row.put("version", asString(component.get("version"))); + answer.add(row); + } + } + + // sort the list + Collections.sort(answer, new Comparator<Map<String, String>>() { + @Override + public int compare(Map<String, String> component1, Map<String, String> component2) { + String name1 = component1.get("name"); + String name2 = component2.get("name"); + return name1.compareTo(name2); + } + }); + } + + return answer; } private static String asKey(String attributeKey) { http://git-wip-us.apache.org/repos/asf/camel/blob/b15b009a/platforms/commands/commands-jolokia/src/test/java/org/apache/camel/commands/jolokia/JolokiaRemoteTest.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-jolokia/src/test/java/org/apache/camel/commands/jolokia/JolokiaRemoteTest.java b/platforms/commands/commands-jolokia/src/test/java/org/apache/camel/commands/jolokia/JolokiaRemoteTest.java index 2afc2c2..bdfa8fa 100644 --- a/platforms/commands/commands-jolokia/src/test/java/org/apache/camel/commands/jolokia/JolokiaRemoteTest.java +++ b/platforms/commands/commands-jolokia/src/test/java/org/apache/camel/commands/jolokia/JolokiaRemoteTest.java @@ -177,4 +177,13 @@ public class JolokiaRemoteTest { System.out.println(data); } + @Test + public void testListComponents() throws Exception { + controller = new JolokiaCamelController(); + controller.connect(url, null, null); + + List<Map<String, String>> data = controller.listComponents("myCamel"); + System.out.println(data); + } + }