You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/12/03 11:11:19 UTC

(camel) branch main updated: CAMEL-20180: camel-console - JSon output for date/time should be computer value (#12297)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 08f8a45ab00 CAMEL-20180: camel-console - JSon output for date/time should be computer value (#12297)
08f8a45ab00 is described below

commit 08f8a45ab005e2d0037ccb9016f938d1b8227f26
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Dec 3 12:11:13 2023 +0100

    CAMEL-20180: camel-console - JSon output for date/time should be computer value (#12297)
---
 .../camel/impl/console/ConsumerDevConsole.java     | 13 ++++++-----
 .../camel/impl/console/ContextDevConsole.java      |  9 +++-----
 .../camel/impl/console/RouteControllerConsole.java | 23 ++++++-------------
 .../apache/camel/impl/console/RouteDevConsole.java | 21 +++++++++--------
 .../ROOT/pages/camel-4x-upgrade-guide-4_3.adoc     | 14 ++++++++++++
 .../commands/action/RouteControllerAction.java     | 22 +++++++++++++-----
 .../core/commands/process/CamelContextStatus.java  | 15 ++++++++-----
 .../commands/process/CamelProcessorStatus.java     | 26 +++++++++++++---------
 .../core/commands/process/CamelRouteStatus.java    | 15 ++++++++-----
 .../jbang/core/commands/process/ListConsumer.java  | 15 ++++++++-----
 10 files changed, 100 insertions(+), 73 deletions(-)

diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java
index 4ff91adab1d..3341c80c43d 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java
@@ -32,7 +32,6 @@ import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.api.management.mbean.ManagedSchedulePollConsumerMBean;
 import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
-import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
 @DevConsole("consumer")
@@ -225,15 +224,17 @@ public class ConsumerDevConsole extends AbstractDevConsole {
                             stats.put("lastProcessingTime", mr.getLastProcessingTime());
                             stats.put("deltaProcessingTime", mr.getDeltaProcessingTime());
                         }
-                        Date last = mr.getLastExchangeCompletedTimestamp();
+                        Date last = mr.getLastExchangeCreatedTimestamp();
                         if (last != null) {
-                            String ago = TimeUtils.printSince(last.getTime());
-                            stats.put("sinceLastCompletedExchange", ago);
+                            stats.put("lastCreatedExchangeTimestamp", last.getTime());
+                        }
+                        last = mr.getLastExchangeCompletedTimestamp();
+                        if (last != null) {
+                            stats.put("lastCompletedExchangeTimestamp", last.getTime());
                         }
                         last = mr.getLastExchangeFailureTimestamp();
                         if (last != null) {
-                            String ago = TimeUtils.printSince(last.getTime());
-                            stats.put("sinceLastFailedExchange", ago);
+                            stats.put("lastFailedExchangeTimestamp", last.getTime());
                         }
                         jo.put("statistics", stats);
                     }
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
index 8d64127d5c8..56712ecd372 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
@@ -154,18 +154,15 @@ public class ContextDevConsole extends AbstractDevConsole {
                 }
                 Date last = mb.getLastExchangeCreatedTimestamp();
                 if (last != null) {
-                    String ago = TimeUtils.printSince(last.getTime());
-                    stats.put("sinceLastCreatedExchange", ago);
+                    stats.put("lastCreatedExchangeTimestamp", last.getTime());
                 }
                 last = mb.getLastExchangeCompletedTimestamp();
                 if (last != null) {
-                    String ago = TimeUtils.printSince(last.getTime());
-                    stats.put("sinceLastCompletedExchange", ago);
+                    stats.put("lastCompletedExchangeTimestamp", last.getTime());
                 }
                 last = mb.getLastExchangeFailureTimestamp();
                 if (last != null) {
-                    String ago = TimeUtils.printSince(last.getTime());
-                    stats.put("sinceLastFailedExchange", ago);
+                    stats.put("lastFailedExchangeTimestamp", last.getTime());
                 }
                 root.put("statistics", stats);
             }
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
index 988cf6a4752..cacfc0c8f86 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
@@ -199,30 +199,21 @@ public class RouteControllerConsole extends AbstractDevConsole {
                 BackOffTimer.Task state = src.getRestartingRouteState(routeId);
                 String supervising = state != null ? state.getStatus().name() : null;
                 long attempts = state != null ? state.getCurrentAttempts() : 0;
-                String elapsed = "";
-                String last = "";
-                String next = "";
+                long elapsed;
+                long last;
+                long next;
                 // we can only track elapsed/time for active supervised routes
-                long time = state != null && BackOffTimer.Task.Status.Active == state.getStatus()
+                elapsed = state != null && BackOffTimer.Task.Status.Active == state.getStatus()
                         ? state.getCurrentElapsedTime() : 0;
-                if (time > 0) {
-                    elapsed = TimeUtils.printDuration(time);
-                }
-                time = state != null && BackOffTimer.Task.Status.Active == state.getStatus() ? state.getLastAttemptTime() : 0;
-                if (time > 0) {
-                    last = TimeUtils.printSince(time);
-                }
-                time = state != null && BackOffTimer.Task.Status.Active == state.getStatus() ? state.getNextAttemptTime() : 0;
-                if (time > 0) {
-                    next = TimeUtils.printSince(time);
-                }
+                last = state != null && BackOffTimer.Task.Status.Active == state.getStatus() ? state.getLastAttemptTime() : 0;
+                next = state != null && BackOffTimer.Task.Status.Active == state.getStatus() ? state.getNextAttemptTime() : 0;
                 JsonObject jo = new JsonObject();
                 list.add(jo);
                 jo.put("routeId", routeId);
                 jo.put("status", status);
                 jo.put("uri", uri);
                 jo.put("attempts", attempts);
-                jo.put("lastAttemptAgo", last);
+                jo.put("lastAttempt", last);
                 jo.put("nextAttempt", next);
                 jo.put("elapsed", elapsed);
                 if (supervising != null) {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
index a166ccb6585..e060fb93607 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
@@ -247,18 +247,15 @@ public class RouteDevConsole extends AbstractDevConsole {
             }
             Date last = mrb.getLastExchangeCreatedTimestamp();
             if (last != null) {
-                String ago = TimeUtils.printSince(last.getTime());
-                stats.put("sinceLastCreatedExchange", ago);
+                stats.put("lastCreatedExchangeTimestamp", last.getTime());
             }
             last = mrb.getLastExchangeCompletedTimestamp();
             if (last != null) {
-                String ago = TimeUtils.printSince(last.getTime());
-                stats.put("sinceLastCompletedExchange", ago);
+                stats.put("lastCompletedExchangeTimestamp", last.getTime());
             }
             last = mrb.getLastExchangeFailureTimestamp();
             if (last != null) {
-                String ago = TimeUtils.printSince(last.getTime());
-                stats.put("sinceLastFailedExchange", ago);
+                stats.put("lastFailedExchangeTimestamp", last.getTime());
             }
             jo.put("statistics", stats);
             if (processors) {
@@ -333,15 +330,17 @@ public class RouteDevConsole extends AbstractDevConsole {
                 stats.put("lastProcessingTime", mp.getLastProcessingTime());
                 stats.put("deltaProcessingTime", mp.getDeltaProcessingTime());
             }
-            Date last = mp.getLastExchangeCompletedTimestamp();
+            Date last = mp.getLastExchangeCreatedTimestamp();
             if (last != null) {
-                String ago = TimeUtils.printSince(last.getTime());
-                stats.put("sinceLastCompletedExchange", ago);
+                stats.put("lastCreatedExchangeTimestamp", last.getTime());
+            }
+            last = mp.getLastExchangeCompletedTimestamp();
+            if (last != null) {
+                stats.put("lastCompletedExchangeTimestamp", last.getTime());
             }
             last = mp.getLastExchangeFailureTimestamp();
             if (last != null) {
-                String ago = TimeUtils.printSince(last.getTime());
-                stats.put("sinceLastFailedExchange", ago);
+                stats.put("lastFailedExchangeTimestamp", last.getTime());
             }
             jo.put("statistics", stats);
         }
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_3.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_3.adoc
index 87d278e8df1..cd0bc5e21e8 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_3.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_3.adoc
@@ -50,6 +50,20 @@ from("seda:c")
 If the `nodeIdPrefix` has been configured on routes, then the MBeans for the processors will now use the prefix
 in their `ObjectName` also.
 
+=== camel-console
+
+The context and route consoles has changed some values in their JSon output data for timestamp for created, completed and failed exchanges.
+
+|===
+|**Old Key** |**New Key**
+| `sinceLastCreatedExchange` | `lastCreatedExchangeTimestamp`
+| `sinceLastCompletedExchange` | `lastCompletedExchangeTimestamp`
+| `sinceLastFailedExchange` | `lastFailedExchangeTimestamp`
+|===
+
+The values are also changed from String ago to timestamp in millis.For example old value `3m5s` is now `1701599263337`.
+
+
 === camel-jbang
 
 The `camel transform` command has been renamed to `camel transform route` as this command is used for transforming
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java
index a1bbb302ef5..08554025b69 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java
@@ -33,6 +33,7 @@ import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
+import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
@@ -130,9 +131,18 @@ public class RouteControllerAction extends ActionWatchCommand {
 
                 if (supervising) {
                     row.attempts = jt.getLong("attempts");
-                    row.lastAttemptAgo = jt.getString("lastAttemptAgo");
-                    row.nextAttempt = jt.getString("nextAttempt");
-                    row.elapsed = jt.getString("elapsed");
+                    long time = jt.getLong("lastAttempt");
+                    if (time > 0) {
+                        row.lastAttempt = TimeUtils.printDuration(time);
+                    }
+                    time = jt.getLong("nextAttempt");
+                    if (time > 0) {
+                        row.nextAttempt = TimeUtils.printDuration(time);
+                    }
+                    time = jt.getLong("elapsed");
+                    if (time > 0) {
+                        row.elapsed = TimeUtils.printDuration(time);
+                    }
                     row.supervising = jt.getString("supervising");
                     row.error = jt.getString("error");
                     row.stackTrace = jt.getCollection("stackTrace");
@@ -280,8 +290,8 @@ public class RouteControllerAction extends ActionWatchCommand {
     }
 
     protected String getLast(Row r) {
-        if (r.lastAttemptAgo != null && !r.lastAttemptAgo.isEmpty()) {
-            String s = r.lastAttemptAgo;
+        if (r.lastAttempt != null && !r.lastAttempt.isEmpty()) {
+            String s = r.lastAttempt;
             if (r.elapsed != null && !r.elapsed.isEmpty()) {
                 s += " (" + r.elapsed + ")";
             }
@@ -295,7 +305,7 @@ public class RouteControllerAction extends ActionWatchCommand {
         String status;
         String uri;
         long attempts;
-        String lastAttemptAgo;
+        String lastAttempt;
         String nextAttempt;
         String elapsed;
         String supervising;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
index c8893cbc072..4344d97a2e4 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
@@ -100,17 +100,20 @@ public class CamelContextStatus extends ProcessWatchCommand {
                             if (last != null) {
                                 row.delta = last.toString();
                             }
-                            last = stats.get("sinceLastCreatedExchange");
+                            last = stats.get("lastCreatedExchangeTimestamp");
                             if (last != null) {
-                                row.sinceLastStarted = last.toString();
+                                long time = Long.parseLong(last.toString());
+                                row.sinceLastStarted = TimeUtils.printSince(time);
                             }
-                            last = stats.get("sinceLastCompletedExchange");
+                            last = stats.get("lastCompletedExchangeTimestamp");
                             if (last != null) {
-                                row.sinceLastCompleted = last.toString();
+                                long time = Long.parseLong(last.toString());
+                                row.sinceLastCompleted = TimeUtils.printSince(time);
                             }
-                            last = stats.get("sinceLastFailedExchange");
+                            last = stats.get("lastFailedExchangeTimestamp");
                             if (last != null) {
-                                row.sinceLastFailed = last.toString();
+                                long time = Long.parseLong(last.toString());
+                                row.sinceLastFailed = TimeUtils.printSince(time);
                             }
                         }
                         JsonArray array = (JsonArray) root.get("routes");
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
index ec9a34e71cf..631c788cc41 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
@@ -29,6 +29,7 @@ import com.github.freva.asciitable.OverflowBehaviour;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.util.StringHelper;
+import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
@@ -121,17 +122,20 @@ public class CamelProcessorStatus extends ProcessWatchCommand {
                                 if (last != null) {
                                     row.delta = last.toString();
                                 }
-                                last = stats.get("sinceLastCreatedExchange");
+                                last = stats.get("lastCreatedExchangeTimestamp");
                                 if (last != null) {
-                                    row.sinceLastStarted = last.toString();
+                                    long time = Long.parseLong(last.toString());
+                                    row.sinceLastStarted = TimeUtils.printSince(time);
                                 }
-                                last = stats.get("sinceLastCompletedExchange");
+                                last = stats.get("lastCompletedExchangeTimestamp");
                                 if (last != null) {
-                                    row.sinceLastCompleted = last.toString();
+                                    long time = Long.parseLong(last.toString());
+                                    row.sinceLastCompleted = TimeUtils.printSince(time);
                                 }
-                                last = stats.get("sinceLastFailedExchange");
+                                last = stats.get("lastFailedExchangeTimestamp");
                                 if (last != null) {
-                                    row.sinceLastFailed = last.toString();
+                                    long time = Long.parseLong(last.toString());
+                                    row.sinceLastFailed = TimeUtils.printSince(time);
                                 }
                             }
 
@@ -194,13 +198,15 @@ public class CamelProcessorStatus extends ProcessWatchCommand {
                 if (last != null) {
                     row.delta = last.toString();
                 }
-                last = stats.get("sinceLastCompletedExchange");
+                last = stats.get("lastCompletedExchangeTimestamp");
                 if (last != null) {
-                    row.sinceLastCompleted = last.toString();
+                    long time = Long.parseLong(last.toString());
+                    row.sinceLastCompleted = TimeUtils.printSince(time);
                 }
-                last = stats.get("sinceLastFailedExchange");
+                last = stats.get("lastFailedExchangeTimestamp");
                 if (last != null) {
-                    row.sinceLastFailed = last.toString();
+                    long time = Long.parseLong(last.toString());
+                    row.sinceLastFailed = TimeUtils.printSince(time);
                 }
             }
             if (source) {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
index 2fcc8f062bb..8d9bc263ae5 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
@@ -137,17 +137,20 @@ public class CamelRouteStatus extends ProcessWatchCommand {
                                 if (last != null) {
                                     row.delta = last.toString();
                                 }
-                                last = stats.get("sinceLastCreatedExchange");
+                                last = stats.get("lastCreatedExchangeTimestamp");
                                 if (last != null) {
-                                    row.sinceLastStarted = last.toString();
+                                    long time = Long.parseLong(last.toString());
+                                    row.sinceLastStarted = TimeUtils.printSince(time);
                                 }
-                                last = stats.get("sinceLastCompletedExchange");
+                                last = stats.get("lastCompletedExchangeTimestamp");
                                 if (last != null) {
-                                    row.sinceLastCompleted = last.toString();
+                                    long time = Long.parseLong(last.toString());
+                                    row.sinceLastCompleted = TimeUtils.printSince(time);
                                 }
-                                last = stats.get("sinceLastFailedExchange");
+                                last = stats.get("lastFailedExchangeTimestamp");
                                 if (last != null) {
-                                    row.sinceLastFailed = last.toString();
+                                    long time = Long.parseLong(last.toString());
+                                    row.sinceLastFailed = TimeUtils.printSince(time);
                                 }
                             }
 
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
index 6121497385d..68f14c369e1 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
@@ -110,17 +110,20 @@ public class ListConsumer extends ProcessWatchCommand {
                                 row.age = TimeUtils.printSince(row.uptime);
                                 Map<String, ?> stats = o.getMap("statistics");
                                 if (stats != null) {
-                                    Object last = stats.get("sinceLastCreatedExchange");
+                                    Object last = stats.get("lastCreatedExchangeTimestamp");
                                     if (last != null) {
-                                        row.sinceLastStarted = last.toString();
+                                        long time = Long.parseLong(last.toString());
+                                        row.sinceLastStarted = TimeUtils.printSince(time);
                                     }
-                                    last = stats.get("sinceLastCompletedExchange");
+                                    last = stats.get("lastCompletedExchangeTimestamp");
                                     if (last != null) {
-                                        row.sinceLastCompleted = last.toString();
+                                        long time = Long.parseLong(last.toString());
+                                        row.sinceLastCompleted = TimeUtils.printSince(time);
                                     }
-                                    last = stats.get("sinceLastFailedExchange");
+                                    last = stats.get("lastFailedExchangeTimestamp");
                                     if (last != null) {
-                                        row.sinceLastFailed = last.toString();
+                                        long time = Long.parseLong(last.toString());
+                                        row.sinceLastFailed = TimeUtils.printSince(time);
                                     }
                                 }
                                 boolean add = true;