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 2021/02/25 10:08:00 UTC
[camel] branch master updated: CAMEL-16258: camel-spring-boot -
@ExcludeRoutes not working anymore
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 1098bce CAMEL-16258: camel-spring-boot - @ExcludeRoutes not working anymore
1098bce is described below
commit 1098bce9df4970e379737883cd18abc3a29fd96d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Feb 25 11:06:45 2021 +0100
CAMEL-16258: camel-spring-boot - @ExcludeRoutes not working anymore
---
.../java/org/apache/camel/ExtendedCamelContext.java | 5 +++++
.../apache/camel/impl/engine/SimpleCamelContext.java | 4 ++++
.../org/apache/camel/impl/DefaultCamelContext.java | 5 +++++
.../camel/impl/lw/LightweightCamelContext.java | 5 +++++
.../impl/lw/LightweightRuntimeCamelContext.java | 5 +++++
.../apache/camel/main/DefaultRoutesCollector.java | 20 ++++++++++++++++++++
6 files changed, 44 insertions(+)
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 4689df9..c68403e 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -753,4 +753,9 @@ public interface ExtendedCamelContext extends CamelContext {
*/
void disposeModel();
+ /**
+ * Used during unit-testing where its possible to specify a set of routes to exclude from discovery
+ */
+ String getTestExcludeRoutes();
+
}
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 90f7a62..6a0137d 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
@@ -597,4 +597,8 @@ public class SimpleCamelContext extends AbstractCamelContext {
throw new UnsupportedOperationException();
}
+ @Override
+ public String getTestExcludeRoutes() {
+ throw new UnsupportedOperationException();
+ }
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 050d306..c482064 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -140,6 +140,11 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
return getOptions().disableJmx;
}
+ @Override
+ public String getTestExcludeRoutes() {
+ return getExcludeRoutes();
+ }
+
public static String getExcludeRoutes() {
return getOptions().excludeRoutes;
}
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 85f642e..5b122bd 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
@@ -1597,6 +1597,11 @@ public class LightweightCamelContext implements ExtendedCamelContext, CatalogCam
getExtendedCamelContext().setStartupStepRecorder(startupStepRecorder);
}
+ @Override
+ public String getTestExcludeRoutes() {
+ return getExtendedCamelContext().getTestExcludeRoutes();
+ }
+
//
// CatalogCamelContext
//
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 931073b..97dba59 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
@@ -1904,6 +1904,11 @@ public class LightweightRuntimeCamelContext implements ExtendedCamelContext, Cat
}
@Override
+ public String getTestExcludeRoutes() {
+ return null;
+ }
+
+ @Override
public RouteController getInternalRouteController() {
return new RouteController() {
@Override
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java
index 648bd5c..7570a66 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java
@@ -74,6 +74,26 @@ public class DefaultRoutesCollector implements RoutesCollector {
name = name.replace('.', '/');
boolean match = !"false".equals(includePattern);
+
+ // special support for testing with @ExcludeRoutes annotation with camel-test modules
+ String exclude = camelContext.adapt(ExtendedCamelContext.class).getTestExcludeRoutes();
+ // exclude take precedence over include
+ if (match && ObjectHelper.isNotEmpty(exclude)) {
+ // this property is a comma separated list of FQN class names, so we need to make
+ // name as path so we can use ant patch matcher
+ exclude = exclude.replace('.', '/');
+ // there may be multiple separated by comma
+ String[] parts = exclude.split(",");
+ for (String part : parts) {
+ // must negate when excluding, and hence !
+ match = !matcher.match(part, name);
+ log.trace("Java RoutesBuilder: {} exclude filter: {} -> {}", name, part, match);
+ if (!match) {
+ break;
+ }
+ }
+ }
+
// exclude take precedence over include
if (match && ObjectHelper.isNotEmpty(excludePattern)) {
// there may be multiple separated by comma