CAMEL-8725: explainEndpointJson should order the options according to the given order from the endpoint
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c77d0f1c Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c77d0f1c Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c77d0f1c Branch: refs/heads/camel-2.15.x Commit: c77d0f1c603454e2b0144fe72212c863c01ac57d Parents: 0b9d33f Author: Claus Ibsen <davscl...@apache.org> Authored: Fri May 1 08:28:19 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri May 1 08:28:44 2015 +0200 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultCamelContext.java | 19 +++++++++++++------ .../management/ManagedCamelContextTest.java | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/c77d0f1c/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 a974b8f..99127f2 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 @@ -1667,6 +1667,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon // selected rows to use for answer Map<String, String[]> selected = new LinkedHashMap<String, String[]>(); + Map<String, String[]> uriOptions = new LinkedHashMap<String, String[]>(); // insert values from uri Map<String, Object> options = URISupport.parseParameters(u); @@ -1707,8 +1708,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } } - // add as selected row - selected.put(name, new String[]{name, kind, label, required, type, javaType, deprecated, value, defaultValue, description}); + // remember this option from the uri + uriOptions.put(name, new String[]{name, kind, label, required, type, javaType, deprecated, value, defaultValue, description}); } // include other rows @@ -1731,11 +1732,17 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon value = URISupport.sanitizePath(value); } - // always include path options - if (includeAllOptions || "path".equals(kind)) { - // add as selected row + boolean isUriOption = uriOptions.containsKey(name); + + // always include from uri or path options + if (includeAllOptions || isUriOption || "path".equals(kind)) { if (!selected.containsKey(name)) { - selected.put(name, new String[]{name, kind, label, required, type, javaType, deprecated, value, defaultValue, description}); + // add as selected row, but take the value from uri options if it was from there + if (isUriOption) { + selected.put(name, uriOptions.get(name)); + } else { + selected.put(name, new String[]{name, kind, label, required, type, javaType, deprecated, value, defaultValue, description}); + } } } } http://git-wip-us.apache.org/repos/asf/camel/blob/c77d0f1c/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 c92eead..6d5f948 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 @@ -242,6 +242,11 @@ public class ManagedCamelContextTest extends ManagementTestSupport { new String[]{"java.lang.String", "boolean"}); assertNotNull(json); + // the loggerName option should come before the groupDelay option + int pos = json.indexOf("loggerName"); + int pos2 = json.indexOf("groupDelay"); + assertTrue("LoggerName should come before groupDelay", pos < pos2); + assertEquals(8, StringHelper.countChar(json, '{')); assertEquals(8, StringHelper.countChar(json, '}')); @@ -249,7 +254,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport { 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)\" },")); + + " \"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\", \"required\": \"true\", \"type\": \"string\", \"javaType\": \"java.lang.String\", \"deprecated\": \"false\"," @@ -272,6 +277,11 @@ public class ManagedCamelContextTest extends ManagementTestSupport { new String[]{"java.lang.String", "boolean"}); assertNotNull(json); + // the loggerName option should come before the groupDelay option + int pos = json.indexOf("loggerName"); + int pos2 = json.indexOf("groupDelay"); + assertTrue("LoggerName should come before groupDelay", pos < pos2); + assertEquals(14, StringHelper.countChar(json, '{')); assertEquals(14, StringHelper.countChar(json, '}')); @@ -279,7 +289,7 @@ public class ManagedCamelContextTest extends ManagementTestSupport { 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)\" },")); + + " \"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\", \"required\": \"true\", \"type\": \"string\", \"javaType\": \"java.lang.String\", \"deprecated\": \"false\","