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 2022/06/04 19:13:10 UTC
[camel-spring-boot] 01/02: CAMEL-18166: camel-spring-boot - Make the route collector reuse as much from core.
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-spring-boot.git
commit 2cb91cd5b709f7c6ef91f6f27368fdf00eeba8d1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jun 4 18:19:55 2022 +0200
CAMEL-18166: camel-spring-boot - Make the route collector reuse as much from core.
---
.../spring/boot/SpringBootRoutesCollector.java | 90 ++--------------------
1 file changed, 5 insertions(+), 85 deletions(-)
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootRoutesCollector.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootRoutesCollector.java
index 6775a539984..594bf1087b1 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootRoutesCollector.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootRoutesCollector.java
@@ -16,19 +16,10 @@
*/
package org.apache.camel.spring.boot;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.util.Collection;
import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.LambdaRouteBuilder;
-import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.main.DefaultRoutesCollector;
-import org.apache.camel.util.AntPathMatcher;
-import org.apache.camel.util.ObjectHelper;
import org.springframework.context.ApplicationContext;
/**
@@ -43,80 +34,9 @@ public class SpringBootRoutesCollector extends DefaultRoutesCollector {
}
@Override
- public List<RoutesBuilder> collectRoutesFromRegistry(final CamelContext camelContext, final String excludePattern, final String includePattern) {
- final List<RoutesBuilder> routes = new ArrayList<>();
-
- Set<LambdaRouteBuilder> lrbs = camelContext.getRegistry().findByType(LambdaRouteBuilder.class);
- for (LambdaRouteBuilder lrb : lrbs) {
- RouteBuilder rb = new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- lrb.accept(this);
- }
- };
- routes.add(rb);
- }
-
- final AntPathMatcher matcher = new AntPathMatcher();
- for (RoutesBuilder routesBuilder : applicationContext.getBeansOfType(RoutesBuilder.class, true, true).values()) {
- // filter out abstract classes
- boolean abs = Modifier.isAbstract(routesBuilder.getClass().getModifiers());
- if (!abs) {
- String name = routesBuilder.getClass().getName();
- // make name as path so we can use ant path matcher
- 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
- String[] parts = excludePattern.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;
- }
- }
- }
- if (match && ObjectHelper.isNotEmpty(includePattern)) {
- // there may be multiple separated by comma
- String[] parts = includePattern.split(",");
- for (String part : parts) {
- match = matcher.match(part, name);
- log.trace("Java RoutesBuilder: {} include filter: {} -> {}", name, part, match);
- if (match) {
- break;
- }
- }
- }
- log.debug("Java RoutesBuilder: {} accepted by include/exclude filter: {}", name, match);
- if (match) {
- routes.add(routesBuilder);
- }
- }
- }
-
- return routes;
+ protected <T> Collection<T> findByType(CamelContext camelContext, Class<T> type) {
+ // lookup in application context
+ return applicationContext.getBeansOfType(type, true, true).values();
}
+
}