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>

Reply via email to