Repository: camel
Updated Branches:
  refs/heads/camel-2.13.x fa6db18be -> 5854ae018
  refs/heads/camel-2.14.x 8b1aee1f4 -> b1fd76db9
  refs/heads/master 28165b61b -> d86c5c427


CAMEL-8044: Camel commands should be more reusable for remote JVMs


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/25fa34d1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/25fa34d1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/25fa34d1

Branch: refs/heads/master
Commit: 25fa34d1d50d7c15ce9dcae3f140c974d96d1617
Parents: 28165b6
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Dec 10 17:53:21 2014 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Dec 10 17:54:41 2014 +0100

----------------------------------------------------------------------
 .../camel/commands/AbstractCamelController.java |  38 +++---
 .../apache/camel/commands/CamelController.java  |   8 +-
 .../camel/commands/EndpointExplainCommand.java  |   2 +-
 .../camel/commands/EndpointListCommand.java     |   2 +-
 .../camel/commands/RestRegistryListCommand.java | 119 ++++++++-----------
 5 files changed, 75 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/25fa34d1/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractCamelController.java
----------------------------------------------------------------------
diff --git 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractCamelController.java
 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractCamelController.java
index 7cec798..96868e5 100644
--- 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractCamelController.java
+++ 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractCamelController.java
@@ -241,8 +241,8 @@ public abstract class AbstractCamelController implements 
CamelController {
         return answer;
     }
 
-    public Map<String, List<RestRegistry.RestService>> getRestServices(String 
camelContextName) {
-        Map<String, List<RestRegistry.RestService>> answer = new 
LinkedHashMap<String, List<RestRegistry.RestService>>();
+    public List<Map<String, String>> getRestServices(String camelContextName) {
+        List<Map<String, String>> answer = new ArrayList<Map<String, 
String>>();
 
         if (camelContextName != null) {
             CamelContext context = this.getCamelContext(camelContextName);
@@ -254,30 +254,28 @@ public abstract class AbstractCamelController implements 
CamelController {
                         return o1.getUrl().compareTo(o2.getUrl());
                     }
                 });
-                if (!services.isEmpty()) {
-                    answer.put(camelContextName, services);
-                }
-            }
-        } else {
-            // already sorted by camel context
-            List<CamelContext> camelContexts = this.getCamelContexts();
-            for (CamelContext camelContext : camelContexts) {
-                List<RestRegistry.RestService> services = new 
ArrayList<RestRegistry.RestService>(camelContext.getRestRegistry().listAllRestServices());
-                Collections.sort(services, new 
Comparator<RestRegistry.RestService>() {
-                    @Override
-                    public int compare(RestRegistry.RestService o1, 
RestRegistry.RestService o2) {
-                        return o1.getUrl().compareTo(o2.getUrl());
-                    }
-                });
-                if (!services.isEmpty()) {
-                    answer.put(camelContext.getName(), services);
+                for (RestRegistry.RestService service : services) {
+                    Map<String, String> row = new LinkedHashMap<String, 
String>();
+                    row.put("basePath", service.getBasePath());
+                    row.put("baseUrl", service.getBaseUrl());
+                    row.put("consumes", service.getConsumes());
+                    row.put("description", service.getDescription());
+                    row.put("inType", service.getInType());
+                    row.put("method", service.getMethod());
+                    row.put("outType", service.getOutType());
+                    row.put("produces", service.getProduces());
+                    row.put("routeId", service.getRouteId());
+                    row.put("state", service.getState());
+                    row.put("uriTemplate", service.getUriTemplate());
+                    row.put("url", service.getUrl());
+                    answer.add(row);
                 }
             }
         }
         return answer;
     }
 
-    public String explainEndpoint(String camelContextName, String uri, boolean 
allOptions) throws Exception {
+    public String explainEndpointAsJSon(String camelContextName, String uri, 
boolean allOptions) throws Exception {
         CamelContext context = this.getCamelContext(camelContextName);
         if (context == null) {
             return null;

http://git-wip-us.apache.org/repos/asf/camel/blob/25fa34d1/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CamelController.java
----------------------------------------------------------------------
diff --git 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CamelController.java
 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CamelController.java
index 1f3759e..881361d 100644
--- 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CamelController.java
+++ 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CamelController.java
@@ -106,12 +106,12 @@ public interface CamelController {
     String getRestModelAsXml(String camelContextName);
 
     /**
-     * Return the REST services
+     * Return the REST services for the given Camel context.
      *
      * @param camelContextName the Camel context.
-     * @return the REST services
+     * @return a list of key/value pairs with REST information
      */
-    Map<String, List<RestRegistry.RestService>> getRestServices(String 
camelContextName);
+    List<Map<String, String>> getRestServices(String camelContextName);
 
     /**
      * Explains an endpoint uri
@@ -122,7 +122,7 @@ public interface CamelController {
      * @return a JSON schema with explanation of the options
      * @throws java.lang.Exception is thrown if error loading resources to 
explain the endpoint
      */
-    String explainEndpoint(String camelContextName, String uri, boolean 
allOptions) throws Exception;
+    String explainEndpointAsJSon(String camelContextName, String uri, boolean 
allOptions) throws Exception;
 
     /**
      * Lists Components which are in use or available on the classpath and 
include information

http://git-wip-us.apache.org/repos/asf/camel/blob/25fa34d1/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointExplainCommand.java
----------------------------------------------------------------------
diff --git 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointExplainCommand.java
 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointExplainCommand.java
index e4ba510..cb65cce 100644
--- 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointExplainCommand.java
+++ 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointExplainCommand.java
@@ -63,7 +63,7 @@ public class EndpointExplainCommand extends 
AbstractCamelCommand {
         }
 
         for (Endpoint endpoint : endpoints) {
-            String json = 
camelController.explainEndpoint(endpoint.getCamelContext().getName(), 
endpoint.getEndpointUri(), verbose);
+            String json = 
camelController.explainEndpointAsJSon(endpoint.getCamelContext().getName(), 
endpoint.getEndpointUri(), verbose);
 
             out.println("Context:\t" + endpoint.getCamelContext().getName());
 

http://git-wip-us.apache.org/repos/asf/camel/blob/25fa34d1/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointListCommand.java
----------------------------------------------------------------------
diff --git 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointListCommand.java
 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointListCommand.java
index badd136..e68cae6 100644
--- 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointListCommand.java
+++ 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/EndpointListCommand.java
@@ -87,7 +87,7 @@ public class EndpointListCommand extends AbstractCamelCommand 
{
 
                 if (explain) {
                     boolean first = true;
-                    String json = 
camelController.explainEndpoint(endpoint.getCamelContext().getName(), 
endpoint.getEndpointUri(), verbose);
+                    String json = 
camelController.explainEndpointAsJSon(endpoint.getCamelContext().getName(), 
endpoint.getEndpointUri(), verbose);
                     // use a basic json parser
                     List<Map<String, String>> options = 
JsonSchemaHelper.parseJsonSchema("properties", json, true);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/25fa34d1/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RestRegistryListCommand.java
----------------------------------------------------------------------
diff --git 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RestRegistryListCommand.java
 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RestRegistryListCommand.java
index 5977a03..6b951de 100644
--- 
a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RestRegistryListCommand.java
+++ 
b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RestRegistryListCommand.java
@@ -22,21 +22,20 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.camel.spi.RestRegistry;
+import org.apache.camel.CamelContext;
 import org.apache.camel.util.URISupport;
 
 /**
  * List the Camel REST services from the Rest registry available in the JVM.
  */
-public class RestRegistryListCommand extends AbstractCamelCommand {
+public class RestRegistryListCommand extends AbstractContextCommand {
 
-    private static final String CONTEXT_COLUMN_LABEL = "Context";
     private static final String URL_COLUMN_NAME = "Url";
     private static final String BASE_PATH_LABEL = "Base Path";
     private static final String URI_TEMPLATE_LABEL = "Uri Template";
     private static final String METHOD_COLUMN_LABEL = "Method";
     private static final String STATE_COLUMN_LABEL = "State";
-    private static final String ROUTE_COLUMN_LABEL = "Route";
+    private static final String ROUTE_COLUMN_LABEL = "Route Id";
 
     private static final int DEFAULT_COLUMN_WIDTH_INCREMENT = 0;
     private static final String DEFAULT_FIELD_PREAMBLE = " ";
@@ -48,19 +47,18 @@ public class RestRegistryListCommand extends 
AbstractCamelCommand {
     private static final int MAX_COLUMN_WIDTH = 120;
     private static final int MIN_COLUMN_WIDTH = 12;
 
-    String name;
     Boolean decode = true;
     Boolean verbose = false;
 
-    public RestRegistryListCommand(String name, Boolean decode, Boolean 
verbose) {
-        this.name = name;
+    public RestRegistryListCommand(String context, Boolean decode, Boolean 
verbose) {
+        super(context);
         this.decode = decode;
         this.verbose = verbose;
     }
 
     @Override
-    public Object execute(CamelController camelController, PrintStream out, 
PrintStream err) throws Exception {
-        Map<String, List<RestRegistry.RestService>> services = 
camelController.getRestServices(name);
+    protected Object performContextCommand(CamelController camelController, 
CamelContext camelContext, PrintStream out, PrintStream err) throws Exception {
+        List<Map<String, String>> services = 
camelController.getRestServices(context);
         if (services.isEmpty()) {
             out.print("There are no REST services");
             return null;
@@ -72,37 +70,32 @@ public class RestRegistryListCommand extends 
AbstractCamelCommand {
 
         if (services.size() > 0) {
             if (verbose) {
-                out.println(String.format(headerFormat, CONTEXT_COLUMN_LABEL, 
URL_COLUMN_NAME, BASE_PATH_LABEL, URI_TEMPLATE_LABEL, METHOD_COLUMN_LABEL, 
STATE_COLUMN_LABEL, ROUTE_COLUMN_LABEL));
-                out.println(String.format(headerFormat, "-------", "---", 
"---------", "------------", "------", "-----", "-----"));
+                out.println(String.format(headerFormat, URL_COLUMN_NAME, 
BASE_PATH_LABEL, URI_TEMPLATE_LABEL, METHOD_COLUMN_LABEL, STATE_COLUMN_LABEL, 
ROUTE_COLUMN_LABEL));
+                out.println(String.format(headerFormat, "---", "---------", 
"------------", "------", "-----", "--------"));
             } else {
-                out.println(String.format(headerFormat, CONTEXT_COLUMN_LABEL, 
BASE_PATH_LABEL, URI_TEMPLATE_LABEL, METHOD_COLUMN_LABEL, STATE_COLUMN_LABEL));
-                out.println(String.format(headerFormat, "-------", 
"---------", "------------", "------", "-----"));
+                out.println(String.format(headerFormat, BASE_PATH_LABEL, 
URI_TEMPLATE_LABEL, METHOD_COLUMN_LABEL, STATE_COLUMN_LABEL));
+                out.println(String.format(headerFormat, "---------", 
"------------", "------", "-----"));
             }
-            for (Map.Entry<String, List<RestRegistry.RestService>> entry : 
services.entrySet()) {
-                String contextName = entry.getKey();
-                for (final RestRegistry.RestService service : 
entry.getValue()) {
-                    String contextId = contextName;
-
-                    String uri = null;
-                    if (verbose) {
-                        uri = service.getUrl();
-                        if (decode == null || decode) {
-                            // decode uri so its more human readable
-                            uri = URLDecoder.decode(uri, "UTF-8");
-                        }
-                        // sanitize and mask uri so we dont see passwords
-                        uri = URISupport.sanitizeUri(uri);
-                    }
-                    String basePath = service.getBasePath();
-                    String uriTemplate = service.getUriTemplate() != null ? 
service.getUriTemplate() : "";
-                    String method = service.getMethod();
-                    String state = service.getState();
-                    String route = service.getRouteId();
-                    if (verbose) {
-                        out.println(String.format(rowFormat, contextId, uri, 
basePath, uriTemplate, method, state, route));
-                    } else {
-                        out.println(String.format(rowFormat, contextId, 
basePath, uriTemplate, method, state));
+            for (Map<String, String> row : services) {
+                String uri = null;
+                if (verbose) {
+                    uri = row.get("url");
+                    if (decode == null || decode) {
+                        // decode uri so its more human readable
+                        uri = URLDecoder.decode(uri, "UTF-8");
                     }
+                    // sanitize and mask uri so we dont see passwords
+                    uri = URISupport.sanitizeUri(uri);
+                }
+                String basePath = row.get("basePath");
+                String uriTemplate = row.get("uriTemplate") != null ? 
row.get("uriTemplate") : "";
+                String method = row.get("method");
+                String state = row.get("state");
+                String route = row.get("routeId");
+                if (verbose) {
+                    out.println(String.format(rowFormat, uri, basePath, 
uriTemplate, method, state, route));
+                } else {
+                    out.println(String.format(rowFormat, basePath, 
uriTemplate, method, state));
                 }
             }
         }
@@ -110,8 +103,7 @@ public class RestRegistryListCommand extends 
AbstractCamelCommand {
         return null;
     }
 
-    private Map<String, Integer> computeColumnWidths(Map<String, 
List<RestRegistry.RestService>> services) throws Exception {
-        int maxContextLen = 0;
+    private Map<String, Integer> computeColumnWidths(List<Map<String, String>> 
services) throws Exception {
         int maxUriLen = 0;
         int maxBasePathLen = 0;
         int maxUriTemplateLen = 0;
@@ -119,39 +111,33 @@ public class RestRegistryListCommand extends 
AbstractCamelCommand {
         int maxStatusLen = 0;
         int maxRouteLen = 0;
 
-        for (Map.Entry<String, List<RestRegistry.RestService>> entry : 
services.entrySet()) {
-            String contextName = entry.getKey();
-            for (final RestRegistry.RestService service : entry.getValue()) {
-                maxContextLen = Math.max(maxContextLen, contextName == null ? 
0 : contextName.length());
-
-                String uri = service.getUrl();
-                if (decode == null || decode) {
-                    // decode uri so its more human readable
-                    uri = URLDecoder.decode(uri, "UTF-8");
-                }
-                // sanitize and mask uri so we dont see passwords
-                uri = URISupport.sanitizeUri(uri);
-                maxUriLen = Math.max(maxUriLen, uri == null ? 0 : 
uri.length());
+        for (Map<String, String> row : services) {
+            String uri = row.get("url");
+            if (decode == null || decode) {
+                // decode uri so its more human readable
+                uri = URLDecoder.decode(uri, "UTF-8");
+            }
+            // sanitize and mask uri so we dont see passwords
+            uri = URISupport.sanitizeUri(uri);
+            maxUriLen = Math.max(maxUriLen, uri == null ? 0 : uri.length());
 
-                String basePath = service.getBasePath();
-                maxBasePathLen = Math.max(maxBasePathLen, basePath == null ? 0 
: basePath.length());
+            String basePath = row.get("basePath");
+            maxBasePathLen = Math.max(maxBasePathLen, basePath == null ? 0 : 
basePath.length());
 
-                String uriTemplate = service.getUriTemplate();
-                maxUriTemplateLen = Math.max(maxUriTemplateLen, uriTemplate == 
null ? 0 : uriTemplate.length());
+            String uriTemplate = row.get("uriTemplate");
+            maxUriTemplateLen = Math.max(maxUriTemplateLen, uriTemplate == 
null ? 0 : uriTemplate.length());
 
-                String method = service.getMethod();
-                maxMethodLen = Math.max(maxMethodLen, method == null ? 0 : 
method.length());
+            String method = row.get("method");
+            maxMethodLen = Math.max(maxMethodLen, method == null ? 0 : 
method.length());
 
-                String status = service.getState();
-                maxStatusLen = Math.max(maxStatusLen, status == null ? 0 : 
status.length());
+            String status = row.get("state");
+            maxStatusLen = Math.max(maxStatusLen, status == null ? 0 : 
status.length());
 
-                String route = service.getRouteId();
-                maxRouteLen = Math.max(maxRouteLen, route == null ? 0 : 
route.length());
-            }
+            String routeId = row.get("routeId");
+            maxRouteLen = Math.max(maxRouteLen, routeId == null ? 0 : 
routeId.length());
         }
 
-        final Map<String, Integer> retval = new Hashtable<String, Integer>(6);
-        retval.put(CONTEXT_COLUMN_LABEL, maxContextLen);
+        final Map<String, Integer> retval = new Hashtable<String, Integer>();
         retval.put(URL_COLUMN_NAME, maxUriLen);
         retval.put(BASE_PATH_LABEL, maxBasePathLen);
         retval.put(URI_TEMPLATE_LABEL, maxUriTemplateLen);
@@ -176,14 +162,12 @@ public class RestRegistryListCommand extends 
AbstractCamelCommand {
         }
         columnWidthIncrement = DEFAULT_COLUMN_WIDTH_INCREMENT;
 
-        int contextLen = Math.min(columnWidths.get(CONTEXT_COLUMN_LABEL) + 
columnWidthIncrement, getMaxColumnWidth());
         int uriLen = Math.min(columnWidths.get(URL_COLUMN_NAME) + 
columnWidthIncrement, getMaxColumnWidth());
         int basePathLen = Math.min(columnWidths.get(BASE_PATH_LABEL) + 
columnWidthIncrement, getMaxColumnWidth());
         int uriTemplateLen = Math.min(columnWidths.get(URI_TEMPLATE_LABEL) + 
columnWidthIncrement, getMaxColumnWidth());
         int methodLen = Math.min(columnWidths.get(METHOD_COLUMN_LABEL) + 
columnWidthIncrement, getMaxColumnWidth());
         int statusLen = Math.min(columnWidths.get(STATE_COLUMN_LABEL) + 
columnWidthIncrement, getMaxColumnWidth());
         int routeLen = Math.min(columnWidths.get(ROUTE_COLUMN_LABEL) + 
columnWidthIncrement, getMaxColumnWidth());
-        contextLen = Math.max(MIN_COLUMN_WIDTH, contextLen);
         basePathLen = Math.max(MIN_COLUMN_WIDTH, basePathLen);
         uriLen = Math.max(MIN_COLUMN_WIDTH, uriLen);
         uriTemplateLen = Math.max(MIN_COLUMN_WIDTH, uriTemplateLen);
@@ -193,7 +177,6 @@ public class RestRegistryListCommand extends 
AbstractCamelCommand {
         // last row does not have min width
 
         final StringBuilder retval = new 
StringBuilder(DEFAULT_FORMAT_BUFFER_LENGTH);
-        
retval.append(fieldPreamble).append("%-").append(contextLen).append('.').append(contextLen).append('s').append(fieldPostamble).append('
 ');
         if (isVerbose) {
             
retval.append(fieldPreamble).append("%-").append(uriLen).append('.').append(uriLen).append('s').append(fieldPostamble).append('
 ');
         }

Reply via email to