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

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

commit 33f906f0ce53225bb89e4da230473fea9d48a2df
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Aug 31 09:27:29 2024 +0200

    CAMEL-21150: camel-jbang - Make tracer in standby as default
---
 .../apache/camel/impl/console/TraceDevConsole.java | 77 +++++++++++++++++-----
 .../org/apache/camel/main/ProfileConfigurer.java   | 12 ++--
 .../camel/cli/connector/LocalCliConnector.java     | 28 +++++++-
 3 files changed, 94 insertions(+), 23 deletions(-)

diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
index c5de210a50d..f34766bb255 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
@@ -42,6 +42,11 @@ public class TraceDevConsole extends AbstractDevConsole {
      */
     public static final String ENABLED = "enabled";
 
+    /**
+     * Whether to dump trace messages
+     */
+    public static final String DUMP = "dump";
+
     private Queue<BacklogTracerEventMessage> queue;
 
     public TraceDevConsole() {
@@ -67,17 +72,11 @@ public class TraceDevConsole extends AbstractDevConsole {
     protected String doCallText(Map<String, Object> options) {
         StringBuilder sb = new StringBuilder();
         String enabled = (String) options.get(ENABLED);
+        String dump = (String) options.get(DUMP);
 
         BacklogTracer tracer = 
getCamelContext().getCamelContextExtension().getContextPlugin(BacklogTracer.class);
         if (tracer != null) {
-            if ("true".equals(enabled)) {
-                tracer.setEnabled(true);
-                sb.append("Enabled: ").append(tracer.isEnabled()).append("\n");
-            } else if ("false".equals(enabled)) {
-                tracer.setEnabled(false);
-                sb.append("Enabled: ").append(tracer.isEnabled()).append("\n");
-            } else {
-                sb.append("Enabled: ").append(tracer.isEnabled()).append("\n");
+            if (dump != null) {
                 for (BacklogTracerEventMessage t : 
tracer.dumpAllTracedMessages()) {
                     addMessage(t);
                 }
@@ -85,6 +84,32 @@ public class TraceDevConsole extends AbstractDevConsole {
                     String json = t.toJSon(0);
                     sb.append(json).append("\n");
                 }
+            } else {
+                if ("true".equals(enabled)) {
+                    tracer.setEnabled(true);
+                } else if ("false".equals(enabled)) {
+                    tracer.setEnabled(false);
+                }
+                sb.append("Enabled: ").append(tracer.isEnabled()).append("\n");
+                sb.append("Standby: ").append(tracer.isStandby()).append("\n");
+                sb.append("Trace Counter: 
").append(tracer.getTraceCounter()).append("\n");
+                sb.append("Backlog Size: 
").append(tracer.getBacklogSize()).append("\n");
+                sb.append("Queue Size: 
").append(tracer.getQueueSize()).append("\n");
+                sb.append("Remove On Dump: 
").append(tracer.isRemoveOnDump()).append("\n");
+                if (tracer.getTraceFilter() != null) {
+                    sb.append("Trace Filter: 
").append(tracer.getTraceFilter()).append("\n");
+                }
+                if (tracer.getTracePattern() != null) {
+                    sb.append("Trace Pattern: 
").append(tracer.getTracePattern()).append("\n");
+                }
+                sb.append("Trace Rests: 
").append(tracer.isTraceRests()).append("\n");
+                sb.append("Trace Templates: 
").append(tracer.isTraceTemplates()).append("\n");
+                sb.append("Body Max Chars: 
").append(tracer.getBodyMaxChars()).append("\n");
+                sb.append("Body Include Files: 
").append(tracer.isBodyIncludeFiles()).append("\n");
+                sb.append("Body Include Streams: 
").append(tracer.isBodyIncludeStreams()).append("\n");
+                sb.append("Include Exchange Properties: 
").append(tracer.isIncludeExchangeProperties()).append("\n");
+                sb.append("Include Exchange Variables: 
").append(tracer.isIncludeExchangeVariables()).append("\n");
+                sb.append("Include Exception: 
").append(tracer.isIncludeException()).append("\n");
             }
         }
 
@@ -105,20 +130,14 @@ public class TraceDevConsole extends AbstractDevConsole {
     protected JsonObject doCallJson(Map<String, Object> options) {
         JsonObject root = new JsonObject();
         String enabled = (String) options.get(ENABLED);
+        String dump = (String) options.get(DUMP);
 
         BacklogTracer tracer = 
getCamelContext().getCamelContextExtension().getContextPlugin(BacklogTracer.class);
         if (tracer != null) {
-            if ("true".equals(enabled)) {
-                tracer.setEnabled(true);
-                root.put("enabled", tracer.isEnabled());
-            } else if ("false".equals(enabled)) {
-                tracer.setEnabled(false);
-                root.put("enabled", tracer.isEnabled());
-            } else {
+            if (dump != null) {
                 for (BacklogTracerEventMessage t : 
tracer.dumpAllTracedMessages()) {
                     addMessage(t);
                 }
-
                 JsonArray arr = new JsonArray();
                 root.put("enabled", tracer.isEnabled());
                 root.put("traces", arr);
@@ -126,6 +145,32 @@ public class TraceDevConsole extends AbstractDevConsole {
                     JsonObject jo = (JsonObject) t.asJSon();
                     arr.add(jo);
                 }
+            } else {
+                if ("true".equals(enabled)) {
+                    tracer.setEnabled(true);
+                } else if ("false".equals(enabled)) {
+                    tracer.setEnabled(false);
+                }
+                root.put("enabled", tracer.isEnabled());
+                root.put("standby", tracer.isStandby());
+                root.put("counter", tracer.getTraceCounter());
+                root.put("backlogSize", tracer.getBacklogSize());
+                root.put("queueSize", tracer.getQueueSize());
+                root.put("removeOnDump", tracer.isRemoveOnDump());
+                if (tracer.getTraceFilter() != null) {
+                    root.put("traceFilter", tracer.getTraceFilter());
+                }
+                if (tracer.getTracePattern() != null) {
+                    root.put("tracePattern", tracer.getTracePattern());
+                }
+                root.put("traceRests", tracer.isTraceRests());
+                root.put("traceTemplates", tracer.isTraceTemplates());
+                root.put("bodyMaxChars", tracer.getBodyMaxChars());
+                root.put("bodyIncludeFiles", tracer.isBodyIncludeFiles());
+                root.put("bodyIncludeStreams", tracer.isBodyIncludeStreams());
+                root.put("includeExchangeProperties", 
tracer.isIncludeExchangeProperties());
+                root.put("includeExchangeVariables", 
tracer.isIncludeExchangeVariables());
+                root.put("includeException", tracer.isIncludeException());
             }
         }
 
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java 
b/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java
index 3973098923e..0d5d5802274 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java
@@ -44,10 +44,14 @@ public class ProfileConfigurer {
         }
 
         if ("dev".equals(profile)) {
-            boolean standby = config.tracerConfig().isStandby();
-            if (!standby) {
-                // make tracing enabled (if not configured to be standby) and 
limit to not capture too much data
-                config.tracerConfig().withEnabled(true);
+            // make tracing/debugger at least standby so we can use it in 
dev-mode
+            boolean enabled = config.tracerConfig().isEnabled();
+            if (!enabled) {
+                config.tracerConfig().withStandby(true);
+            }
+            enabled = config.debuggerConfig().isEnabled();
+            if (!enabled) {
+                config.debuggerConfig().withStandby(true);
             }
         }
 
diff --git 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index 1620d294c44..62cc3e8257f 100644
--- 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -274,6 +274,8 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
                 doActionBeanTask(root);
             } else if ("kafka".equals(action)) {
                 doActionKafkaTask();
+            } else if ("trace".equals(action)) {
+                doActionTraceTask(root);
             }
         } catch (Exception e) {
             // ignore
@@ -733,6 +735,19 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
         }
     }
 
+    private void doActionTraceTask(JsonObject root) throws IOException {
+        DevConsole dc = 
camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class)
+                .resolveById("trace");
+        if (dc != null) {
+            String enabled = root.getString("enabled");
+            JsonObject json = (JsonObject) dc.call(DevConsole.MediaType.JSON, 
Map.of("enabled", enabled));
+            LOG.trace("Updating output file: {}", outputFile);
+            IOHelper.writeText(json.toJson(), outputFile);
+        } else {
+            IOHelper.writeText("{}", outputFile);
+        }
+    }
+
     private void doActionBeanTask(JsonObject root) throws IOException {
         String filter = root.getStringOrDefault("filter", "");
         String properties = root.getStringOrDefault("properties", "true");
@@ -977,13 +992,20 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
                         root.put("fault-tolerance", json);
                     }
                 }
-                DevConsole dc12a = dcr.resolveById("circuit-breaker");
-                if (dc12a != null) {
-                    JsonObject json = (JsonObject) 
dc12a.call(DevConsole.MediaType.JSON);
+                DevConsole dc12 = dcr.resolveById("circuit-breaker");
+                if (dc12 != null) {
+                    JsonObject json = (JsonObject) 
dc12.call(DevConsole.MediaType.JSON);
                     if (json != null && !json.isEmpty()) {
                         root.put("circuit-breaker", json);
                     }
                 }
+                DevConsole dc13 = dcr.resolveById("trace");
+                if (dc13 != null) {
+                    JsonObject json = (JsonObject) 
dc13.call(DevConsole.MediaType.JSON);
+                    if (json != null && !json.isEmpty()) {
+                        root.put("trace", json);
+                    }
+                }
                 DevConsole dc14 = dcr.resolveById("consumer");
                 if (dc14 != null) {
                     JsonObject json = (JsonObject) 
dc14.call(DevConsole.MediaType.JSON);

Reply via email to