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/05/17 17:10:56 UTC

[camel] branch camel-3.x updated (8be2f35ba7c -> ec740027732)

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

davsclaus pushed a change to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 8be2f35ba7c CAMEL-19360: camel-jbang - Export a set of files
     new 292e9a24959 CAMEL-19362: camel-core - Allow tracing without inner details of Kamelets
     new ec740027732 CAMEL-19362: camel-core - Allow tracing without inner details of Kamelets

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../main/java/org/apache/camel/CamelContext.java   | 25 +++++++++++
 .../src/main/java/org/apache/camel/NamedRoute.java | 10 +++++
 .../java/org/apache/camel/spi/BacklogTracer.java   | 20 +++++++++
 .../camel/spi/BacklogTracerEventMessage.java       | 10 +++++
 .../src/main/java/org/apache/camel/spi/Tracer.java | 26 ++++++++++-
 .../camel/impl/debugger/BacklogDebugger.java       |  5 ++-
 .../apache/camel/impl/debugger/BacklogTracer.java  | 22 +++++++++
 .../debugger/DefaultBacklogTracerEventMessage.java | 19 ++++++++
 .../camel/impl/engine/AbstractCamelContext.java    | 22 +++++++++
 .../camel/impl/engine/CamelInternalProcessor.java  | 52 +++++++++++++++++++---
 .../apache/camel/impl/engine/DefaultChannel.java   |  4 ++
 .../apache/camel/impl/engine/DefaultTracer.java    | 22 +++++++++
 .../camel/impl/engine/SimpleCamelContext.java      |  4 ++
 .../camel/impl/ExtendedCamelContextConfigurer.java | 12 +++++
 .../camel/impl/lw/LightweightCamelContext.java     | 20 +++++++++
 .../impl/lw/LightweightRuntimeCamelContext.java    | 20 +++++++++
 .../org/apache/camel/model/RouteDefinition.java    | 13 ++++++
 .../MainConfigurationPropertiesConfigurer.java     | 12 +++++
 .../camel-main-configuration-metadata.json         |  2 +
 core/camel-main/src/main/docs/main.adoc            |  4 +-
 .../camel/main/DefaultConfigurationConfigurer.java |  2 +
 .../camel/main/DefaultConfigurationProperties.java | 52 ++++++++++++++++++++++
 .../mbean/ManagedBacklogTracerMBean.java           |  6 +++
 .../api/management/mbean/ManagedTracerMBean.java   |  6 +++
 .../management/mbean/ManagedBacklogTracer.java     | 10 +++++
 .../camel/management/mbean/ManagedTracer.java      | 10 +++++
 26 files changed, 398 insertions(+), 12 deletions(-)


[camel] 01/02: CAMEL-19362: camel-core - Allow tracing without inner details of Kamelets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 292e9a2495978ce95c913378e7b4e8c79088fc1a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed May 17 18:34:35 2023 +0200

    CAMEL-19362: camel-core - Allow tracing without inner details of Kamelets
---
 .../main/java/org/apache/camel/CamelContext.java   |  25 ++
 .../src/main/java/org/apache/camel/NamedRoute.java |  10 +
 .../java/org/apache/camel/spi/BacklogTracer.java   |  20 ++
 .../camel/spi/BacklogTracerEventMessage.java       |  10 +
 .../src/main/java/org/apache/camel/spi/Tracer.java |  26 +-
 .../camel/impl/debugger/BacklogDebugger.java       |   5 +-
 .../apache/camel/impl/debugger/BacklogTracer.java  |  22 ++
 .../debugger/DefaultBacklogTracerEventMessage.java |  19 ++
 .../camel/impl/engine/AbstractCamelContext.java    |  22 ++
 .../camel/impl/engine/CamelInternalProcessor.java  |  52 +++-
 .../apache/camel/impl/engine/DefaultChannel.java   |   4 +
 .../apache/camel/impl/engine/DefaultTracer.java    |  22 ++
 .../camel/impl/engine/SimpleCamelContext.java      |   4 +
 ...Configurer.java => CamelContextConfigurer.java} | 314 ++-------------------
 .../camel/impl/ExtendedCamelContextConfigurer.java |  12 +
 .../camel/impl/lw/LightweightCamelContext.java     |  20 ++
 .../impl/lw/LightweightRuntimeCamelContext.java    |  20 ++
 .../org/apache/camel/model/RouteDefinition.java    |  13 +
 .../MainConfigurationPropertiesConfigurer.java     |  12 +
 .../camel-main-configuration-metadata.json         |   2 +
 core/camel-main/src/main/docs/main.adoc            |   4 +-
 .../camel/main/DefaultConfigurationConfigurer.java |   2 +
 .../camel/main/DefaultConfigurationProperties.java |  52 ++++
 .../mbean/ManagedBacklogTracerMBean.java           |   6 +
 .../api/management/mbean/ManagedTracerMBean.java   |   6 +
 .../management/mbean/ManagedBacklogTracer.java     |  10 +
 .../camel/management/mbean/ManagedTracer.java      |  10 +
 27 files changed, 414 insertions(+), 310 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
index bfe62772a47..66c6d3eb62d 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -1227,6 +1227,19 @@ public interface CamelContext extends CamelContextLifecycle, RuntimeConfiguratio
      */
     boolean isBacklogTracingStandby();
 
+    /**
+     * Whether backlog tracing should trace inner details from route templates (or kamelets). Turning this off can
+     * reduce the verbosity of tracing when using many route templates, and allow to focus on tracing your own Camel
+     * routes only.
+     */
+    void setBacklogTracingTemplates(boolean backlogTracingTemplates);
+
+    /**
+     * Whether backlog tracing should trace inner details from route templates (or kamelets). Turning this on increases
+     * the verbosity of tracing by including events from internal routes in the templates or kamelets.
+     */
+    boolean isBacklogTracingTemplates();
+
     /**
      * Gets the current {@link UuidGenerator}
      *
@@ -1401,6 +1414,18 @@ public interface CamelContext extends CamelContextLifecycle, RuntimeConfiguratio
      */
     void setTracingLoggingFormat(String format);
 
+    /**
+     * Whether tracing should trace inner details from route templates (or kamelets). Turning this on increases the
+     * verbosity of tracing by including events from internal routes in the templates or kamelets.
+     */
+    void setTracingTemplates(boolean tracingTemplates);
+
+    /**
+     * Whether tracing should trace inner details from route templates (or kamelets). Turning this off can reduce the
+     * verbosity of tracing when using many route templates, and allow to focus on tracing your own Camel routes only.
+     */
+    boolean isTracingTemplates();
+
     /**
      * If dumping is enabled then Camel will during startup dump all loaded routes (incl rests and route templates)
      * represented as XML DSL into the log. This is intended for trouble shooting or to assist during development.
diff --git a/core/camel-api/src/main/java/org/apache/camel/NamedRoute.java b/core/camel-api/src/main/java/org/apache/camel/NamedRoute.java
index 4d592941f4a..37ff8e86561 100644
--- a/core/camel-api/src/main/java/org/apache/camel/NamedRoute.java
+++ b/core/camel-api/src/main/java/org/apache/camel/NamedRoute.java
@@ -31,6 +31,16 @@ public interface NamedRoute {
      */
     String getEndpointUrl();
 
+    /**
+     * Is the route created from template;
+     */
+    boolean isCreatedFromTemplate();
+
+    /**
+     * Is the route created from Rest DSL
+     */
+    boolean isCreatedFromRest();
+
     /**
      * Gets the route input
      */
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracer.java b/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracer.java
index 044ac2d9066..f937ca57b17 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracer.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracer.java
@@ -99,6 +99,26 @@ public interface BacklogTracer {
      */
     void setBodyIncludeFiles(boolean bodyIncludeFiles);
 
+    /**
+     * Whether to trace routes that is created from Rest DSL.
+     */
+    boolean isTraceRests();
+
+    /**
+     * Whether to trace routes that is created from route templates or kamelets.
+     */
+    void setTraceRests(boolean traceRests);
+
+    /**
+     * Whether to trace routes that is created from route templates or kamelets.
+     */
+    boolean isTraceTemplates();
+
+    /**
+     * Whether to trace routes that is created from route templates or kamelets.
+     */
+    void setTraceTemplates(boolean traceTemplates);
+
     /**
      * Filter for tracing by route or node id
      */
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracerEventMessage.java b/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracerEventMessage.java
index 6b2d66e8a07..99ce9541ed0 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracerEventMessage.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/BacklogTracerEventMessage.java
@@ -41,6 +41,16 @@ public interface BacklogTracerEventMessage {
      */
     String getRouteId();
 
+    /**
+     * Whether this event was from a route that is created from Rest DSL.
+     */
+    boolean isRest();
+
+    /**
+     * Whether this event was from a route that is created from route template or kamelet.
+     */
+    boolean isTemplate();
+
     /**
      * Node id where the message is being routed to
      */
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/Tracer.java b/core/camel-api/src/main/java/org/apache/camel/spi/Tracer.java
index 0aa3329d4b2..f4e6388a135 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/Tracer.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/Tracer.java
@@ -99,7 +99,7 @@ public interface Tracer extends StaticService {
 
     /**
      * Whether the tracer is standby.
-     *
+     * <p>
      * If a tracer is in standby then the tracer is activated during startup and are ready to be enabled manually via
      * JMX or calling the enabled method.
      */
@@ -107,12 +107,34 @@ public interface Tracer extends StaticService {
 
     /**
      * Whether the tracer is standby.
-     *
+     * <p>
      * If a tracer is in standby then the tracer is activated during startup and are ready to be enabled manually via
      * JMX or calling the enabled method.
      */
     void setStandby(boolean standby);
 
+    /**
+     * Whether to trace routes that is created from Rest DSL.
+     */
+    boolean isTraceRests();
+
+    /**
+     * Whether to trace routes that is created from route templates or kamelets.
+     */
+    void setTraceRests(boolean traceRests);
+
+    /**
+     * Whether tracing should trace inner details from route templates (or kamelets). Turning this off can reduce the
+     * verbosity of tracing when using many route templates, and allow to focus on tracing your own Camel routes only.
+     */
+    boolean isTraceTemplates();
+
+    /**
+     * Whether tracing should trace inner details from route templates (or kamelets). Turning this off can reduce the
+     * verbosity of tracing when using many route templates, and allow to focus on tracing your own Camel routes only.
+     */
+    void setTraceTemplates(boolean traceTemplates);
+
     /**
      * Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to*. The pattern
      * matches by node and route id's Multiple patterns can be separated by comma.
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogDebugger.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogDebugger.java
index bc00a4d5590..e9eca7940ba 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogDebugger.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogDebugger.java
@@ -610,6 +610,7 @@ public final class BacklogDebugger extends ServiceSupport {
                 (nId, message) -> new DefaultBacklogTracerEventMessage(
                         message.getUid(), message.getTimestamp(), message.getRouteId(), message.getToNode(),
                         message.getExchangeId(),
+                        false, false,
                         dumpAsXml(suspendedExchange.getExchange()),
                         dumpAsJSon(suspendedExchange.getExchange())));
     }
@@ -670,7 +671,7 @@ public final class BacklogDebugger extends ServiceSupport {
 
             BacklogTracerEventMessage msg
                     = new DefaultBacklogTracerEventMessage(
-                            uid, timestamp, routeId, toNode, exchangeId, messageAsXml, messageAsJSon);
+                            uid, timestamp, routeId, toNode, exchangeId, false, false, messageAsXml, messageAsJSon);
             suspendedBreakpointMessages.put(nodeId, msg);
 
             // suspend at this breakpoint
@@ -738,7 +739,7 @@ public final class BacklogDebugger extends ServiceSupport {
 
             BacklogTracerEventMessage msg
                     = new DefaultBacklogTracerEventMessage(
-                            uid, timestamp, routeId, toNode, exchangeId, messageAsXml, messageAsJSon);
+                            uid, timestamp, routeId, toNode, exchangeId, false, false, messageAsXml, messageAsJSon);
             suspendedBreakpointMessages.put(toNode, msg);
 
             // suspend at this breakpoint
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java
index 6d509e36e4a..e39e23c6640 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java
@@ -60,6 +60,8 @@ public final class BacklogTracer extends ServiceSupport implements org.apache.ca
     private int bodyMaxChars = 128 * 1024;
     private boolean bodyIncludeStreams;
     private boolean bodyIncludeFiles = true;
+    private boolean traceRests;
+    private boolean traceTemplates;
     // a pattern to filter tracing nodes
     private String tracePattern;
     private String[] patterns;
@@ -222,6 +224,26 @@ public final class BacklogTracer extends ServiceSupport implements org.apache.ca
         this.bodyIncludeFiles = bodyIncludeFiles;
     }
 
+    @Override
+    public boolean isTraceRests() {
+        return traceRests;
+    }
+
+    @Override
+    public void setTraceRests(boolean traceRests) {
+        this.traceRests = traceRests;
+    }
+
+    @Override
+    public boolean isTraceTemplates() {
+        return traceTemplates;
+    }
+
+    @Override
+    public void setTraceTemplates(boolean traceTemplates) {
+        this.traceTemplates = traceTemplates;
+    }
+
     @Override
     public String getTracePattern() {
         return tracePattern;
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java
index 2b1a7009eb7..ff51535d881 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java
@@ -34,16 +34,21 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven
     private final String routeId;
     private final String toNode;
     private final String exchangeId;
+    private final boolean rest;
+    private final boolean template;
     private final String messageAsXml;
     private final String messageAsJSon;
 
     public DefaultBacklogTracerEventMessage(long uid, long timestamp, String routeId, String toNode, String exchangeId,
+                                            boolean rest, boolean template,
                                             String messageAsXml, String messageAsJSon) {
         this.uid = uid;
         this.timestamp = timestamp;
         this.routeId = routeId;
         this.toNode = toNode;
         this.exchangeId = exchangeId;
+        this.rest = rest;
+        this.template = template;
         this.messageAsXml = messageAsXml;
         this.messageAsJSon = messageAsJSon;
     }
@@ -63,6 +68,16 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven
         return routeId;
     }
 
+    @Override
+    public boolean isRest() {
+        return rest;
+    }
+
+    @Override
+    public boolean isTemplate() {
+        return template;
+    }
+
     @Override
     public String getToNode() {
         return toNode;
@@ -105,6 +120,8 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven
         StringBuilder sb = new StringBuilder();
         sb.append(prefix).append("<").append(ROOT_TAG).append(">\n");
         sb.append(prefix).append("  <uid>").append(uid).append("</uid>\n");
+        sb.append(prefix).append("  <rest>").append(rest).append("</rest>\n");
+        sb.append(prefix).append("  <template>").append(template).append("</template>\n");
         String ts = new SimpleDateFormat(TIMESTAMP_FORMAT).format(timestamp);
         sb.append(prefix).append("  <timestamp>").append(ts).append("</timestamp>\n");
         // route id is optional and we then use an empty value for no route id
@@ -135,6 +152,8 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven
     public Map<String, Object> asJSon() {
         JsonObject jo = new JsonObject();
         jo.put("uid", uid);
+        jo.put("rest", rest);
+        jo.put("template", template);
         if (routeId != null) {
             jo.put("routeId", routeId);
         }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 80466a5927b..5f62e8bd41f 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -262,8 +262,10 @@ public abstract class AbstractCamelContext extends BaseService
     private Boolean autoStartup = Boolean.TRUE;
     private Boolean backlogTrace = Boolean.FALSE;
     private Boolean backlogTraceStandby = Boolean.FALSE;
+    private Boolean backlogTraceTemplates = Boolean.FALSE;
     private Boolean trace = Boolean.FALSE;
     private Boolean traceStandby = Boolean.FALSE;
+    private Boolean traceTemplates = Boolean.FALSE;
     private String tracePattern;
     private String tracingLoggingFormat;
     private Boolean modeline = Boolean.FALSE;
@@ -4907,6 +4909,26 @@ public abstract class AbstractCamelContext extends BaseService
         return traceStandby != null && traceStandby;
     }
 
+    @Override
+    public void setTracingTemplates(boolean tracingTemplates) {
+        this.traceTemplates = tracingTemplates;
+    }
+
+    @Override
+    public boolean isTracingTemplates() {
+        return traceTemplates != null && traceTemplates;
+    }
+
+    @Override
+    public void setBacklogTracingTemplates(boolean backlogTracingTemplates) {
+        this.backlogTraceTemplates = backlogTracingTemplates;
+    }
+
+    @Override
+    public boolean isBacklogTracingTemplates() {
+        return backlogTraceTemplates != null && backlogTraceTemplates;
+    }
+
     @Override
     public void setBacklogTracingStandby(boolean backlogTracingStandby) {
         this.backlogTraceStandby = backlogTracingStandby;
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index 0ab81f951f0..5347504f47b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -569,6 +569,9 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
         private final NamedNode processorDefinition;
         private final NamedRoute routeDefinition;
         private final boolean first;
+        private final boolean rest;
+        private final boolean template;
+        private final boolean skip;
 
         public BacklogTracerAdvice(BacklogTracer backlogTracer, NamedNode processorDefinition,
                                    NamedRoute routeDefinition, boolean first) {
@@ -576,11 +579,27 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
             this.processorDefinition = processorDefinition;
             this.routeDefinition = routeDefinition;
             this.first = first;
+
+            if (routeDefinition != null) {
+                this.rest = routeDefinition.isCreatedFromRest();
+                this.template = routeDefinition.isCreatedFromTemplate();
+            } else {
+                this.rest = false;
+                this.template = false;
+            }
+            // optimize whether to skip this route or not
+            if (this.rest && !backlogTracer.isTraceRests()) {
+                this.skip = true;
+            } else if (this.template && !backlogTracer.isTraceTemplates()) {
+                this.skip = true;
+            } else {
+                this.skip = false;
+            }
         }
 
         @Override
         public Object before(Exchange exchange) throws Exception {
-            if (backlogTracer.shouldTrace(processorDefinition, exchange)) {
+            if (!skip && backlogTracer.shouldTrace(processorDefinition, exchange)) {
                 long timestamp = System.currentTimeMillis();
                 String toNode = processorDefinition.getId();
                 String exchangeId = exchange.getExchangeId();
@@ -596,13 +615,13 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
                 if (first) {
                     long created = exchange.getCreated();
                     DefaultBacklogTracerEventMessage pseudo = new DefaultBacklogTracerEventMessage(
-                            backlogTracer.incrementTraceCounter(), created, routeId, null, exchangeId, messageAsXml,
-                            messageAsJSon);
+                            backlogTracer.incrementTraceCounter(), created, routeId, null, exchangeId,
+                            rest, template, messageAsXml, messageAsJSon);
                     backlogTracer.traceEvent(pseudo);
                 }
                 DefaultBacklogTracerEventMessage event = new DefaultBacklogTracerEventMessage(
-                        backlogTracer.incrementTraceCounter(), timestamp, routeId, toNode, exchangeId, messageAsXml,
-                        messageAsJSon);
+                        backlogTracer.incrementTraceCounter(), timestamp, routeId, toNode, exchangeId,
+                        rest, template, messageAsXml, messageAsJSon);
                 backlogTracer.traceEvent(event);
             }
 
@@ -1009,6 +1028,9 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
         private final NamedNode processorDefinition;
         private final NamedRoute routeDefinition;
         private final Synchronization tracingAfterRoute;
+        private final boolean rest;
+        private final boolean template;
+        private final boolean skip;
 
         public TracingAdvice(Tracer tracer, NamedNode processorDefinition, NamedRoute routeDefinition, boolean first) {
             this.tracer = tracer;
@@ -1017,11 +1039,27 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
             this.tracingAfterRoute
                     = routeDefinition != null
                             ? new TracingAfterRoute(tracer, routeDefinition.getRouteId(), routeDefinition) : null;
+
+            if (routeDefinition != null) {
+                this.rest = routeDefinition.isCreatedFromRest();
+                this.template = routeDefinition.isCreatedFromTemplate();
+            } else {
+                this.rest = false;
+                this.template = false;
+            }
+            // optimize whether to skip this route or not
+            if (this.rest && !tracer.isTraceRests()) {
+                this.skip = true;
+            } else if (this.template && !tracer.isTraceTemplates()) {
+                this.skip = true;
+            } else {
+                this.skip = false;
+            }
         }
 
         @Override
         public Object before(Exchange exchange) throws Exception {
-            if (tracer.isEnabled()) {
+            if (!skip && tracer.isEnabled()) {
                 if (tracingAfterRoute != null) {
                     // add before route and after route tracing but only once per route, so check if there is already an existing
                     boolean contains = exchange.getUnitOfWork().containsSynchronization(tracingAfterRoute);
@@ -1037,7 +1075,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
 
         @Override
         public void after(Exchange exchange, Object data) throws Exception {
-            if (tracer.isEnabled()) {
+            if (!skip && tracer.isEnabled()) {
                 tracer.traceAfterNode(processorDefinition, exchange);
             }
         }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java
index b7298e274d0..b1d4b626a04 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultChannel.java
@@ -282,6 +282,10 @@ public class DefaultChannel extends CamelInternalProcessor implements Channel {
             tracer = BacklogTracer.createTracer(camelContext);
             tracer.setEnabled(camelContext.isBacklogTracing() != null && camelContext.isBacklogTracing());
             tracer.setStandby(camelContext.isBacklogTracingStandby());
+            // enable both rest/templates if templates is enabled (we only want 1 public option)
+            boolean restOrTemplates = camelContext.isTracingTemplates();
+            tracer.setTraceTemplates(restOrTemplates);
+            tracer.setTraceRests(restOrTemplates);
             camelContext.setExtension(BacklogTracer.class, tracer);
         }
         return tracer;
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
index c41bcf034a7..713dc621811 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
@@ -53,6 +53,8 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
     private CamelContext camelContext;
     private boolean enabled = true;
     private boolean standby;
+    private boolean traceRests;
+    private boolean traceTemplates;
     private long traceCounter;
 
     private ExchangeFormatter exchangeFormatter;
@@ -212,6 +214,26 @@ public class DefaultTracer extends ServiceSupport implements CamelContextAware,
         this.standby = standby;
     }
 
+    @Override
+    public boolean isTraceRests() {
+        return traceRests;
+    }
+
+    @Override
+    public void setTraceRests(boolean traceRests) {
+        this.traceRests = traceRests;
+    }
+
+    @Override
+    public boolean isTraceTemplates() {
+        return traceTemplates;
+    }
+
+    @Override
+    public void setTraceTemplates(boolean traceTemplates) {
+        this.traceTemplates = traceTemplates;
+    }
+
     @Override
     public String getTracePattern() {
         return tracePattern;
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
index 16ddc3a347a..7ad32c54a43 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
@@ -595,6 +595,10 @@ public class SimpleCamelContext extends AbstractCamelContext {
             tracer = new DefaultTracer();
             tracer.setEnabled(isTracing());
             tracer.setStandby(isTracingStandby());
+            // enable both rest/templates if templates is enabled (we only want 1 public option)
+            boolean restOrTemplates = isTracingTemplates();
+            tracer.setTraceTemplates(restOrTemplates);
+            tracer.setTraceRests(restOrTemplates);
             setExtension(Tracer.class, tracer);
         }
         return tracer;
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/CamelContextConfigurer.java
similarity index 50%
copy from core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
copy to core/camel-core-engine/src/generated/java/org/apache/camel/impl/CamelContextConfigurer.java
index 19f5559c032..903b657713f 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/CamelContextConfigurer.java
@@ -9,26 +9,22 @@ import org.apache.camel.spi.PropertyConfigurerGetter;
 import org.apache.camel.spi.ConfigurerStrategy;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
 import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.CamelContext;
 
 /**
  * Generated by camel build tools - do NOT edit this file!
  */
 @SuppressWarnings("unchecked")
-public class ExtendedCamelContextConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+public class CamelContextConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.ExtendedCamelContext target = (org.apache.camel.ExtendedCamelContext) obj;
+        org.apache.camel.CamelContext target = (org.apache.camel.CamelContext) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "allowuseoriginalmessage":
         case "AllowUseOriginalMessage": target.setAllowUseOriginalMessage(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "annotationbasedprocessorfactory":
-        case "AnnotationBasedProcessorFactory": target.setAnnotationBasedProcessorFactory(property(camelContext, org.apache.camel.spi.AnnotationBasedProcessorFactory.class, value)); return true;
         case "applicationcontextclassloader":
         case "ApplicationContextClassLoader": target.setApplicationContextClassLoader(property(camelContext, java.lang.ClassLoader.class, value)); return true;
-        case "asyncprocessorawaitmanager":
-        case "AsyncProcessorAwaitManager": target.setAsyncProcessorAwaitManager(property(camelContext, org.apache.camel.spi.AsyncProcessorAwaitManager.class, value)); return true;
         case "autostartup":
         case "AutoStartup": target.setAutoStartup(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "autowiredenabled":
@@ -37,78 +33,30 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BacklogTracing": target.setBacklogTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "backlogtracingstandby":
         case "BacklogTracingStandby": target.setBacklogTracingStandby(property(camelContext, boolean.class, value)); return true;
-        case "basepackagescan":
-        case "BasePackageScan": target.setBasePackageScan(property(camelContext, java.lang.String.class, value)); return true;
-        case "beanintrospection":
-        case "BeanIntrospection": target.setBeanIntrospection(property(camelContext, org.apache.camel.spi.BeanIntrospection.class, value)); return true;
-        case "beanpostprocessor":
-        case "BeanPostProcessor": target.setBeanPostProcessor(property(camelContext, org.apache.camel.spi.CamelBeanPostProcessor.class, value)); return true;
-        case "bootstrapconfigurerresolver":
-        case "BootstrapConfigurerResolver": target.setBootstrapConfigurerResolver(property(camelContext, org.apache.camel.spi.ConfigurerResolver.class, value)); return true;
-        case "bootstrapfactoryfinder":
-        case "BootstrapFactoryFinder": target.setBootstrapFactoryFinder(property(camelContext, org.apache.camel.spi.FactoryFinder.class, value)); return true;
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": target.setBacklogTracingTemplates(property(camelContext, boolean.class, value)); return true;
         case "caseinsensitiveheaders":
         case "CaseInsensitiveHeaders": target.setCaseInsensitiveHeaders(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "classresolver":
         case "ClassResolver": target.setClassResolver(property(camelContext, org.apache.camel.spi.ClassResolver.class, value)); return true;
-        case "cliconnectorfactory":
-        case "CliConnectorFactory": target.setCliConnectorFactory(property(camelContext, org.apache.camel.spi.CliConnectorFactory.class, value)); return true;
-        case "componentnameresolver":
-        case "ComponentNameResolver": target.setComponentNameResolver(property(camelContext, org.apache.camel.spi.ComponentNameResolver.class, value)); return true;
-        case "componentresolver":
-        case "ComponentResolver": target.setComponentResolver(property(camelContext, org.apache.camel.spi.ComponentResolver.class, value)); return true;
-        case "configurerresolver":
-        case "ConfigurerResolver": target.setConfigurerResolver(property(camelContext, org.apache.camel.spi.ConfigurerResolver.class, value)); return true;
-        case "dataformatresolver":
-        case "DataFormatResolver": target.setDataFormatResolver(property(camelContext, org.apache.camel.spi.DataFormatResolver.class, value)); return true;
         case "debugger":
         case "Debugger": target.setDebugger(property(camelContext, org.apache.camel.spi.Debugger.class, value)); return true;
         case "debugging":
         case "Debugging": target.setDebugging(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "deferservicefactory":
-        case "DeferServiceFactory": target.setDeferServiceFactory(property(camelContext, org.apache.camel.spi.DeferServiceFactory.class, value)); return true;
         case "delayer":
         case "Delayer": target.setDelayer(property(camelContext, java.lang.Long.class, value)); return true;
-        case "dependencyinjectionannotationfactory":
-        case "DependencyInjectionAnnotationFactory": target.setDependencyInjectionAnnotationFactory(property(camelContext, org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory.class, value)); return true;
-        case "description":
-        case "Description": target.setDescription(property(camelContext, java.lang.String.class, value)); return true;
         case "devconsole":
         case "DevConsole": target.setDevConsole(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "devconsoleresolver":
-        case "DevConsoleResolver": target.setDevConsoleResolver(property(camelContext, org.apache.camel.console.DevConsoleResolver.class, value)); return true;
         case "dumproutes":
         case "DumpRoutes": target.setDumpRoutes(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "errorhandlerfactory":
-        case "ErrorHandlerFactory": target.setErrorHandlerFactory(property(camelContext, org.apache.camel.ErrorHandlerFactory.class, value)); return true;
-        case "eventnotificationapplicable":
-        case "EventNotificationApplicable": target.setEventNotificationApplicable(property(camelContext, boolean.class, value)); return true;
-        case "exchangefactory":
-        case "ExchangeFactory": target.setExchangeFactory(property(camelContext, org.apache.camel.spi.ExchangeFactory.class, value)); return true;
-        case "exchangefactorymanager":
-        case "ExchangeFactoryManager": target.setExchangeFactoryManager(property(camelContext, org.apache.camel.spi.ExchangeFactoryManager.class, value)); return true;
         case "executorservicemanager":
         case "ExecutorServiceManager": target.setExecutorServiceManager(property(camelContext, org.apache.camel.spi.ExecutorServiceManager.class, value)); return true;
-        case "factoryfinderresolver":
-        case "FactoryFinderResolver": target.setFactoryFinderResolver(property(camelContext, org.apache.camel.spi.FactoryFinderResolver.class, value)); return true;
         case "globaloptions":
         case "GlobalOptions": target.setGlobalOptions(property(camelContext, java.util.Map.class, value)); return true;
-        case "headersmapfactory":
-        case "HeadersMapFactory": target.setHeadersMapFactory(property(camelContext, org.apache.camel.spi.HeadersMapFactory.class, value)); return true;
-        case "healthcheckresolver":
-        case "HealthCheckResolver": target.setHealthCheckResolver(property(camelContext, org.apache.camel.health.HealthCheckResolver.class, value)); return true;
         case "inflightrepository":
         case "InflightRepository": target.setInflightRepository(property(camelContext, org.apache.camel.spi.InflightRepository.class, value)); return true;
         case "injector":
         case "Injector": target.setInjector(property(camelContext, org.apache.camel.spi.Injector.class, value)); return true;
-        case "interceptendpointfactory":
-        case "InterceptEndpointFactory": target.setInterceptEndpointFactory(property(camelContext, org.apache.camel.spi.InterceptEndpointFactory.class, value)); return true;
-        case "internalprocessorfactory":
-        case "InternalProcessorFactory": target.setInternalProcessorFactory(property(camelContext, org.apache.camel.spi.InternalProcessorFactory.class, value)); return true;
-        case "languageresolver":
-        case "LanguageResolver": target.setLanguageResolver(property(camelContext, org.apache.camel.spi.LanguageResolver.class, value)); return true;
-        case "lightweight":
-        case "Lightweight": target.setLightweight(property(camelContext, boolean.class, value)); return true;
         case "loadhealthchecks":
         case "LoadHealthChecks": target.setLoadHealthChecks(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "loadtypeconverters":
@@ -129,54 +77,18 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "MessageHistory": target.setMessageHistory(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "messagehistoryfactory":
         case "MessageHistoryFactory": target.setMessageHistoryFactory(property(camelContext, org.apache.camel.spi.MessageHistoryFactory.class, value)); return true;
-        case "modeljaxbcontextfactory":
-        case "ModelJAXBContextFactory": target.setModelJAXBContextFactory(property(camelContext, org.apache.camel.spi.ModelJAXBContextFactory.class, value)); return true;
-        case "modeltoxmldumper":
-        case "ModelToXMLDumper": target.setModelToXMLDumper(property(camelContext, org.apache.camel.spi.ModelToXMLDumper.class, value)); return true;
         case "modeline":
         case "Modeline": target.setModeline(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "modelinefactory":
-        case "ModelineFactory": target.setModelineFactory(property(camelContext, org.apache.camel.spi.ModelineFactory.class, value)); return true;
-        case "name":
-        case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
         case "namestrategy":
         case "NameStrategy": target.setNameStrategy(property(camelContext, org.apache.camel.spi.CamelContextNameStrategy.class, value)); return true;
-        case "nodeidfactory":
-        case "NodeIdFactory": target.setNodeIdFactory(property(camelContext, org.apache.camel.spi.NodeIdFactory.class, value)); return true;
-        case "packagescanclassresolver":
-        case "PackageScanClassResolver": target.setPackageScanClassResolver(property(camelContext, org.apache.camel.spi.PackageScanClassResolver.class, value)); return true;
-        case "packagescanresourceresolver":
-        case "PackageScanResourceResolver": target.setPackageScanResourceResolver(property(camelContext, org.apache.camel.spi.PackageScanResourceResolver.class, value)); return true;
-        case "periodtaskresolver":
-        case "PeriodTaskResolver": target.setPeriodTaskResolver(property(camelContext, org.apache.camel.spi.PeriodTaskResolver.class, value)); return true;
-        case "periodtaskscheduler":
-        case "PeriodTaskScheduler": target.setPeriodTaskScheduler(property(camelContext, org.apache.camel.spi.PeriodTaskScheduler.class, value)); return true;
-        case "processorexchangefactory":
-        case "ProcessorExchangeFactory": target.setProcessorExchangeFactory(property(camelContext, org.apache.camel.spi.ProcessorExchangeFactory.class, value)); return true;
-        case "processorfactory":
-        case "ProcessorFactory": target.setProcessorFactory(property(camelContext, org.apache.camel.spi.ProcessorFactory.class, value)); return true;
         case "propertiescomponent":
         case "PropertiesComponent": target.setPropertiesComponent(property(camelContext, org.apache.camel.spi.PropertiesComponent.class, value)); return true;
-        case "reactiveexecutor":
-        case "ReactiveExecutor": target.setReactiveExecutor(property(camelContext, org.apache.camel.spi.ReactiveExecutor.class, value)); return true;
-        case "registry":
-        case "Registry": target.setRegistry(property(camelContext, org.apache.camel.spi.Registry.class, value)); return true;
-        case "resourceloader":
-        case "ResourceLoader": target.setResourceLoader(property(camelContext, org.apache.camel.spi.ResourceLoader.class, value)); return true;
-        case "restbindingjaxbdataformatfactory":
-        case "RestBindingJaxbDataFormatFactory": target.setRestBindingJaxbDataFormatFactory(property(camelContext, org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class, value)); return true;
         case "restconfiguration":
         case "RestConfiguration": target.setRestConfiguration(property(camelContext, org.apache.camel.spi.RestConfiguration.class, value)); return true;
         case "restregistry":
         case "RestRegistry": target.setRestRegistry(property(camelContext, org.apache.camel.spi.RestRegistry.class, value)); return true;
         case "routecontroller":
         case "RouteController": target.setRouteController(property(camelContext, org.apache.camel.spi.RouteController.class, value)); return true;
-        case "routefactory":
-        case "RouteFactory": target.setRouteFactory(property(camelContext, org.apache.camel.spi.RouteFactory.class, value)); return true;
-        case "routesloader":
-        case "RoutesLoader": target.setRoutesLoader(property(camelContext, org.apache.camel.spi.RoutesLoader.class, value)); return true;
-        case "runtimecamelcatalog":
-        case "RuntimeCamelCatalog": target.setRuntimeCamelCatalog(property(camelContext, org.apache.camel.catalog.RuntimeCamelCatalog.class, value)); return true;
         case "runtimeendpointregistry":
         case "RuntimeEndpointRegistry": target.setRuntimeEndpointRegistry(property(camelContext, org.apache.camel.spi.RuntimeEndpointRegistry.class, value)); return true;
         case "sslcontextparameters":
@@ -189,8 +101,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ShutdownStrategy": target.setShutdownStrategy(property(camelContext, org.apache.camel.spi.ShutdownStrategy.class, value)); return true;
         case "sourcelocationenabled":
         case "SourceLocationEnabled": target.setSourceLocationEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "startupsteprecorder":
-        case "StartupStepRecorder": target.setStartupStepRecorder(property(camelContext, org.apache.camel.spi.StartupStepRecorder.class, value)); return true;
         case "startupsummarylevel":
         case "StartupSummaryLevel": target.setStartupSummaryLevel(property(camelContext, org.apache.camel.StartupSummaryLevel.class, value)); return true;
         case "streamcaching":
@@ -207,14 +117,12 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingstandby":
         case "TracingStandby": target.setTracingStandby(property(camelContext, boolean.class, value)); return true;
+        case "tracingtemplates":
+        case "TracingTemplates": target.setTracingTemplates(property(camelContext, boolean.class, value)); return true;
         case "typeconverterregistry":
         case "TypeConverterRegistry": target.setTypeConverterRegistry(property(camelContext, org.apache.camel.spi.TypeConverterRegistry.class, value)); return true;
         case "typeconverterstatisticsenabled":
         case "TypeConverterStatisticsEnabled": target.setTypeConverterStatisticsEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "unitofworkfactory":
-        case "UnitOfWorkFactory": target.setUnitOfWorkFactory(property(camelContext, org.apache.camel.spi.UnitOfWorkFactory.class, value)); return true;
-        case "urifactoryresolver":
-        case "UriFactoryResolver": target.setUriFactoryResolver(property(camelContext, org.apache.camel.spi.UriFactoryResolver.class, value)); return true;
         case "usebreadcrumb":
         case "UseBreadcrumb": target.setUseBreadcrumb(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "usedatatype":
@@ -225,8 +133,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "UuidGenerator": target.setUuidGenerator(property(camelContext, org.apache.camel.spi.UuidGenerator.class, value)); return true;
         case "vaultconfiguration":
         case "VaultConfiguration": target.setVaultConfiguration(property(camelContext, org.apache.camel.vault.VaultConfiguration.class, value)); return true;
-        case "xmlroutesdefinitionloader":
-        case "XMLRoutesDefinitionLoader": target.setXMLRoutesDefinitionLoader(property(camelContext, org.apache.camel.spi.XMLRoutesDefinitionLoader.class, value)); return true;
         default: return false;
         }
     }
@@ -236,12 +142,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "allowuseoriginalmessage":
         case "AllowUseOriginalMessage": return java.lang.Boolean.class;
-        case "annotationbasedprocessorfactory":
-        case "AnnotationBasedProcessorFactory": return org.apache.camel.spi.AnnotationBasedProcessorFactory.class;
         case "applicationcontextclassloader":
         case "ApplicationContextClassLoader": return java.lang.ClassLoader.class;
-        case "asyncprocessorawaitmanager":
-        case "AsyncProcessorAwaitManager": return org.apache.camel.spi.AsyncProcessorAwaitManager.class;
         case "autostartup":
         case "AutoStartup": return java.lang.Boolean.class;
         case "autowiredenabled":
@@ -250,78 +152,30 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BacklogTracing": return java.lang.Boolean.class;
         case "backlogtracingstandby":
         case "BacklogTracingStandby": return boolean.class;
-        case "basepackagescan":
-        case "BasePackageScan": return java.lang.String.class;
-        case "beanintrospection":
-        case "BeanIntrospection": return org.apache.camel.spi.BeanIntrospection.class;
-        case "beanpostprocessor":
-        case "BeanPostProcessor": return org.apache.camel.spi.CamelBeanPostProcessor.class;
-        case "bootstrapconfigurerresolver":
-        case "BootstrapConfigurerResolver": return org.apache.camel.spi.ConfigurerResolver.class;
-        case "bootstrapfactoryfinder":
-        case "BootstrapFactoryFinder": return org.apache.camel.spi.FactoryFinder.class;
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": return boolean.class;
         case "caseinsensitiveheaders":
         case "CaseInsensitiveHeaders": return java.lang.Boolean.class;
         case "classresolver":
         case "ClassResolver": return org.apache.camel.spi.ClassResolver.class;
-        case "cliconnectorfactory":
-        case "CliConnectorFactory": return org.apache.camel.spi.CliConnectorFactory.class;
-        case "componentnameresolver":
-        case "ComponentNameResolver": return org.apache.camel.spi.ComponentNameResolver.class;
-        case "componentresolver":
-        case "ComponentResolver": return org.apache.camel.spi.ComponentResolver.class;
-        case "configurerresolver":
-        case "ConfigurerResolver": return org.apache.camel.spi.ConfigurerResolver.class;
-        case "dataformatresolver":
-        case "DataFormatResolver": return org.apache.camel.spi.DataFormatResolver.class;
         case "debugger":
         case "Debugger": return org.apache.camel.spi.Debugger.class;
         case "debugging":
         case "Debugging": return java.lang.Boolean.class;
-        case "deferservicefactory":
-        case "DeferServiceFactory": return org.apache.camel.spi.DeferServiceFactory.class;
         case "delayer":
         case "Delayer": return java.lang.Long.class;
-        case "dependencyinjectionannotationfactory":
-        case "DependencyInjectionAnnotationFactory": return org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory.class;
-        case "description":
-        case "Description": return java.lang.String.class;
         case "devconsole":
         case "DevConsole": return java.lang.Boolean.class;
-        case "devconsoleresolver":
-        case "DevConsoleResolver": return org.apache.camel.console.DevConsoleResolver.class;
         case "dumproutes":
         case "DumpRoutes": return java.lang.Boolean.class;
-        case "errorhandlerfactory":
-        case "ErrorHandlerFactory": return org.apache.camel.ErrorHandlerFactory.class;
-        case "eventnotificationapplicable":
-        case "EventNotificationApplicable": return boolean.class;
-        case "exchangefactory":
-        case "ExchangeFactory": return org.apache.camel.spi.ExchangeFactory.class;
-        case "exchangefactorymanager":
-        case "ExchangeFactoryManager": return org.apache.camel.spi.ExchangeFactoryManager.class;
         case "executorservicemanager":
         case "ExecutorServiceManager": return org.apache.camel.spi.ExecutorServiceManager.class;
-        case "factoryfinderresolver":
-        case "FactoryFinderResolver": return org.apache.camel.spi.FactoryFinderResolver.class;
         case "globaloptions":
         case "GlobalOptions": return java.util.Map.class;
-        case "headersmapfactory":
-        case "HeadersMapFactory": return org.apache.camel.spi.HeadersMapFactory.class;
-        case "healthcheckresolver":
-        case "HealthCheckResolver": return org.apache.camel.health.HealthCheckResolver.class;
         case "inflightrepository":
         case "InflightRepository": return org.apache.camel.spi.InflightRepository.class;
         case "injector":
         case "Injector": return org.apache.camel.spi.Injector.class;
-        case "interceptendpointfactory":
-        case "InterceptEndpointFactory": return org.apache.camel.spi.InterceptEndpointFactory.class;
-        case "internalprocessorfactory":
-        case "InternalProcessorFactory": return org.apache.camel.spi.InternalProcessorFactory.class;
-        case "languageresolver":
-        case "LanguageResolver": return org.apache.camel.spi.LanguageResolver.class;
-        case "lightweight":
-        case "Lightweight": return boolean.class;
         case "loadhealthchecks":
         case "LoadHealthChecks": return java.lang.Boolean.class;
         case "loadtypeconverters":
@@ -342,54 +196,18 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "MessageHistory": return java.lang.Boolean.class;
         case "messagehistoryfactory":
         case "MessageHistoryFactory": return org.apache.camel.spi.MessageHistoryFactory.class;
-        case "modeljaxbcontextfactory":
-        case "ModelJAXBContextFactory": return org.apache.camel.spi.ModelJAXBContextFactory.class;
-        case "modeltoxmldumper":
-        case "ModelToXMLDumper": return org.apache.camel.spi.ModelToXMLDumper.class;
         case "modeline":
         case "Modeline": return java.lang.Boolean.class;
-        case "modelinefactory":
-        case "ModelineFactory": return org.apache.camel.spi.ModelineFactory.class;
-        case "name":
-        case "Name": return java.lang.String.class;
         case "namestrategy":
         case "NameStrategy": return org.apache.camel.spi.CamelContextNameStrategy.class;
-        case "nodeidfactory":
-        case "NodeIdFactory": return org.apache.camel.spi.NodeIdFactory.class;
-        case "packagescanclassresolver":
-        case "PackageScanClassResolver": return org.apache.camel.spi.PackageScanClassResolver.class;
-        case "packagescanresourceresolver":
-        case "PackageScanResourceResolver": return org.apache.camel.spi.PackageScanResourceResolver.class;
-        case "periodtaskresolver":
-        case "PeriodTaskResolver": return org.apache.camel.spi.PeriodTaskResolver.class;
-        case "periodtaskscheduler":
-        case "PeriodTaskScheduler": return org.apache.camel.spi.PeriodTaskScheduler.class;
-        case "processorexchangefactory":
-        case "ProcessorExchangeFactory": return org.apache.camel.spi.ProcessorExchangeFactory.class;
-        case "processorfactory":
-        case "ProcessorFactory": return org.apache.camel.spi.ProcessorFactory.class;
         case "propertiescomponent":
         case "PropertiesComponent": return org.apache.camel.spi.PropertiesComponent.class;
-        case "reactiveexecutor":
-        case "ReactiveExecutor": return org.apache.camel.spi.ReactiveExecutor.class;
-        case "registry":
-        case "Registry": return org.apache.camel.spi.Registry.class;
-        case "resourceloader":
-        case "ResourceLoader": return org.apache.camel.spi.ResourceLoader.class;
-        case "restbindingjaxbdataformatfactory":
-        case "RestBindingJaxbDataFormatFactory": return org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class;
         case "restconfiguration":
         case "RestConfiguration": return org.apache.camel.spi.RestConfiguration.class;
         case "restregistry":
         case "RestRegistry": return org.apache.camel.spi.RestRegistry.class;
         case "routecontroller":
         case "RouteController": return org.apache.camel.spi.RouteController.class;
-        case "routefactory":
-        case "RouteFactory": return org.apache.camel.spi.RouteFactory.class;
-        case "routesloader":
-        case "RoutesLoader": return org.apache.camel.spi.RoutesLoader.class;
-        case "runtimecamelcatalog":
-        case "RuntimeCamelCatalog": return org.apache.camel.catalog.RuntimeCamelCatalog.class;
         case "runtimeendpointregistry":
         case "RuntimeEndpointRegistry": return org.apache.camel.spi.RuntimeEndpointRegistry.class;
         case "sslcontextparameters":
@@ -402,8 +220,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ShutdownStrategy": return org.apache.camel.spi.ShutdownStrategy.class;
         case "sourcelocationenabled":
         case "SourceLocationEnabled": return java.lang.Boolean.class;
-        case "startupsteprecorder":
-        case "StartupStepRecorder": return org.apache.camel.spi.StartupStepRecorder.class;
         case "startupsummarylevel":
         case "StartupSummaryLevel": return org.apache.camel.StartupSummaryLevel.class;
         case "streamcaching":
@@ -420,14 +236,12 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "TracingPattern": return java.lang.String.class;
         case "tracingstandby":
         case "TracingStandby": return boolean.class;
+        case "tracingtemplates":
+        case "TracingTemplates": return boolean.class;
         case "typeconverterregistry":
         case "TypeConverterRegistry": return org.apache.camel.spi.TypeConverterRegistry.class;
         case "typeconverterstatisticsenabled":
         case "TypeConverterStatisticsEnabled": return java.lang.Boolean.class;
-        case "unitofworkfactory":
-        case "UnitOfWorkFactory": return org.apache.camel.spi.UnitOfWorkFactory.class;
-        case "urifactoryresolver":
-        case "UriFactoryResolver": return org.apache.camel.spi.UriFactoryResolver.class;
         case "usebreadcrumb":
         case "UseBreadcrumb": return java.lang.Boolean.class;
         case "usedatatype":
@@ -438,24 +252,18 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "UuidGenerator": return org.apache.camel.spi.UuidGenerator.class;
         case "vaultconfiguration":
         case "VaultConfiguration": return org.apache.camel.vault.VaultConfiguration.class;
-        case "xmlroutesdefinitionloader":
-        case "XMLRoutesDefinitionLoader": return org.apache.camel.spi.XMLRoutesDefinitionLoader.class;
         default: return null;
         }
     }
 
     @Override
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.ExtendedCamelContext target = (org.apache.camel.ExtendedCamelContext) obj;
+        org.apache.camel.CamelContext target = (org.apache.camel.CamelContext) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "allowuseoriginalmessage":
         case "AllowUseOriginalMessage": return target.isAllowUseOriginalMessage();
-        case "annotationbasedprocessorfactory":
-        case "AnnotationBasedProcessorFactory": return target.getAnnotationBasedProcessorFactory();
         case "applicationcontextclassloader":
         case "ApplicationContextClassLoader": return target.getApplicationContextClassLoader();
-        case "asyncprocessorawaitmanager":
-        case "AsyncProcessorAwaitManager": return target.getAsyncProcessorAwaitManager();
         case "autostartup":
         case "AutoStartup": return target.isAutoStartup();
         case "autowiredenabled":
@@ -464,78 +272,30 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BacklogTracing": return target.isBacklogTracing();
         case "backlogtracingstandby":
         case "BacklogTracingStandby": return target.isBacklogTracingStandby();
-        case "basepackagescan":
-        case "BasePackageScan": return target.getBasePackageScan();
-        case "beanintrospection":
-        case "BeanIntrospection": return target.getBeanIntrospection();
-        case "beanpostprocessor":
-        case "BeanPostProcessor": return target.getBeanPostProcessor();
-        case "bootstrapconfigurerresolver":
-        case "BootstrapConfigurerResolver": return target.getBootstrapConfigurerResolver();
-        case "bootstrapfactoryfinder":
-        case "BootstrapFactoryFinder": return target.getBootstrapFactoryFinder();
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": return target.isBacklogTracingTemplates();
         case "caseinsensitiveheaders":
         case "CaseInsensitiveHeaders": return target.isCaseInsensitiveHeaders();
         case "classresolver":
         case "ClassResolver": return target.getClassResolver();
-        case "cliconnectorfactory":
-        case "CliConnectorFactory": return target.getCliConnectorFactory();
-        case "componentnameresolver":
-        case "ComponentNameResolver": return target.getComponentNameResolver();
-        case "componentresolver":
-        case "ComponentResolver": return target.getComponentResolver();
-        case "configurerresolver":
-        case "ConfigurerResolver": return target.getConfigurerResolver();
-        case "dataformatresolver":
-        case "DataFormatResolver": return target.getDataFormatResolver();
         case "debugger":
         case "Debugger": return target.getDebugger();
         case "debugging":
         case "Debugging": return target.isDebugging();
-        case "deferservicefactory":
-        case "DeferServiceFactory": return target.getDeferServiceFactory();
         case "delayer":
         case "Delayer": return target.getDelayer();
-        case "dependencyinjectionannotationfactory":
-        case "DependencyInjectionAnnotationFactory": return target.getDependencyInjectionAnnotationFactory();
-        case "description":
-        case "Description": return target.getDescription();
         case "devconsole":
         case "DevConsole": return target.isDevConsole();
-        case "devconsoleresolver":
-        case "DevConsoleResolver": return target.getDevConsoleResolver();
         case "dumproutes":
         case "DumpRoutes": return target.isDumpRoutes();
-        case "errorhandlerfactory":
-        case "ErrorHandlerFactory": return target.getErrorHandlerFactory();
-        case "eventnotificationapplicable":
-        case "EventNotificationApplicable": return target.isEventNotificationApplicable();
-        case "exchangefactory":
-        case "ExchangeFactory": return target.getExchangeFactory();
-        case "exchangefactorymanager":
-        case "ExchangeFactoryManager": return target.getExchangeFactoryManager();
         case "executorservicemanager":
         case "ExecutorServiceManager": return target.getExecutorServiceManager();
-        case "factoryfinderresolver":
-        case "FactoryFinderResolver": return target.getFactoryFinderResolver();
         case "globaloptions":
         case "GlobalOptions": return target.getGlobalOptions();
-        case "headersmapfactory":
-        case "HeadersMapFactory": return target.getHeadersMapFactory();
-        case "healthcheckresolver":
-        case "HealthCheckResolver": return target.getHealthCheckResolver();
         case "inflightrepository":
         case "InflightRepository": return target.getInflightRepository();
         case "injector":
         case "Injector": return target.getInjector();
-        case "interceptendpointfactory":
-        case "InterceptEndpointFactory": return target.getInterceptEndpointFactory();
-        case "internalprocessorfactory":
-        case "InternalProcessorFactory": return target.getInternalProcessorFactory();
-        case "languageresolver":
-        case "LanguageResolver": return target.getLanguageResolver();
-        case "lightweight":
-        case "Lightweight": return target.isLightweight();
         case "loadhealthchecks":
         case "LoadHealthChecks": return target.isLoadHealthChecks();
         case "loadtypeconverters":
@@ -556,54 +316,18 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "MessageHistory": return target.isMessageHistory();
         case "messagehistoryfactory":
         case "MessageHistoryFactory": return target.getMessageHistoryFactory();
-        case "modeljaxbcontextfactory":
-        case "ModelJAXBContextFactory": return target.getModelJAXBContextFactory();
-        case "modeltoxmldumper":
-        case "ModelToXMLDumper": return target.getModelToXMLDumper();
         case "modeline":
         case "Modeline": return target.isModeline();
-        case "modelinefactory":
-        case "ModelineFactory": return target.getModelineFactory();
-        case "name":
-        case "Name": return target.getName();
         case "namestrategy":
         case "NameStrategy": return target.getNameStrategy();
-        case "nodeidfactory":
-        case "NodeIdFactory": return target.getNodeIdFactory();
-        case "packagescanclassresolver":
-        case "PackageScanClassResolver": return target.getPackageScanClassResolver();
-        case "packagescanresourceresolver":
-        case "PackageScanResourceResolver": return target.getPackageScanResourceResolver();
-        case "periodtaskresolver":
-        case "PeriodTaskResolver": return target.getPeriodTaskResolver();
-        case "periodtaskscheduler":
-        case "PeriodTaskScheduler": return target.getPeriodTaskScheduler();
-        case "processorexchangefactory":
-        case "ProcessorExchangeFactory": return target.getProcessorExchangeFactory();
-        case "processorfactory":
-        case "ProcessorFactory": return target.getProcessorFactory();
         case "propertiescomponent":
         case "PropertiesComponent": return target.getPropertiesComponent();
-        case "reactiveexecutor":
-        case "ReactiveExecutor": return target.getReactiveExecutor();
-        case "registry":
-        case "Registry": return target.getRegistry();
-        case "resourceloader":
-        case "ResourceLoader": return target.getResourceLoader();
-        case "restbindingjaxbdataformatfactory":
-        case "RestBindingJaxbDataFormatFactory": return target.getRestBindingJaxbDataFormatFactory();
         case "restconfiguration":
         case "RestConfiguration": return target.getRestConfiguration();
         case "restregistry":
         case "RestRegistry": return target.getRestRegistry();
         case "routecontroller":
         case "RouteController": return target.getRouteController();
-        case "routefactory":
-        case "RouteFactory": return target.getRouteFactory();
-        case "routesloader":
-        case "RoutesLoader": return target.getRoutesLoader();
-        case "runtimecamelcatalog":
-        case "RuntimeCamelCatalog": return target.getRuntimeCamelCatalog();
         case "runtimeendpointregistry":
         case "RuntimeEndpointRegistry": return target.getRuntimeEndpointRegistry();
         case "sslcontextparameters":
@@ -616,8 +340,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ShutdownStrategy": return target.getShutdownStrategy();
         case "sourcelocationenabled":
         case "SourceLocationEnabled": return target.isSourceLocationEnabled();
-        case "startupsteprecorder":
-        case "StartupStepRecorder": return target.getStartupStepRecorder();
         case "startupsummarylevel":
         case "StartupSummaryLevel": return target.getStartupSummaryLevel();
         case "streamcaching":
@@ -634,14 +356,12 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "TracingPattern": return target.getTracingPattern();
         case "tracingstandby":
         case "TracingStandby": return target.isTracingStandby();
+        case "tracingtemplates":
+        case "TracingTemplates": return target.isTracingTemplates();
         case "typeconverterregistry":
         case "TypeConverterRegistry": return target.getTypeConverterRegistry();
         case "typeconverterstatisticsenabled":
         case "TypeConverterStatisticsEnabled": return target.isTypeConverterStatisticsEnabled();
-        case "unitofworkfactory":
-        case "UnitOfWorkFactory": return target.getUnitOfWorkFactory();
-        case "urifactoryresolver":
-        case "UriFactoryResolver": return target.getUriFactoryResolver();
         case "usebreadcrumb":
         case "UseBreadcrumb": return target.isUseBreadcrumb();
         case "usedatatype":
@@ -652,8 +372,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "UuidGenerator": return target.getUuidGenerator();
         case "vaultconfiguration":
         case "VaultConfiguration": return target.getVaultConfiguration();
-        case "xmlroutesdefinitionloader":
-        case "XMLRoutesDefinitionLoader": return target.getXMLRoutesDefinitionLoader();
         default: return null;
         }
     }
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index 19f5559c032..87fd1086c9b 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -37,6 +37,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BacklogTracing": target.setBacklogTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "backlogtracingstandby":
         case "BacklogTracingStandby": target.setBacklogTracingStandby(property(camelContext, boolean.class, value)); return true;
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": target.setBacklogTracingTemplates(property(camelContext, boolean.class, value)); return true;
         case "basepackagescan":
         case "BasePackageScan": target.setBasePackageScan(property(camelContext, java.lang.String.class, value)); return true;
         case "beanintrospection":
@@ -207,6 +209,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingstandby":
         case "TracingStandby": target.setTracingStandby(property(camelContext, boolean.class, value)); return true;
+        case "tracingtemplates":
+        case "TracingTemplates": target.setTracingTemplates(property(camelContext, boolean.class, value)); return true;
         case "typeconverterregistry":
         case "TypeConverterRegistry": target.setTypeConverterRegistry(property(camelContext, org.apache.camel.spi.TypeConverterRegistry.class, value)); return true;
         case "typeconverterstatisticsenabled":
@@ -250,6 +254,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BacklogTracing": return java.lang.Boolean.class;
         case "backlogtracingstandby":
         case "BacklogTracingStandby": return boolean.class;
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": return boolean.class;
         case "basepackagescan":
         case "BasePackageScan": return java.lang.String.class;
         case "beanintrospection":
@@ -420,6 +426,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "TracingPattern": return java.lang.String.class;
         case "tracingstandby":
         case "TracingStandby": return boolean.class;
+        case "tracingtemplates":
+        case "TracingTemplates": return boolean.class;
         case "typeconverterregistry":
         case "TypeConverterRegistry": return org.apache.camel.spi.TypeConverterRegistry.class;
         case "typeconverterstatisticsenabled":
@@ -464,6 +472,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "BacklogTracing": return target.isBacklogTracing();
         case "backlogtracingstandby":
         case "BacklogTracingStandby": return target.isBacklogTracingStandby();
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": return target.isBacklogTracingTemplates();
         case "basepackagescan":
         case "BasePackageScan": return target.getBasePackageScan();
         case "beanintrospection":
@@ -634,6 +644,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "TracingPattern": return target.getTracingPattern();
         case "tracingstandby":
         case "TracingStandby": return target.isTracingStandby();
+        case "tracingtemplates":
+        case "TracingTemplates": return target.isTracingTemplates();
         case "typeconverterregistry":
         case "TypeConverterRegistry": return target.getTypeConverterRegistry();
         case "typeconverterstatisticsenabled":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
index bf3776ab6e3..457ad659279 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
@@ -906,6 +906,26 @@ public class LightweightCamelContext implements ExtendedCamelContext, CatalogCam
         return delegate.isBacklogTracingStandby();
     }
 
+    @Override
+    public void setBacklogTracingTemplates(boolean backlogTracingTemplates) {
+        delegate.setBacklogTracingTemplates(backlogTracingTemplates);
+    }
+
+    @Override
+    public boolean isBacklogTracingTemplates() {
+        return delegate.isBacklogTracingTemplates();
+    }
+
+    @Override
+    public void setTracingTemplates(boolean tracingTemplates) {
+        delegate.setTracingTemplates(tracingTemplates);
+    }
+
+    @Override
+    public boolean isTracingTemplates() {
+        return delegate.isTracingTemplates();
+    }
+
     @Override
     public UuidGenerator getUuidGenerator() {
         return delegate.getUuidGenerator();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index c8781b608c0..eba62abb359 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -442,6 +442,26 @@ public class LightweightRuntimeCamelContext implements ExtendedCamelContext, Cat
         throw new UnsupportedOperationException();
     }
 
+    @Override
+    public void setBacklogTracingTemplates(boolean backlogTracingTemplates) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isBacklogTracingTemplates() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setTracingTemplates(boolean tracingTemplates) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isTracingTemplates() {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public Boolean isDebugging() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
index bc72d9543ed..c370f0ec611 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -1128,6 +1128,9 @@ public class RouteDefinition extends OutputDefinition<RouteDefinition>
         this.errorHandlerFactory = errorHandlerFactory;
     }
 
+    /**
+     * This route is created from REST DSL
+     */
     public void setRest(Boolean rest) {
         this.rest = rest;
     }
@@ -1206,6 +1209,16 @@ public class RouteDefinition extends OutputDefinition<RouteDefinition>
         this.routeProperties = routeProperties;
     }
 
+    @Override
+    public boolean isCreatedFromTemplate() {
+        return template != null && template;
+    }
+
+    @Override
+    public boolean isCreatedFromRest() {
+        return rest != null && rest;
+    }
+
     // ****************************
     // Static helpers
     // ****************************
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
index a29498b6ce3..ec85a870243 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
@@ -41,6 +41,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "BacklogTracing": target.setBacklogTracing(property(camelContext, boolean.class, value)); return true;
         case "backlogtracingstandby":
         case "BacklogTracingStandby": target.setBacklogTracingStandby(property(camelContext, boolean.class, value)); return true;
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": target.setBacklogTracingTemplates(property(camelContext, boolean.class, value)); return true;
         case "basepackagescan":
         case "BasePackageScan": target.setBasePackageScan(property(camelContext, java.lang.String.class, value)); return true;
         case "basepackagescanenabled":
@@ -245,6 +247,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
         case "tracingstandby":
         case "TracingStandby": target.setTracingStandby(property(camelContext, boolean.class, value)); return true;
+        case "tracingtemplates":
+        case "TracingTemplates": target.setTracingTemplates(property(camelContext, boolean.class, value)); return true;
         case "typeconverterstatisticsenabled":
         case "TypeConverterStatisticsEnabled": target.setTypeConverterStatisticsEnabled(property(camelContext, boolean.class, value)); return true;
         case "usebreadcrumb":
@@ -282,6 +286,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "BacklogTracing": return boolean.class;
         case "backlogtracingstandby":
         case "BacklogTracingStandby": return boolean.class;
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": return boolean.class;
         case "basepackagescan":
         case "BasePackageScan": return java.lang.String.class;
         case "basepackagescanenabled":
@@ -486,6 +492,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "TracingPattern": return java.lang.String.class;
         case "tracingstandby":
         case "TracingStandby": return boolean.class;
+        case "tracingtemplates":
+        case "TracingTemplates": return boolean.class;
         case "typeconverterstatisticsenabled":
         case "TypeConverterStatisticsEnabled": return boolean.class;
         case "usebreadcrumb":
@@ -524,6 +532,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "BacklogTracing": return target.isBacklogTracing();
         case "backlogtracingstandby":
         case "BacklogTracingStandby": return target.isBacklogTracingStandby();
+        case "backlogtracingtemplates":
+        case "BacklogTracingTemplates": return target.isBacklogTracingTemplates();
         case "basepackagescan":
         case "BasePackageScan": return target.getBasePackageScan();
         case "basepackagescanenabled":
@@ -728,6 +738,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "TracingPattern": return target.getTracingPattern();
         case "tracingstandby":
         case "TracingStandby": return target.isTracingStandby();
+        case "tracingtemplates":
+        case "TracingTemplates": return target.isTracingTemplates();
         case "typeconverterstatisticsenabled":
         case "TypeConverterStatisticsEnabled": return target.isTypeConverterStatisticsEnabled();
         case "usebreadcrumb":
diff --git a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index 838acd24073..89497d39597 100644
--- a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -22,6 +22,7 @@
     { "name": "camel.main.autowiredEnabled", "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. Default is true.", "sourceType": "org.apache.camel.main.DefaultConfiguration [...]
     { "name": "camel.main.backlogTracing", "description": "Sets whether backlog tracing is enabled or not. Default is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.backlogTracingStandby", "description": "Whether to set backlog tracing on standby. If on standby then the backlog tracer is installed and made available. Then the backlog tracer can be enabled later at runtime via JMX or via Java API. Default is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
+    { "name": "camel.main.backlogTracingTemplates", "description": "Whether backlog tracing should trace inner details from route templates (or kamelets). Turning this on increases the verbosity of tracing by including events from internal routes in the templates or kamelets. Default is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.basePackageScan", "description": "Package name to use as base (offset) for classpath scanning of RouteBuilder , and org.apache.camel.TypeConverter classes. If you are using Spring Boot then it is instead recommended to use Spring Boots component scanning and annotate your route builder classes with Component. In other words only use this for Camel Main in standalone mode.", "sourceType": "org.apache.camel.main.MainConfigurationProperties", "type": "string", "jav [...]
     { "name": "camel.main.basePackageScanEnabled", "description": "Whether base package scan is enabled.", "sourceType": "org.apache.camel.main.MainConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": true },
     { "name": "camel.main.beanIntrospectionExtendedStatistics", "description": "Sets whether bean introspection uses extended statistics. The default is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
@@ -124,6 +125,7 @@
     { "name": "camel.main.tracingLoggingFormat", "description": "To use a custom tracing logging format. The default format (arrow, routeId, label) is: %-4.4s %-12.12s %-33.33s", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "string", "javaType": "java.lang.String", "defaultValue": "%-4.4s [%-12.12s] [%-33.33s]" },
     { "name": "camel.main.tracingPattern", "description": "Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to. The pattern matches by node and route id's Multiple patterns can be separated by comma.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.main.tracingStandby", "description": "Whether to set tracing on standby. If on standby then the tracer is installed and made available. Then the tracer can be enabled later at runtime via JMX or via Tracer#setEnabled(boolean) .", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
+    { "name": "camel.main.tracingTemplates", "description": "Whether tracing should trace inner details from route templates (or kamelets). Turning this on increases the verbosity of tracing by including events from internal routes in the templates or kamelets. Default is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.typeConverterStatisticsEnabled", "description": "Sets whether type converter statistics is enabled. By default the type converter utilization statistics is disabled. Notice: If enabled then there is a slight performance impact under very heavy load.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.useBreadcrumb", "description": "Set whether breadcrumb is enabled. The default value is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.main.useDataType", "description": "Whether to enable using data type on Camel messages. Data type are automatic turned on if one ore more routes has been explicit configured with input and output types. Otherwise data type is default off.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
diff --git a/core/camel-main/src/main/docs/main.adoc b/core/camel-main/src/main/docs/main.adoc
index 866f53f85c7..c6e802a04fa 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -18,7 +18,7 @@ The following tables lists all the options:
 
 // main options: START
 === Camel Main configurations
-The camel.main supports 117 options, which are listed below.
+The camel.main supports 119 options, which are listed below.
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
@@ -33,6 +33,7 @@ The camel.main supports 117 options, which are listed below.
 | *camel.main.autowiredEnabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. Default is true. | true | boolean
 | *camel.main.backlogTracing* | Sets whether backlog tracing is enabled or not. Default is false. | false | boolean
 | *camel.main.backlogTracing{zwsp}Standby* | Whether to set backlog tracing on standby. If on standby then the backlog tracer is installed and made available. Then the backlog tracer can be enabled later at runtime via JMX or via Java API. Default is false. | false | boolean
+| *camel.main.backlogTracing{zwsp}Templates* | Whether backlog tracing should trace inner details from route templates (or kamelets). Turning this on increases the verbosity of tracing by including events from internal routes in the templates or kamelets. Default is false. | false | boolean
 | *camel.main.basePackageScan* | Package name to use as base (offset) for classpath scanning of RouteBuilder , and org.apache.camel.TypeConverter classes. If you are using Spring Boot then it is instead recommended to use Spring Boots component scanning and annotate your route builder classes with Component. In other words only use this for Camel Main in standalone mode. |  | String
 | *camel.main.basePackageScan{zwsp}Enabled* | Whether base package scan is enabled. | true | boolean
 | *camel.main.beanIntrospection{zwsp}ExtendedStatistics* | Sets whether bean introspection uses extended statistics. The default is false. | false | boolean
@@ -135,6 +136,7 @@ The camel.main supports 117 options, which are listed below.
 | *camel.main.tracingLogging{zwsp}Format* | To use a custom tracing logging format. The default format (arrow, routeId, label) is: %-4.4s %-12.12s %-33.33s | %-4.4s [%-12.12s] [%-33.33s] | String
 | *camel.main.tracingPattern* | Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to. The pattern matches by node and route id's Multiple patterns can be separated by comma. |  | String
 | *camel.main.tracingStandby* | Whether to set tracing on standby. If on standby then the tracer is installed and made available. Then the tracer can be enabled later at runtime via JMX or via Tracer#setEnabled(boolean) . | false | boolean
+| *camel.main.tracingTemplates* | Whether tracing should trace inner details from route templates (or kamelets). Turning this on increases the verbosity of tracing by including events from internal routes in the templates or kamelets. Default is false. | false | boolean
 | *camel.main.typeConverter{zwsp}StatisticsEnabled* | Sets whether type converter statistics is enabled. By default the type converter utilization statistics is disabled. Notice: If enabled then there is a slight performance impact under very heavy load. | false | boolean
 | *camel.main.useBreadcrumb* | Set whether breadcrumb is enabled. The default value is false. | false | boolean
 | *camel.main.useDataType* | Whether to enable using data type on Camel messages. Data type are automatic turned on if one ore more routes has been explicit configured with input and output types. Otherwise data type is default off. | false | boolean
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index 3f53dfa2ed3..f3470ddc7d2 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -300,10 +300,12 @@ public final class DefaultConfigurationConfigurer {
 
         camelContext.setBacklogTracing(config.isBacklogTracing());
         camelContext.setBacklogTracingStandby(config.isBacklogTracingStandby());
+        camelContext.setBacklogTracingTemplates(config.isBacklogTracingTemplates());
         camelContext.setTracing(config.isTracing());
         camelContext.setTracingStandby(config.isTracingStandby());
         camelContext.setTracingPattern(config.getTracingPattern());
         camelContext.setTracingLoggingFormat(config.getTracingLoggingFormat());
+        camelContext.setTracingTemplates(config.isTracingTemplates());
 
         if (config.getThreadNamePattern() != null) {
             camelContext.getExecutorServiceManager().setThreadNamePattern(config.getThreadNamePattern());
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
index cc1132b6264..37bc3b82a11 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
@@ -72,9 +72,11 @@ public abstract class DefaultConfigurationProperties<T> {
     private boolean debugging;
     private boolean backlogTracing;
     private boolean backlogTracingStandby;
+    private boolean backlogTracingTemplates;
     private boolean typeConverterStatisticsEnabled;
     private boolean tracing;
     private boolean tracingStandby;
+    private boolean tracingTemplates;
     private String tracingPattern;
     @Metadata(defaultValue = "%-4.4s [%-12.12s] [%-33.33s]")
     private String tracingLoggingFormat;
@@ -625,6 +627,20 @@ public abstract class DefaultConfigurationProperties<T> {
         this.tracingStandby = tracingStandby;
     }
 
+    public boolean isTracingTemplates() {
+        return tracingTemplates;
+    }
+
+    /**
+     * Whether tracing should trace inner details from route templates (or kamelets). Turning this on increases the
+     * verbosity of tracing by including events from internal routes in the templates or kamelets.
+     *
+     * Default is false.
+     */
+    public void setTracingTemplates(boolean tracingTemplates) {
+        this.tracingTemplates = tracingTemplates;
+    }
+
     public String getTracingPattern() {
         return tracingPattern;
     }
@@ -690,6 +706,20 @@ public abstract class DefaultConfigurationProperties<T> {
         this.backlogTracingStandby = backlogTracingStandby;
     }
 
+    public boolean isBacklogTracingTemplates() {
+        return backlogTracingTemplates;
+    }
+
+    /**
+     * Whether backlog tracing should trace inner details from route templates (or kamelets). Turning this on increases
+     * the verbosity of tracing by including events from internal routes in the templates or kamelets.
+     *
+     * Default is false.
+     */
+    public void setBacklogTracingTemplates(boolean backlogTracingTemplates) {
+        this.backlogTracingTemplates = backlogTracingTemplates;
+    }
+
     public boolean isMessageHistory() {
         return messageHistory;
     }
@@ -1951,6 +1981,17 @@ public abstract class DefaultConfigurationProperties<T> {
         return (T) this;
     }
 
+    /**
+     * Whether tracing should trace inner details from route templates (or kamelets). Turning this on increases the
+     * verbosity of tracing by including events from internal routes in the templates or kamelets.
+     *
+     * Default is false.
+     */
+    public T withTracingTemplates(boolean tracingTemplates) {
+        this.tracingTemplates = tracingTemplates;
+        return (T) this;
+    }
+
     /**
      * Sets whether backlog tracing is enabled or not.
      *
@@ -1972,6 +2013,17 @@ public abstract class DefaultConfigurationProperties<T> {
         return (T) this;
     }
 
+    /**
+     * Whether backlog tracing should trace inner details from route templates (or kamelets). Turning this on increases
+     * the verbosity of tracing by including events from internal routes in the templates or kamelets.
+     *
+     * Default is false.
+     */
+    public T withBacklogTracingTemplates(boolean backlogTracingTemplates) {
+        this.backlogTracingTemplates = backlogTracingTemplates;
+        return (T) this;
+    }
+
     /**
      * Sets whether message history is enabled or not.
      *
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
index 61f7c1b9b96..3fa55c7906b 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
@@ -90,6 +90,12 @@ public interface ManagedBacklogTracerMBean {
     @ManagedAttribute(description = "Whether to include file based message body in the trace message.")
     void setBodyIncludeFiles(boolean bodyIncludeFiles);
 
+    @ManagedAttribute(description = "Whether tracing routes created from Rest DSL.")
+    boolean isTraceRests();
+
+    @ManagedAttribute(description = "Whether tracing routes created from route templates or kamelets.")
+    boolean isTraceTemplates();
+
     @ManagedOperation(description = "Dumps the traced messages for the given node or route")
     List<BacklogTracerEventMessage> dumpTracedMessages(String nodeOrRouteId);
 
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java
index b5465a6d253..0b977ceca0e 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java
@@ -42,6 +42,12 @@ public interface ManagedTracerMBean {
     @ManagedAttribute(description = "To filter tracing by nodes (pattern)")
     String getTracePattern();
 
+    @ManagedAttribute(description = "Whether tracing routes created from Rest DSL.")
+    boolean isTraceRests();
+
+    @ManagedAttribute(description = "Whether tracing routes created from route templates or kamelets.")
+    boolean isTraceTemplates();
+
     @ManagedAttribute(description = "Number of total traced messages")
     long getTraceCounter();
 
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
index 7a4c82cd332..e55d5a567ff 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedBacklogTracer.java
@@ -161,6 +161,16 @@ public class ManagedBacklogTracer implements ManagedBacklogTracerMBean {
         backlogTracer.setBodyIncludeFiles(bodyIncludeFiles);
     }
 
+    @Override
+    public boolean isTraceRests() {
+        return backlogTracer.isTraceRests();
+    }
+
+    @Override
+    public boolean isTraceTemplates() {
+        return backlogTracer.isTraceTemplates();
+    }
+
     @Override
     public List<BacklogTracerEventMessage> dumpTracedMessages(String nodeOrRouteId) {
         return backlogTracer.dumpTracedMessages(nodeOrRouteId);
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
index 42f2fe5604b..b5fb9020193 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
@@ -83,6 +83,16 @@ public class ManagedTracer implements ManagedTracerMBean {
         return tracer.getTracePattern();
     }
 
+    @Override
+    public boolean isTraceRests() {
+        return tracer.isTraceRests();
+    }
+
+    @Override
+    public boolean isTraceTemplates() {
+        return tracer.isTraceTemplates();
+    }
+
     @Override
     public long getTraceCounter() {
         return tracer.getTraceCounter();


[camel] 02/02: CAMEL-19362: camel-core - Allow tracing without inner details of Kamelets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ec74002773268f89fec218049b33fb3edfed8fc9
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed May 17 19:00:57 2023 +0200

    CAMEL-19362: camel-core - Allow tracing without inner details of Kamelets
---
 .../apache/camel/impl/CamelContextConfigurer.java  | 388 ---------------------
 1 file changed, 388 deletions(-)

diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/CamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/CamelContextConfigurer.java
deleted file mode 100644
index 903b657713f..00000000000
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/CamelContextConfigurer.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.impl;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.CamelContext;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CamelContextConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.CamelContext target = (org.apache.camel.CamelContext) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "allowuseoriginalmessage":
-        case "AllowUseOriginalMessage": target.setAllowUseOriginalMessage(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "applicationcontextclassloader":
-        case "ApplicationContextClassLoader": target.setApplicationContextClassLoader(property(camelContext, java.lang.ClassLoader.class, value)); return true;
-        case "autostartup":
-        case "AutoStartup": target.setAutoStartup(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "autowiredenabled":
-        case "AutowiredEnabled": target.setAutowiredEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "backlogtracing":
-        case "BacklogTracing": target.setBacklogTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "backlogtracingstandby":
-        case "BacklogTracingStandby": target.setBacklogTracingStandby(property(camelContext, boolean.class, value)); return true;
-        case "backlogtracingtemplates":
-        case "BacklogTracingTemplates": target.setBacklogTracingTemplates(property(camelContext, boolean.class, value)); return true;
-        case "caseinsensitiveheaders":
-        case "CaseInsensitiveHeaders": target.setCaseInsensitiveHeaders(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "classresolver":
-        case "ClassResolver": target.setClassResolver(property(camelContext, org.apache.camel.spi.ClassResolver.class, value)); return true;
-        case "debugger":
-        case "Debugger": target.setDebugger(property(camelContext, org.apache.camel.spi.Debugger.class, value)); return true;
-        case "debugging":
-        case "Debugging": target.setDebugging(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "delayer":
-        case "Delayer": target.setDelayer(property(camelContext, java.lang.Long.class, value)); return true;
-        case "devconsole":
-        case "DevConsole": target.setDevConsole(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "dumproutes":
-        case "DumpRoutes": target.setDumpRoutes(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "executorservicemanager":
-        case "ExecutorServiceManager": target.setExecutorServiceManager(property(camelContext, org.apache.camel.spi.ExecutorServiceManager.class, value)); return true;
-        case "globaloptions":
-        case "GlobalOptions": target.setGlobalOptions(property(camelContext, java.util.Map.class, value)); return true;
-        case "inflightrepository":
-        case "InflightRepository": target.setInflightRepository(property(camelContext, org.apache.camel.spi.InflightRepository.class, value)); return true;
-        case "injector":
-        case "Injector": target.setInjector(property(camelContext, org.apache.camel.spi.Injector.class, value)); return true;
-        case "loadhealthchecks":
-        case "LoadHealthChecks": target.setLoadHealthChecks(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "loadtypeconverters":
-        case "LoadTypeConverters": target.setLoadTypeConverters(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "logexhaustedmessagebody":
-        case "LogExhaustedMessageBody": target.setLogExhaustedMessageBody(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "logmask":
-        case "LogMask": target.setLogMask(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "mdcloggingkeyspattern":
-        case "MDCLoggingKeysPattern": target.setMDCLoggingKeysPattern(property(camelContext, java.lang.String.class, value)); return true;
-        case "managementname":
-        case "ManagementName": target.setManagementName(property(camelContext, java.lang.String.class, value)); return true;
-        case "managementnamestrategy":
-        case "ManagementNameStrategy": target.setManagementNameStrategy(property(camelContext, org.apache.camel.spi.ManagementNameStrategy.class, value)); return true;
-        case "managementstrategy":
-        case "ManagementStrategy": target.setManagementStrategy(property(camelContext, org.apache.camel.spi.ManagementStrategy.class, value)); return true;
-        case "messagehistory":
-        case "MessageHistory": target.setMessageHistory(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "messagehistoryfactory":
-        case "MessageHistoryFactory": target.setMessageHistoryFactory(property(camelContext, org.apache.camel.spi.MessageHistoryFactory.class, value)); return true;
-        case "modeline":
-        case "Modeline": target.setModeline(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "namestrategy":
-        case "NameStrategy": target.setNameStrategy(property(camelContext, org.apache.camel.spi.CamelContextNameStrategy.class, value)); return true;
-        case "propertiescomponent":
-        case "PropertiesComponent": target.setPropertiesComponent(property(camelContext, org.apache.camel.spi.PropertiesComponent.class, value)); return true;
-        case "restconfiguration":
-        case "RestConfiguration": target.setRestConfiguration(property(camelContext, org.apache.camel.spi.RestConfiguration.class, value)); return true;
-        case "restregistry":
-        case "RestRegistry": target.setRestRegistry(property(camelContext, org.apache.camel.spi.RestRegistry.class, value)); return true;
-        case "routecontroller":
-        case "RouteController": target.setRouteController(property(camelContext, org.apache.camel.spi.RouteController.class, value)); return true;
-        case "runtimeendpointregistry":
-        case "RuntimeEndpointRegistry": target.setRuntimeEndpointRegistry(property(camelContext, org.apache.camel.spi.RuntimeEndpointRegistry.class, value)); return true;
-        case "sslcontextparameters":
-        case "SSLContextParameters": target.setSSLContextParameters(property(camelContext, org.apache.camel.support.jsse.SSLContextParameters.class, value)); return true;
-        case "shutdownroute":
-        case "ShutdownRoute": target.setShutdownRoute(property(camelContext, org.apache.camel.ShutdownRoute.class, value)); return true;
-        case "shutdownrunningtask":
-        case "ShutdownRunningTask": target.setShutdownRunningTask(property(camelContext, org.apache.camel.ShutdownRunningTask.class, value)); return true;
-        case "shutdownstrategy":
-        case "ShutdownStrategy": target.setShutdownStrategy(property(camelContext, org.apache.camel.spi.ShutdownStrategy.class, value)); return true;
-        case "sourcelocationenabled":
-        case "SourceLocationEnabled": target.setSourceLocationEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "startupsummarylevel":
-        case "StartupSummaryLevel": target.setStartupSummaryLevel(property(camelContext, org.apache.camel.StartupSummaryLevel.class, value)); return true;
-        case "streamcaching":
-        case "StreamCaching": target.setStreamCaching(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "streamcachingstrategy":
-        case "StreamCachingStrategy": target.setStreamCachingStrategy(property(camelContext, org.apache.camel.spi.StreamCachingStrategy.class, value)); return true;
-        case "tracer":
-        case "Tracer": target.setTracer(property(camelContext, org.apache.camel.spi.Tracer.class, value)); return true;
-        case "tracing":
-        case "Tracing": target.setTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "tracingloggingformat":
-        case "TracingLoggingFormat": target.setTracingLoggingFormat(property(camelContext, java.lang.String.class, value)); return true;
-        case "tracingpattern":
-        case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
-        case "tracingstandby":
-        case "TracingStandby": target.setTracingStandby(property(camelContext, boolean.class, value)); return true;
-        case "tracingtemplates":
-        case "TracingTemplates": target.setTracingTemplates(property(camelContext, boolean.class, value)); return true;
-        case "typeconverterregistry":
-        case "TypeConverterRegistry": target.setTypeConverterRegistry(property(camelContext, org.apache.camel.spi.TypeConverterRegistry.class, value)); return true;
-        case "typeconverterstatisticsenabled":
-        case "TypeConverterStatisticsEnabled": target.setTypeConverterStatisticsEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "usebreadcrumb":
-        case "UseBreadcrumb": target.setUseBreadcrumb(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "usedatatype":
-        case "UseDataType": target.setUseDataType(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "usemdclogging":
-        case "UseMDCLogging": target.setUseMDCLogging(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "uuidgenerator":
-        case "UuidGenerator": target.setUuidGenerator(property(camelContext, org.apache.camel.spi.UuidGenerator.class, value)); return true;
-        case "vaultconfiguration":
-        case "VaultConfiguration": target.setVaultConfiguration(property(camelContext, org.apache.camel.vault.VaultConfiguration.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "allowuseoriginalmessage":
-        case "AllowUseOriginalMessage": return java.lang.Boolean.class;
-        case "applicationcontextclassloader":
-        case "ApplicationContextClassLoader": return java.lang.ClassLoader.class;
-        case "autostartup":
-        case "AutoStartup": return java.lang.Boolean.class;
-        case "autowiredenabled":
-        case "AutowiredEnabled": return java.lang.Boolean.class;
-        case "backlogtracing":
-        case "BacklogTracing": return java.lang.Boolean.class;
-        case "backlogtracingstandby":
-        case "BacklogTracingStandby": return boolean.class;
-        case "backlogtracingtemplates":
-        case "BacklogTracingTemplates": return boolean.class;
-        case "caseinsensitiveheaders":
-        case "CaseInsensitiveHeaders": return java.lang.Boolean.class;
-        case "classresolver":
-        case "ClassResolver": return org.apache.camel.spi.ClassResolver.class;
-        case "debugger":
-        case "Debugger": return org.apache.camel.spi.Debugger.class;
-        case "debugging":
-        case "Debugging": return java.lang.Boolean.class;
-        case "delayer":
-        case "Delayer": return java.lang.Long.class;
-        case "devconsole":
-        case "DevConsole": return java.lang.Boolean.class;
-        case "dumproutes":
-        case "DumpRoutes": return java.lang.Boolean.class;
-        case "executorservicemanager":
-        case "ExecutorServiceManager": return org.apache.camel.spi.ExecutorServiceManager.class;
-        case "globaloptions":
-        case "GlobalOptions": return java.util.Map.class;
-        case "inflightrepository":
-        case "InflightRepository": return org.apache.camel.spi.InflightRepository.class;
-        case "injector":
-        case "Injector": return org.apache.camel.spi.Injector.class;
-        case "loadhealthchecks":
-        case "LoadHealthChecks": return java.lang.Boolean.class;
-        case "loadtypeconverters":
-        case "LoadTypeConverters": return java.lang.Boolean.class;
-        case "logexhaustedmessagebody":
-        case "LogExhaustedMessageBody": return java.lang.Boolean.class;
-        case "logmask":
-        case "LogMask": return java.lang.Boolean.class;
-        case "mdcloggingkeyspattern":
-        case "MDCLoggingKeysPattern": return java.lang.String.class;
-        case "managementname":
-        case "ManagementName": return java.lang.String.class;
-        case "managementnamestrategy":
-        case "ManagementNameStrategy": return org.apache.camel.spi.ManagementNameStrategy.class;
-        case "managementstrategy":
-        case "ManagementStrategy": return org.apache.camel.spi.ManagementStrategy.class;
-        case "messagehistory":
-        case "MessageHistory": return java.lang.Boolean.class;
-        case "messagehistoryfactory":
-        case "MessageHistoryFactory": return org.apache.camel.spi.MessageHistoryFactory.class;
-        case "modeline":
-        case "Modeline": return java.lang.Boolean.class;
-        case "namestrategy":
-        case "NameStrategy": return org.apache.camel.spi.CamelContextNameStrategy.class;
-        case "propertiescomponent":
-        case "PropertiesComponent": return org.apache.camel.spi.PropertiesComponent.class;
-        case "restconfiguration":
-        case "RestConfiguration": return org.apache.camel.spi.RestConfiguration.class;
-        case "restregistry":
-        case "RestRegistry": return org.apache.camel.spi.RestRegistry.class;
-        case "routecontroller":
-        case "RouteController": return org.apache.camel.spi.RouteController.class;
-        case "runtimeendpointregistry":
-        case "RuntimeEndpointRegistry": return org.apache.camel.spi.RuntimeEndpointRegistry.class;
-        case "sslcontextparameters":
-        case "SSLContextParameters": return org.apache.camel.support.jsse.SSLContextParameters.class;
-        case "shutdownroute":
-        case "ShutdownRoute": return org.apache.camel.ShutdownRoute.class;
-        case "shutdownrunningtask":
-        case "ShutdownRunningTask": return org.apache.camel.ShutdownRunningTask.class;
-        case "shutdownstrategy":
-        case "ShutdownStrategy": return org.apache.camel.spi.ShutdownStrategy.class;
-        case "sourcelocationenabled":
-        case "SourceLocationEnabled": return java.lang.Boolean.class;
-        case "startupsummarylevel":
-        case "StartupSummaryLevel": return org.apache.camel.StartupSummaryLevel.class;
-        case "streamcaching":
-        case "StreamCaching": return java.lang.Boolean.class;
-        case "streamcachingstrategy":
-        case "StreamCachingStrategy": return org.apache.camel.spi.StreamCachingStrategy.class;
-        case "tracer":
-        case "Tracer": return org.apache.camel.spi.Tracer.class;
-        case "tracing":
-        case "Tracing": return java.lang.Boolean.class;
-        case "tracingloggingformat":
-        case "TracingLoggingFormat": return java.lang.String.class;
-        case "tracingpattern":
-        case "TracingPattern": return java.lang.String.class;
-        case "tracingstandby":
-        case "TracingStandby": return boolean.class;
-        case "tracingtemplates":
-        case "TracingTemplates": return boolean.class;
-        case "typeconverterregistry":
-        case "TypeConverterRegistry": return org.apache.camel.spi.TypeConverterRegistry.class;
-        case "typeconverterstatisticsenabled":
-        case "TypeConverterStatisticsEnabled": return java.lang.Boolean.class;
-        case "usebreadcrumb":
-        case "UseBreadcrumb": return java.lang.Boolean.class;
-        case "usedatatype":
-        case "UseDataType": return java.lang.Boolean.class;
-        case "usemdclogging":
-        case "UseMDCLogging": return java.lang.Boolean.class;
-        case "uuidgenerator":
-        case "UuidGenerator": return org.apache.camel.spi.UuidGenerator.class;
-        case "vaultconfiguration":
-        case "VaultConfiguration": return org.apache.camel.vault.VaultConfiguration.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.CamelContext target = (org.apache.camel.CamelContext) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "allowuseoriginalmessage":
-        case "AllowUseOriginalMessage": return target.isAllowUseOriginalMessage();
-        case "applicationcontextclassloader":
-        case "ApplicationContextClassLoader": return target.getApplicationContextClassLoader();
-        case "autostartup":
-        case "AutoStartup": return target.isAutoStartup();
-        case "autowiredenabled":
-        case "AutowiredEnabled": return target.isAutowiredEnabled();
-        case "backlogtracing":
-        case "BacklogTracing": return target.isBacklogTracing();
-        case "backlogtracingstandby":
-        case "BacklogTracingStandby": return target.isBacklogTracingStandby();
-        case "backlogtracingtemplates":
-        case "BacklogTracingTemplates": return target.isBacklogTracingTemplates();
-        case "caseinsensitiveheaders":
-        case "CaseInsensitiveHeaders": return target.isCaseInsensitiveHeaders();
-        case "classresolver":
-        case "ClassResolver": return target.getClassResolver();
-        case "debugger":
-        case "Debugger": return target.getDebugger();
-        case "debugging":
-        case "Debugging": return target.isDebugging();
-        case "delayer":
-        case "Delayer": return target.getDelayer();
-        case "devconsole":
-        case "DevConsole": return target.isDevConsole();
-        case "dumproutes":
-        case "DumpRoutes": return target.isDumpRoutes();
-        case "executorservicemanager":
-        case "ExecutorServiceManager": return target.getExecutorServiceManager();
-        case "globaloptions":
-        case "GlobalOptions": return target.getGlobalOptions();
-        case "inflightrepository":
-        case "InflightRepository": return target.getInflightRepository();
-        case "injector":
-        case "Injector": return target.getInjector();
-        case "loadhealthchecks":
-        case "LoadHealthChecks": return target.isLoadHealthChecks();
-        case "loadtypeconverters":
-        case "LoadTypeConverters": return target.isLoadTypeConverters();
-        case "logexhaustedmessagebody":
-        case "LogExhaustedMessageBody": return target.isLogExhaustedMessageBody();
-        case "logmask":
-        case "LogMask": return target.isLogMask();
-        case "mdcloggingkeyspattern":
-        case "MDCLoggingKeysPattern": return target.getMDCLoggingKeysPattern();
-        case "managementname":
-        case "ManagementName": return target.getManagementName();
-        case "managementnamestrategy":
-        case "ManagementNameStrategy": return target.getManagementNameStrategy();
-        case "managementstrategy":
-        case "ManagementStrategy": return target.getManagementStrategy();
-        case "messagehistory":
-        case "MessageHistory": return target.isMessageHistory();
-        case "messagehistoryfactory":
-        case "MessageHistoryFactory": return target.getMessageHistoryFactory();
-        case "modeline":
-        case "Modeline": return target.isModeline();
-        case "namestrategy":
-        case "NameStrategy": return target.getNameStrategy();
-        case "propertiescomponent":
-        case "PropertiesComponent": return target.getPropertiesComponent();
-        case "restconfiguration":
-        case "RestConfiguration": return target.getRestConfiguration();
-        case "restregistry":
-        case "RestRegistry": return target.getRestRegistry();
-        case "routecontroller":
-        case "RouteController": return target.getRouteController();
-        case "runtimeendpointregistry":
-        case "RuntimeEndpointRegistry": return target.getRuntimeEndpointRegistry();
-        case "sslcontextparameters":
-        case "SSLContextParameters": return target.getSSLContextParameters();
-        case "shutdownroute":
-        case "ShutdownRoute": return target.getShutdownRoute();
-        case "shutdownrunningtask":
-        case "ShutdownRunningTask": return target.getShutdownRunningTask();
-        case "shutdownstrategy":
-        case "ShutdownStrategy": return target.getShutdownStrategy();
-        case "sourcelocationenabled":
-        case "SourceLocationEnabled": return target.isSourceLocationEnabled();
-        case "startupsummarylevel":
-        case "StartupSummaryLevel": return target.getStartupSummaryLevel();
-        case "streamcaching":
-        case "StreamCaching": return target.isStreamCaching();
-        case "streamcachingstrategy":
-        case "StreamCachingStrategy": return target.getStreamCachingStrategy();
-        case "tracer":
-        case "Tracer": return target.getTracer();
-        case "tracing":
-        case "Tracing": return target.isTracing();
-        case "tracingloggingformat":
-        case "TracingLoggingFormat": return target.getTracingLoggingFormat();
-        case "tracingpattern":
-        case "TracingPattern": return target.getTracingPattern();
-        case "tracingstandby":
-        case "TracingStandby": return target.isTracingStandby();
-        case "tracingtemplates":
-        case "TracingTemplates": return target.isTracingTemplates();
-        case "typeconverterregistry":
-        case "TypeConverterRegistry": return target.getTypeConverterRegistry();
-        case "typeconverterstatisticsenabled":
-        case "TypeConverterStatisticsEnabled": return target.isTypeConverterStatisticsEnabled();
-        case "usebreadcrumb":
-        case "UseBreadcrumb": return target.isUseBreadcrumb();
-        case "usedatatype":
-        case "UseDataType": return target.isUseDataType();
-        case "usemdclogging":
-        case "UseMDCLogging": return target.isUseMDCLogging();
-        case "uuidgenerator":
-        case "UuidGenerator": return target.getUuidGenerator();
-        case "vaultconfiguration":
-        case "VaultConfiguration": return target.getVaultConfiguration();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "globaloptions":
-        case "GlobalOptions": return java.lang.String.class;
-        default: return null;
-        }
-    }
-}
-