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();
     }
+
 }