This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch filter-kamelet2 in repository https://gitbox.apache.org/repos/asf/camel.git
commit b21ab0e29ca69abab345102bf4f0a5e6b232547d Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Feb 24 12:18:07 2024 +0100 CAMEL-18858: camel-core - Mark route as created by Kamelet so we know this, so we can filter out in tooling and whereelse (kamelet is a blackbox) --- .../main/java/org/apache/camel/spi/UnitOfWork.java | 15 +++++++++++++++ .../camel/impl/engine/DefaultUnitOfWork.java | 22 ++++++++++++++++++++++ .../management/mbean/ManagedCamelContext.java | 10 +++++++--- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java index b9d28cb530e..75b5de4cd2a 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java @@ -203,6 +203,21 @@ public interface UnitOfWork { */ int routeStackLevel(); + /** + * Gets the {@link Route} level-of-depth that this {@link UnitOfWork} currently is being routed through. + * <p/> + * Notice that an {@link Exchange} can be routed through multiple routes and thus the level of depth can change over + * time. + * <p> + * If level is 1 then the current route is at the first route (original route). Maybe be <tt>0</tt> if not routed + * through a route currently. + * + * @param includeRouteTemplate whether to include routes created by route templates + * @param includeKamelet whether to include routes created by kamelets + * @return the route level-of-depth + */ + int routeStackLevel(boolean includeRouteTemplate, boolean includeKamelet); + /** * Whether the unit of work should call the before/after process methods or not. */ diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java index c5230567ec3..51f8680b33f 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java @@ -367,6 +367,28 @@ public class DefaultUnitOfWork implements UnitOfWork { return routes.size(); } + public int routeStackLevel(boolean includeRouteTemplate, boolean includeKamelet) { + if (includeKamelet && includeRouteTemplate) { + return routes.size(); + } + + int level = 0; + for (Route r : routes) { + if (r.isCreatedByKamelet()) { + if (includeKamelet) { + level++; + } + } else if (r.isCreatedByRouteTemplate()) { + if (includeRouteTemplate) { + level++; + } + } else { + level++; + } + } + return level; + } + @Override public boolean isBeforeAfterProcess() { return false; diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java index c964039c948..000b07c00de 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java @@ -61,10 +61,14 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti private final LoadTriplet load = new LoadTriplet(); private final LoadThroughput thp = new LoadThroughput(); private final String jmxDomain; + private final boolean includeRouteTemplates; + private final boolean includeKamelets; public ManagedCamelContext(CamelContext context) { this.context = context; this.jmxDomain = context.getManagementStrategy().getManagementAgent().getMBeanObjectDomainName(); + this.includeRouteTemplates = context.getManagementStrategy().getManagementAgent().getRegisterRoutesCreateByTemplate(); + this.includeKamelets = context.getManagementStrategy().getManagementAgent().getRegisterRoutesCreateByKamelet(); } @Override @@ -83,7 +87,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti // we should only count this as 1 instead of 3. UnitOfWork uow = exchange.getUnitOfWork(); if (uow != null) { - int level = uow.routeStackLevel(); + int level = uow.routeStackLevel(includeRouteTemplates, includeKamelets); if (level <= 1) { super.completedExchange(exchange, time); } @@ -100,7 +104,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti // we should only count this as 1 instead of 3. UnitOfWork uow = exchange.getUnitOfWork(); if (uow != null) { - int level = uow.routeStackLevel(); + int level = uow.routeStackLevel(includeRouteTemplates, includeKamelets); if (level <= 1) { super.failedExchange(exchange); } @@ -117,7 +121,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti // we should only count this as 1 instead of 3. UnitOfWork uow = exchange.getUnitOfWork(); if (uow != null) { - int level = uow.routeStackLevel(); + int level = uow.routeStackLevel(includeRouteTemplates, includeKamelets); if (level <= 1) { super.processExchange(exchange, type); }