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 <[email protected]> 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(); } + }
