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"));
                             }

Reply via email to