This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 3907d9991010aa7cbda1a8bb1f647911458a6cac Author: Claus Ibsen <claus.ib...@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 | 7 +- .../apache/camel/impl/debugger/BacklogTracer.java | 18 +++++ .../debugger/DefaultBacklogTracerEventMessage.java | 19 ++++++ .../camel/impl/engine/AbstractCamelContext.java | 22 ++++++ .../camel/impl/engine/CamelInternalProcessor.java | 78 ++++++++++++++++------ .../apache/camel/impl/engine/DefaultChannel.java | 4 ++ .../apache/camel/impl/engine/DefaultTracer.java | 22 ++++++ .../camel/impl/engine/SimpleCamelContext.java | 4 ++ .../apache/camel/impl/CamelContextConfigurer.java | 12 ++++ .../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 +++ 24 files changed, 367 insertions(+), 27 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 565930039f3..22fe97e2853 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 @@ -1180,6 +1180,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} * @@ -1354,6 +1367,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 9ff19a3aa21..3c894a95294 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 @@ -119,6 +119,26 @@ public interface BacklogTracer { */ void setIncludeException(boolean includeException); + /** + * 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 873b0cc54b4..1529d3d4151 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 @@ -56,6 +56,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 b904734a69e..fa168a65389 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 @@ -88,7 +88,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. */ @@ -96,12 +96,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 b67edf2ee6c..f08a8f2ab10 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 @@ -612,6 +612,7 @@ public final class BacklogDebugger extends ServiceSupport { false, false, message.getUid(), message.getTimestamp(), message.getLocation(), message.getRouteId(), message.getToNode(), message.getExchangeId(), + false, false, dumpAsXml(suspendedExchange.getExchange()), dumpAsJSon(suspendedExchange.getExchange()))); } @@ -673,7 +674,8 @@ public final class BacklogDebugger extends ServiceSupport { BacklogTracerEventMessage msg = new DefaultBacklogTracerEventMessage( - false, false, uid, timestamp, source, routeId, toNode, exchangeId, messageAsXml, messageAsJSon); + false, false, uid, timestamp, source, routeId, toNode, exchangeId, false, false, messageAsXml, + messageAsJSon); suspendedBreakpointMessages.put(nodeId, msg); // suspend at this breakpoint @@ -742,7 +744,8 @@ public final class BacklogDebugger extends ServiceSupport { BacklogTracerEventMessage msg = new DefaultBacklogTracerEventMessage( - false, false, uid, timestamp, source, routeId, toNode, exchangeId, messageAsXml, messageAsJSon); + false, false, uid, timestamp, source, 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 48ccfb667f0..2c6f13181de 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 @@ -62,6 +62,8 @@ public final class BacklogTracer extends ServiceSupport implements org.apache.ca private boolean bodyIncludeFiles = true; private boolean includeExchangeProperties = true; private boolean includeException = true; + private boolean traceRests; + private boolean traceTemplates; // a pattern to filter tracing nodes private String tracePattern; private String[] patterns; @@ -244,6 +246,22 @@ public final class BacklogTracer extends ServiceSupport implements org.apache.ca this.includeException = includeException; } + public boolean isTraceRests() { + return traceRests; + } + + public void setTraceRests(boolean traceRests) { + this.traceRests = traceRests; + } + + public boolean isTraceTemplates() { + return traceTemplates; + } + + 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 98bf1595c5b..bcdeb3a24b5 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 @@ -40,6 +40,8 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven private final String toNode; private final String exchangeId; private final String threadName; + private final boolean rest; + private final boolean template; private final String messageAsXml; private final String messageAsJSon; private String exceptionAsXml; @@ -49,6 +51,7 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven public DefaultBacklogTracerEventMessage(boolean first, boolean last, long uid, long timestamp, String location, String routeId, String toNode, String exchangeId, + boolean rest, boolean template, String messageAsXml, String messageAsJSon) { this.watch = new StopWatch(); this.first = first; @@ -59,6 +62,8 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven this.routeId = routeId; this.toNode = toNode; this.exchangeId = exchangeId; + this.rest = rest; + this.template = template; this.messageAsXml = messageAsXml; this.messageAsJSon = messageAsJSon; this.threadName = Thread.currentThread().getName(); @@ -102,6 +107,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; @@ -190,6 +205,8 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven sb.append(prefix).append(" <uid>").append(uid).append("</uid>\n"); sb.append(prefix).append(" <first>").append(first).append("</first>\n"); sb.append(prefix).append(" <last>").append(last).append("</last>\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"); sb.append(prefix).append(" <elapsed>").append(getElapsed()).append("</elapsed>\n"); @@ -232,6 +249,8 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven jo.put("uid", uid); jo.put("first", first); jo.put("last", last); + jo.put("rest", rest); + jo.put("template", template); if (location != null) { jo.put("location", location); } 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 c7174b3fe77..6781a3ed56c 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 @@ -233,8 +233,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; @@ -3737,6 +3739,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 e64f1bc7ca3..e70454c88c4 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 @@ -557,6 +557,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) { @@ -564,11 +567,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 DefaultBacklogTracerEventMessage 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(); @@ -588,8 +607,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In long created = exchange.getCreated(); DefaultBacklogTracerEventMessage pseudoFirst = new DefaultBacklogTracerEventMessage( true, false, backlogTracer.incrementTraceCounter(), created, source, routeId, null, exchangeId, - messageAsXml, - messageAsJSon); + rest, template, messageAsXml, messageAsJSon); backlogTracer.traceEvent(pseudoFirst); exchange.getExchangeExtension().addOnCompletion(new SynchronizationAdapter() { @Override @@ -608,9 +626,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In backlogTracer.getBodyMaxChars(), true); DefaultBacklogTracerEventMessage pseudoLast = new DefaultBacklogTracerEventMessage( false, true, backlogTracer.incrementTraceCounter(), created, source, routeId, null, - exchangeId, - messageAsXml, - messageAsJSon); + exchangeId, rest, template, messageAsXml, messageAsJSon); backlogTracer.traceEvent(pseudoLast); doneProcessing(exchange, pseudoLast); doneProcessing(exchange, pseudoFirst); @@ -623,8 +639,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In String source = LoggerHelper.getLineNumberLoggerName(processorDefinition); DefaultBacklogTracerEventMessage event = new DefaultBacklogTracerEventMessage( false, false, backlogTracer.incrementTraceCounter(), timestamp, source, routeId, toNode, exchangeId, - messageAsXml, - messageAsJSon); + rest, template, messageAsXml, messageAsJSon); backlogTracer.traceEvent(event); return event; @@ -635,21 +650,21 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In @Override public void after(Exchange exchange, DefaultBacklogTracerEventMessage data) throws Exception { - doneProcessing(exchange, data); + if (data != null) { + doneProcessing(exchange, data); + } } private void doneProcessing(Exchange exchange, DefaultBacklogTracerEventMessage data) { - if (data != null) { - data.doneProcessing(); - if (!data.isFirst()) { - // we want to capture if there was an exception - Throwable e = exchange.getException(); - if (e != null) { - String xml = MessageHelper.dumpExceptionAsXML(e, 4); - data.setExceptionAsXml(xml); - String json = MessageHelper.dumpExceptionAsJSon(e, 4, true); - data.setExceptionAsJSon(json); - } + data.doneProcessing(); + if (!data.isFirst()) { + // we want to capture if there was an exception + Throwable e = exchange.getException(); + if (e != null) { + String xml = MessageHelper.dumpExceptionAsXML(e, 4); + data.setExceptionAsXml(xml); + String json = MessageHelper.dumpExceptionAsJSon(e, 4, true); + data.setExceptionAsJSon(json); } } } @@ -1049,6 +1064,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; @@ -1057,11 +1075,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); @@ -1077,7 +1111,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 50cc9201a28..a3ec2d77988 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.isBacklogTracingTemplates(); + tracer.setTraceTemplates(restOrTemplates); + tracer.setTraceRests(restOrTemplates); camelContext.getCamelContextExtension().addContextPlugin(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 51f42e5358e..e34e2abd826 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 @@ -52,6 +52,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; @@ -206,6 +208,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 d7d35a4b113..d9a6e3a2e72 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 @@ -583,6 +583,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); getCamelContextExtension().addContextPlugin(Tracer.class, tracer); } return tracer; 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 index ac9d605f8b8..903b657713f 100644 --- 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 @@ -33,6 +33,8 @@ public class CamelContextConfigurer extends org.apache.camel.support.component.P 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": @@ -115,6 +117,8 @@ public class CamelContextConfigurer extends org.apache.camel.support.component.P 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": @@ -148,6 +152,8 @@ public class CamelContextConfigurer extends org.apache.camel.support.component.P 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": @@ -230,6 +236,8 @@ public class CamelContextConfigurer extends org.apache.camel.support.component.P 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": @@ -264,6 +272,8 @@ public class CamelContextConfigurer extends org.apache.camel.support.component.P 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": @@ -346,6 +356,8 @@ public class CamelContextConfigurer extends org.apache.camel.support.component.P 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-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 d64b02a06f6..b204c02019d 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 b18dd20177e..24f2bb7a78f 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": @@ -243,6 +245,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": @@ -280,6 +284,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": @@ -482,6 +488,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": @@ -520,6 +528,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": @@ -722,6 +732,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 84dd30a3935..d608e6d195d 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" }, @@ -123,6 +124,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 76b5a0fba41..5481c32a19e 100644 --- a/core/camel-main/src/main/docs/main.adoc +++ b/core/camel-main/src/main/docs/main.adoc @@ -19,7 +19,7 @@ The following tables lists all the options: // main options: START === Camel Main configurations -The camel.main supports 116 options, which are listed below. +The camel.main supports 118 options, which are listed below. [width="100%",cols="2,5,^1,2",options="header"] |=== @@ -34,6 +34,7 @@ The camel.main supports 116 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 116 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 710d7f030d8..468ce783941 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 @@ -303,10 +303,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 a6fc8a4b63e..593e983995f 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; @@ -622,6 +624,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; } @@ -687,6 +703,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; } @@ -1934,6 +1964,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. * @@ -1955,6 +1996,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 cad1bdbbe9a..d89f8b63b68 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 @@ -93,6 +93,12 @@ public interface ManagedBacklogTracerMBean { @ManagedAttribute(description = "Whether to include exchange properties in the trace message.") boolean isIncludeExchangeProperties(); + @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 = "Whether to include exchange properties in the trace message.") void setIncludeExchangeProperties(boolean includeExchangeProperties); 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 19de3926c2d..d697e8d79af 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 @@ -171,6 +171,16 @@ public class ManagedBacklogTracer implements ManagedBacklogTracerMBean { backlogTracer.setIncludeExchangeProperties(includeExchangeProperties); } + @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();