You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/12/11 18:56:28 UTC
[6/6] camel git commit: CAMEL-8044: Camel commands useable for remote
JVMs using jolokia
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/3636e302
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3636e302
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3636e302
Branch: refs/heads/master
Commit: 3636e302ecd9f67f758dae644e474c13ae06a07a
Parents: f030c8b
Author: Claus Ibsen <da...@apache.org>
Authored: Thu Dec 11 17:24:22 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Dec 11 18:56:10 2014 +0100
----------------------------------------------------------------------
.../jolokia/JolokiaCamelController.java | 89 ++++++++++++++++++--
.../commands/jolokia/JolokiaRemoteTest.java | 27 ++++++
2 files changed, 110 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/3636e302/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 3dc86d2..730c913 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
@@ -34,6 +34,7 @@ import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.request.J4pReadResponse;
import org.jolokia.client.request.J4pSearchRequest;
import org.jolokia.client.request.J4pSearchResponse;
+import org.json.simple.JSONObject;
/**
* A {@link org.apache.camel.commands.CamelController} that uses Jolokia Client to connect to remote JVMs which
@@ -386,34 +387,110 @@ public class JolokiaCamelController extends AbstractCamelController implements R
}
@Override
- public List<Map<String, String>> getEndpoints(String s) throws Exception {
+ public List<Map<String, String>> getEndpoints(String camelContextName) throws Exception {
if (jolokia == null) {
throw new IllegalStateException("Need to connect to remote jolokia first");
}
- return null;
+
+ List<Map<String, String>> answer = new ArrayList<Map<String, String>>();
+
+ ObjectName found = lookupCamelContext(camelContextName);
+ if (found != null) {
+ J4pSearchResponse sr = jolokia.execute(new J4pSearchRequest("*:type=endpoints,*"));
+
+ List<J4pReadRequest> list = new ArrayList<J4pReadRequest>();
+ for (ObjectName on : sr.getObjectNames()) {
+ list.add(new J4pReadRequest(on, "CamelId", "EndpointUri", "State"));
+ }
+
+ List<J4pReadResponse> lrr = jolokia.execute(list);
+ for (J4pReadResponse rr : lrr) {
+ Map<String, String> row = new LinkedHashMap<String, String>();
+ row.put("camelContextName", rr.getValue("CamelId").toString());
+ row.put("uri", rr.getValue("EndpointUri").toString());
+ row.put("state", rr.getValue("State").toString());
+ answer.add(row);
+ }
+ }
+
+ return answer;
}
@Override
- public List<Map<String, String>> getRestServices(String s) throws Exception {
+ public List<Map<String, String>> getRestServices(String camelContextName) throws Exception {
if (jolokia == null) {
throw new IllegalStateException("Need to connect to remote jolokia first");
}
- return null;
+
+ List<Map<String, String>> answer = new ArrayList<Map<String, String>>();
+
+ ObjectName found = lookupCamelContext(camelContextName);
+ if (found != null) {
+ String pattern = String.format("%s:context=%s,type=services,name=DefaultRestRegistry", found.getDomain(), found.getKeyProperty("context"));
+ ObjectName on = ObjectName.getInstance(pattern);
+
+ J4pExecResponse response = jolokia.execute(new J4pExecRequest(on, "listRestServices()"));
+ if (response != null) {
+ JSONObject data = response.asJSONObject();
+ // TODO: parse the open data type
+ }
+
+ /*
+ List<RestRegistry.RestService> services = new ArrayList<RestRegistry.RestService>(context.getRestRegistry().listAllRestServices());
+ Collections.sort(services, new Comparator<RestRegistry.RestService>() {
+ @Override
+ public int compare(RestRegistry.RestService o1, RestRegistry.RestService o2) {
+ return o1.getUrl().compareTo(o2.getUrl());
+ }
+ });
+ for (RestRegistry.RestService service : services) {
+ Map<String, String> row = new LinkedHashMap<String, String>();
+ row.put("basePath", service.getBasePath());
+ row.put("baseUrl", service.getBaseUrl());
+ row.put("consumes", service.getConsumes());
+ row.put("description", service.getDescription());
+ row.put("inType", service.getInType());
+ row.put("method", service.getMethod());
+ row.put("outType", service.getOutType());
+ row.put("produces", service.getProduces());
+ row.put("routeId", service.getRouteId());
+ row.put("state", service.getState());
+ row.put("uriTemplate", service.getUriTemplate());
+ row.put("url", service.getUrl());
+ answer.add(row);
+ }
+ } */
+ }
+
+ return answer;
}
@Override
- public String explainEndpointAsJSon(String s, String s2, boolean b) throws Exception {
+ public String explainEndpointAsJSon(String camelContextName, String uri, boolean allOptions) throws Exception {
if (jolokia == null) {
throw new IllegalStateException("Need to connect to remote jolokia first");
}
+
+ ObjectName found = lookupCamelContext(camelContextName);
+ if (found != null) {
+ J4pExecResponse response = jolokia.execute(new J4pExecRequest(found, "explainEndpointJson(java.lang.String,boolean)", uri, allOptions));
+ if (response != null) {
+ String json = response.getValue();
+ return json;
+ }
+ }
+
return null;
}
@Override
- public List<Map<String, String>> listComponents(String s) throws Exception {
+ public List<Map<String, String>> listComponents(String camelContextName) throws Exception {
if (jolokia == null) {
throw new IllegalStateException("Need to connect to remote jolokia first");
}
+
+ // TODO: implement me
+
return null;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/3636e302/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 86656be..2afc2c2 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
@@ -150,4 +150,31 @@ public class JolokiaRemoteTest {
System.out.println(data);
}
+ @Test
+ public void testGetEndpoints() throws Exception {
+ controller = new JolokiaCamelController();
+ controller.connect(url, null, null);
+
+ List<Map<String, String>> data = controller.getEndpoints("myCamel");
+ System.out.println(data);
+ }
+
+ @Test
+ public void testGetRestServices() throws Exception {
+ controller = new JolokiaCamelController();
+ controller.connect(url, null, null);
+
+ List<Map<String, String>> data = controller.getRestServices("myCamel");
+ System.out.println(data);
+ }
+
+ @Test
+ public void testExplainEndpointJson() throws Exception {
+ controller = new JolokiaCamelController();
+ controller.connect(url, null, null);
+
+ String data = controller.explainEndpointAsJSon("myCamel", "log:foo", true);
+ System.out.println(data);
+ }
+
}