Repository: camel Updated Branches: refs/heads/master 6c643b10b -> 81325f032
CAMEL-7999: Fixed eplainEndpoint/explainEip to include paret details also. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d8be3373 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d8be3373 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d8be3373 Branch: refs/heads/master Commit: d8be3373ea23b345f2303a042f39dcf5cdf2aa17 Parents: 6c643b1 Author: Claus Ibsen <[email protected]> Authored: Thu Jan 22 10:33:21 2015 +0100 Committer: Claus Ibsen <[email protected]> Committed: Thu Jan 22 11:10:50 2015 +0100 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultCamelContext.java | 56 ++++++++---- .../management/ManagedCamelContextTest.java | 93 ++++++++++++++++++-- .../SpringManagedCamelContextTest.xml | 2 +- 3 files changed, 127 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/d8be3373/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index fc4b6a2..9acf65e 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -1370,6 +1370,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon for (Map<String, String> row : rows) { String name = row.get("name"); String kind = row.get("kind"); + String required = row.get("required"); String value = row.get("value"); String defaultValue = row.get("defaultValue"); String type = row.get("type"); @@ -1388,12 +1389,14 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon if (includeAllOptions || o != null) { // add as selected row if (!selected.containsKey(name)) { - selected.put(name, new String[]{name, kind, type, javaType, deprecated, value, defaultValue, description}); + selected.put(name, new String[]{name, kind, required, type, javaType, deprecated, value, defaultValue, description}); } } } - StringBuilder buffer = new StringBuilder("{\n \"properties\": {"); + json = ObjectHelper.before(json, " \"properties\": {"); + + StringBuilder buffer = new StringBuilder(" \"properties\": {"); boolean first = true; for (String[] row : selected.values()) { @@ -1406,12 +1409,13 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon String name = row[0]; String kind = row[1]; - String type = row[2]; - String javaType = row[3]; - String deprecated = row[4]; - String value = row[5]; - String defaultValue = row[6]; - String description = row[7]; + String required = row[2]; + String type = row[3]; + String javaType = row[4]; + String deprecated = row[5]; + String value = row[6]; + String defaultValue = row[7]; + String description = row[8]; // add json of the option buffer.append(doubleQuote(name)).append(": { "); @@ -1419,6 +1423,9 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon if (kind != null) { csb.append("\"kind\": \"" + kind + "\""); } + if (required != null) { + csb.append("\"required\": \"" + required + "\""); + } if (type != null) { csb.append("\"type\": \"" + type + "\""); } @@ -1444,6 +1451,9 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } buffer.append("\n }\n}\n"); + + // insert the original first part of the json into the start of the buffer + buffer.insert(0, json); return buffer.toString(); } @@ -1487,6 +1497,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon // find type and description from the json schema String type = null; String kind = null; + String required = null; String javaType = null; String deprecated = null; String defaultValue = null; @@ -1495,6 +1506,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon if (name.equals(row.get("name"))) { type = row.get("type"); kind = row.get("kind"); + required = row.get("required"); javaType = row.get("javaType"); deprecated = row.get("deprecated"); defaultValue = row.get("defaultValue"); @@ -1504,13 +1516,14 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } // add as selected row - selected.put(name, new String[]{name, kind, type, javaType, deprecated, value, defaultValue, description}); + selected.put(name, new String[]{name, kind, required, type, javaType, deprecated, value, defaultValue, description}); } // include other rows for (Map<String, String> row : rows) { String name = row.get("name"); String kind = row.get("kind"); + String required = row.get("required"); String value = row.get("value"); String defaultValue = row.get("defaultValue"); String type = row.get("type"); @@ -1529,12 +1542,14 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon if (includeAllOptions || "path".equals(kind)) { // add as selected row if (!selected.containsKey(name)) { - selected.put(name, new String[]{name, kind, type, javaType, deprecated, value, defaultValue, description}); + selected.put(name, new String[]{name, kind, required, type, javaType, deprecated, value, defaultValue, description}); } } } - StringBuilder buffer = new StringBuilder("{\n \"properties\": {"); + json = ObjectHelper.before(json, " \"properties\": {"); + + StringBuilder buffer = new StringBuilder(" \"properties\": {"); boolean first = true; for (String[] row : selected.values()) { @@ -1547,12 +1562,13 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon String name = row[0]; String kind = row[1]; - String type = row[2]; - String javaType = row[3]; - String deprecated = row[4]; - String value = row[5]; - String defaultValue = row[6]; - String description = row[7]; + String required = row[2]; + String type = row[3]; + String javaType = row[4]; + String deprecated = row[5]; + String value = row[6]; + String defaultValue = row[7]; + String description = row[8]; // add json of the option buffer.append(doubleQuote(name)).append(": { "); @@ -1560,6 +1576,9 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon if (kind != null) { csb.append("\"kind\": \"" + kind + "\""); } + if (required != null) { + csb.append("\"required\": \"" + required + "\""); + } if (type != null) { csb.append("\"type\": \"" + type + "\""); } @@ -1585,6 +1604,9 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } buffer.append("\n }\n}\n"); + + // insert the original first part of the json into the start of the buffer + buffer.insert(0, json); return buffer.toString(); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/camel/blob/d8be3373/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java index ebf91fb..06463b0 100644 --- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java @@ -230,7 +230,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport { assertTrue(json.contains("{ \"uri\": \"direct://foo\" }")); } - public void testManagedCamelContextExplainEndpointUri() throws Exception { + public void testManagedCamelContextExplainEndpointUriFalse() throws Exception { // JMX tests dont work well on AIX CI servers (hangs them) if (isPlatform("aix")) { return; @@ -244,17 +244,75 @@ public class ManagedCamelContextTest extends ManagementTestSupport { new String[]{"java.lang.String", "boolean"}); assertNotNull(json); - assertEquals(5, StringHelper.countChar(json, '{')); - assertEquals(5, StringHelper.countChar(json, '}')); + assertEquals(7, StringHelper.countChar(json, '{')); + assertEquals(7, StringHelper.countChar(json, '}')); + + assertTrue(json.contains("\"scheme\": \"log\"")); + assertTrue(json.contains("\"description\": \"The Log Component to log message exchanges to the underlying logging mechanism.\"")); + assertTrue(json.contains("\"label\": \"core,monitoring\"")); + assertTrue(json.contains("\"groupDelay\": { \"kind\": \"parameter\", \"type\": \"integer\", \"javaType\": \"java.lang.Long\", \"deprecated\": \"false\", \"value\": \"2000\"," + " \"description\": \"Set the initial delay for stats (in millis)\" },")); assertTrue(json.contains("\"groupSize\": { \"kind\": \"parameter\", \"type\": \"integer\", \"javaType\": \"java.lang.Integer\", \"deprecated\": \"false\", \"value\": \"5\"," + " \"description\": \"An integer that specifies a group size for throughput logging.\" }")); assertTrue(json.contains("\"loggerName\": { \"kind\": \"path\", \"type\": \"string\", \"javaType\": \"java.lang.String\", \"deprecated\": \"false\"," + " \"value\": \"foo\", \"description\": \"The logger name to use\" }")); + // and we should also have the javadoc documentation + assertTrue(json.contains("Set the initial delay for stats (in millis)")); + } + + public void testManagedCamelContextExplainEndpointUriTrue() throws Exception { + // JMX tests dont work well on AIX CI servers (hangs them) + if (isPlatform("aix")) { + return; + } + + MBeanServer mbeanServer = getMBeanServer(); + ObjectName on = ObjectName.getInstance("org.apache.camel:context=19-camel-1,type=context,name=\"camel-1\""); + + // get the json + String json = (String) mbeanServer.invoke(on, "explainEndpointJson", new Object[]{"log:foo?groupDelay=2000&groupSize=5", true}, + new String[]{"java.lang.String", "boolean"}); + assertNotNull(json); + + assertEquals(14, StringHelper.countChar(json, '{')); + assertEquals(14, StringHelper.countChar(json, '}')); + + assertTrue(json.contains("\"scheme\": \"log\"")); + assertTrue(json.contains("\"description\": \"The Log Component to log message exchanges to the underlying logging mechanism.\"")); + assertTrue(json.contains("\"label\": \"core,monitoring\"")); + + assertTrue(json.contains("\"groupDelay\": { \"kind\": \"parameter\", \"type\": \"integer\", \"javaType\": \"java.lang.Long\", \"deprecated\": \"false\", \"value\": \"2000\"," + + " \"description\": \"Set the initial delay for stats (in millis)\" },")); + assertTrue(json.contains("\"groupSize\": { \"kind\": \"parameter\", \"type\": \"integer\", \"javaType\": \"java.lang.Integer\", \"deprecated\": \"false\", \"value\": \"5\"," + + " \"description\": \"An integer that specifies a group size for throughput logging.\" }")); + assertTrue(json.contains("\"loggerName\": { \"kind\": \"path\", \"type\": \"string\", \"javaType\": \"java.lang.String\", \"deprecated\": \"false\"," + + " \"value\": \"foo\", \"description\": \"The logger name to use\" }")); + assertTrue(json.contains("\"marker\": { \"kind\": \"parameter\", \"type\": \"string\", \"javaType\": \"java.lang.String\"")); + // and we should also have the javadoc documentation + assertTrue(json.contains("Set the initial delay for stats (in millis)")); + } + + public void testManagedCamelContextExplainEipFalse() throws Exception { + // JMX tests dont work well on AIX CI servers (hangs them) + if (isPlatform("aix")) { + return; + } + + MBeanServer mbeanServer = getMBeanServer(); + ObjectName on = ObjectName.getInstance("org.apache.camel:context=19-camel-1,type=context,name=\"camel-1\""); + + // get the json + String json = (String) mbeanServer.invoke(on, "explainEipJson", new Object[]{"myTransform", false}, new String[]{"java.lang.String", "boolean"}); + assertNotNull(json); + + assertTrue(json.contains("\"label\": \"eip,transformation\"")); + assertTrue(json.contains("\"expression\": { \"kind\": \"element\", \"required\": \"true\", \"type\": \"object\"")); + // we should see the constant value + assertTrue(json.contains("Bye World")); } - public void testManagedCamelContextExplainEip() throws Exception { + public void testManagedCamelContextExplainEipTrue() throws Exception { // JMX tests dont work well on AIX CI servers (hangs them) if (isPlatform("aix")) { return; @@ -264,11 +322,34 @@ public class ManagedCamelContextTest extends ManagementTestSupport { ObjectName on = ObjectName.getInstance("org.apache.camel:context=19-camel-1,type=context,name=\"camel-1\""); // get the json - String json = (String) mbeanServer.invoke(on, "explainEipJson", new Object[]{"transform", false}, new String[]{"java.lang.String", "boolean"}); + String json = (String) mbeanServer.invoke(on, "explainEipJson", new Object[]{"myTransform", true}, new String[]{"java.lang.String", "boolean"}); assertNotNull(json); assertTrue(json.contains("\"label\": \"eip,transformation\"")); assertTrue(json.contains("\"expression\": { \"kind\": \"element\", \"required\": \"true\", \"type\": \"object\"")); + // and now we have the description option also + assertTrue(json.contains("\"description\": { \"kind\": \"element\", \"required\": \"false\", \"type\": \"object\", \"javaType\"")); + // we should see the constant value + assertTrue(json.contains("Bye World")); + } + + public void testManagedCamelContextExplainEipModel() throws Exception { + // JMX tests dont work well on AIX CI servers (hangs them) + if (isPlatform("aix")) { + return; + } + + MBeanServer mbeanServer = getMBeanServer(); + ObjectName on = ObjectName.getInstance("org.apache.camel:context=19-camel-1,type=context,name=\"camel-1\""); + + // get the json + String json = (String) mbeanServer.invoke(on, "explainEipJson", new Object[]{"aggregate", false}, new String[]{"java.lang.String", "boolean"}); + assertNotNull(json); + + assertTrue(json.contains("\"description\": \"Aggregates many messages into a single message\"")); + assertTrue(json.contains("\"label\": \"eip,routing\"")); + assertTrue(json.contains("\"correlationExpression\": { \"kind\": \"element\", \"required\": \"true\", \"type\": \"object\"")); + assertTrue(json.contains("\"discardOnCompletionTimeout\": { \"kind\": \"attribute\", \"required\": \"false\", \"type\": \"boolean\"")); } @Override @@ -278,7 +359,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport { public void configure() throws Exception { from("direct:start").to("mock:result"); - from("direct:foo").transform(constant("Bye World")); + from("direct:foo").transform(constant("Bye World")).id("myTransform"); } }; } http://git-wip-us.apache.org/repos/asf/camel/blob/d8be3373/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedCamelContextTest.xml ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedCamelContextTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedCamelContextTest.xml index e470ab2..714e410 100644 --- a/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedCamelContextTest.xml +++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedCamelContextTest.xml @@ -30,7 +30,7 @@ </route> <route> <from uri="direct:foo"/> - <transform> + <transform id="myTransform"> <constant>Bye World</constant> </transform> </route>
