CAMEL-7999: Added path kind option to explained options in endpoints. Also grab the value so its shown as well.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a293de58 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a293de58 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a293de58 Branch: refs/heads/master Commit: a293de58df19eca25bfcb8850c973d8eed028705 Parents: dcd0d35 Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Nov 12 15:13:04 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Nov 12 15:13:04 2014 +0100 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultCamelContext.java | 30 +++++++++++++------- .../org/apache/camel/impl/DefaultComponent.java | 13 ++------- .../java/org/apache/camel/util/URISupport.java | 22 ++++++++++++++ .../camel/karaf/commands/EndpointExplain.java | 4 +-- .../camel/karaf/commands/EndpointList.java | 4 +-- 5 files changed, 47 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/a293de58/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 138d69d..7f9fc54 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 @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -1230,18 +1231,25 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon selected.put(name, new String[]{name, kind, type, javaType, value, defaultValue, description}); } - if (includeAllOptions) { - // include other rows - for (Map<String, String> row : rows) { - String name = row.get("name"); - String kind = row.get("kind"); - String value = row.get("value"); - String defaultValue = row.get("defaultValue"); - String type = row.get("type"); - String javaType = row.get("javaType"); + // include other rows + for (Map<String, String> row : rows) { + String name = row.get("name"); + String kind = row.get("kind"); + String value = row.get("value"); + String defaultValue = row.get("defaultValue"); + String type = row.get("type"); + String javaType = row.get("javaType"); + value = URISupport.sanitizePath(value); + String description = row.get("description"); + + if ("path".equals(kind)) { + // if its the path option then we need to grab the actual value from the uri, which is the remainder path + value = URISupport.extractRemainderPath(u, false); value = URISupport.sanitizePath(value); - String description = row.get("description"); + } + // always include path options + if (includeAllOptions || "path".equals(kind)) { // add as selected row if (!selected.containsKey(name)) { selected.put(name, new String[]{name, kind, type, javaType, value, defaultValue, description}); @@ -1269,7 +1277,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon String description = row[6]; // add json of the option - buffer.append(doubleQuote(name) + ": { "); + buffer.append(doubleQuote(name)).append(": { "); CollectionStringBuffer csb = new CollectionStringBuffer(); if (kind != null) { csb.append("\"kind\": \"" + kind + "\""); http://git-wip-us.apache.org/repos/asf/camel/blob/a293de58/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java index bad9b0c..a832e4d 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java @@ -74,22 +74,13 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone // check URI string to the unsafe URI characters String encodedUri = preProcessUri(uri); URI u = new URI(encodedUri); - String path = useRawUri() ? u.getRawSchemeSpecificPart() : u.getSchemeSpecificPart(); - - // lets trim off any query arguments - if (path.startsWith("//")) { - path = path.substring(2); - } - int idx = path.indexOf('?'); - if (idx > -1) { - path = path.substring(0, idx); - } + String path = URISupport.extractRemainderPath(u, useRawUri()); Map<String, Object> parameters; if (useRawUri()) { // when using raw uri then the query is taking from the uri as is String query; - idx = uri.indexOf('?'); + int idx = uri.indexOf('?'); if (idx > -1) { query = uri.substring(idx + 1); } else { http://git-wip-us.apache.org/repos/asf/camel/blob/a293de58/camel-core/src/main/java/org/apache/camel/util/URISupport.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/util/URISupport.java b/camel-core/src/main/java/org/apache/camel/util/URISupport.java index 607f859..894f2ab 100644 --- a/camel-core/src/main/java/org/apache/camel/util/URISupport.java +++ b/camel-core/src/main/java/org/apache/camel/util/URISupport.java @@ -94,6 +94,28 @@ public final class URISupport { } /** + * Extracts the scheme specific path from the URI that is used as the remainder option when creating endpoints. + * + * @param u the URI + * @param useRaw whether to force using raw values + * @return the remainder path + */ + public static String extractRemainderPath(URI u, boolean useRaw) { + String path = useRaw ? u.getRawSchemeSpecificPart() : u.getSchemeSpecificPart(); + + // lets trim off any query arguments + if (path.startsWith("//")) { + path = path.substring(2); + } + int idx = path.indexOf('?'); + if (idx > -1) { + path = path.substring(0, idx); + } + + return path; + } + + /** * Parses the query part of the uri (eg the parameters). * <p/> * The URI parameters will by default be URI encoded. However you can define a parameter http://git-wip-us.apache.org/repos/asf/camel/blob/a293de58/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java ---------------------------------------------------------------------- diff --git a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java index 93bed6b..c950a20 100644 --- a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java +++ b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointExplain.java @@ -89,8 +89,8 @@ public class EndpointExplain extends CamelCommandSupport { Collections.sort(options, new Comparator<Map<String, String>>() { @Override public int compare(Map<String, String> o1, Map<String, String> o2) { - // sort by kind first, then name - int answer = o1.get("kind").compareTo(o2.get("kind")); + // sort by kind first (need to -1 as we want path on top), then name + int answer = -1 * o1.get("kind").compareTo(o2.get("kind")); if (answer == 0) { answer = o1.get("name").compareTo(o2.get("name")); } http://git-wip-us.apache.org/repos/asf/camel/blob/a293de58/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java ---------------------------------------------------------------------- diff --git a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java index 6777df1..d39f2e0 100644 --- a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java +++ b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/EndpointList.java @@ -102,8 +102,8 @@ public class EndpointList extends CamelCommandSupport { Collections.sort(options, new Comparator<Map<String, String>>() { @Override public int compare(Map<String, String> o1, Map<String, String> o2) { - // sort by kind first, then name - int answer = o1.get("kind").compareTo(o2.get("kind")); + // sort by kind first (need to -1 as we want path on top), then name + int answer = -1 * o1.get("kind").compareTo(o2.get("kind")); if (answer == 0) { answer = o1.get("name").compareTo(o2.get("name")); }