You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2023/02/15 20:21:40 UTC

[camel-quarkus] branch main updated: Restore ability for camel.main.javaRoutesIncludePattern to be overridable at runtime

This is an automated email from the ASF dual-hosted git repository.

aldettinger pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new e508a753c3 Restore ability for camel.main.javaRoutesIncludePattern to be overridable at runtime
e508a753c3 is described below

commit e508a753c3215f125c2e1c9fcddddafcd1dd4316
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Feb 15 10:55:28 2023 +0000

    Restore ability for camel.main.javaRoutesIncludePattern to be overridable at runtime
    
    Fixes #4574
---
 .../quarkus/core/deployment/CamelProcessor.java    | 25 ------
 .../core/deployment/main/CamelMainProcessor.java   |  7 +-
 ...ainRoutesExcludeFilterCombinedPropertyTest.java | 94 ---------------------
 .../main/CamelMainRoutesExcludeFilterTest.java     |  3 +-
 ...ainRoutesIncludeFilterCombinedPropertyTest.java | 95 ----------------------
 .../camel/quarkus/main/CamelMainRecorder.java      |  9 +-
 .../quarkus/main/CamelMainRoutesCollector.java     | 27 +-----
 7 files changed, 8 insertions(+), 252 deletions(-)

diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
index e17134c203..26d6bea287 100644
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
@@ -23,7 +23,6 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.Predicate;
@@ -80,8 +79,6 @@ import org.apache.camel.quarkus.core.deployment.util.PathFilter;
 import org.apache.camel.quarkus.core.util.FileUtils;
 import org.apache.camel.spi.TypeConverterLoader;
 import org.apache.camel.spi.TypeConverterRegistry;
-import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
 import org.jboss.jandex.AnnotationTarget;
 import org.jboss.jandex.ClassInfo;
 import org.jboss.jandex.DotName;
@@ -372,28 +369,6 @@ class CamelProcessor {
         allKnownImplementors.addAll(index.getAllKnownSubclasses(ROUTE_BUILDER_TYPE));
         allKnownImplementors.addAll(index.getAllKnownSubclasses(ADVICE_WITH_ROUTE_BUILDER_TYPE));
 
-        Config config = ConfigProvider.getConfig();
-        Optional<List<String>> camelMainRoutesExclude = config.getOptionalValues("camel.main.javaRoutesExcludePattern",
-                String.class);
-        Optional<List<String>> camelMainRoutesInclude = config.getOptionalValues("camel.main.javaRoutesIncludePattern",
-                String.class);
-
-        camelMainRoutesExclude.ifPresent(excludes -> {
-            if (camelConfig.routesDiscovery.excludePatterns.isPresent()) {
-                camelConfig.routesDiscovery.excludePatterns.get().addAll(excludes);
-            } else {
-                camelConfig.routesDiscovery.excludePatterns = Optional.of(excludes);
-            }
-        });
-
-        camelMainRoutesInclude.ifPresent(includes -> {
-            if (camelConfig.routesDiscovery.includePatterns.isPresent()) {
-                camelConfig.routesDiscovery.includePatterns.get().addAll(includes);
-            } else {
-                camelConfig.routesDiscovery.includePatterns = Optional.of(includes);
-            }
-        });
-
         final Predicate<DotName> pathFilter = new PathFilter.Builder()
                 .exclude(
                         routesBuilderClassExcludes.stream()
diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java
index 395043bbbd..cc6194f989 100644
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java
@@ -79,11 +79,8 @@ public class CamelMainProcessor {
     @Record(value = ExecutionTime.STATIC_INIT, optional = true)
     public CamelRoutesCollectorBuildItem routesCollector(
             CamelMainRecorder recorder,
-            CamelRoutesLoaderBuildItems.Registry registryRoutesLoader,
-            CamelConfig config) {
-
-        RuntimeValue<RoutesCollector> routesCollector = recorder.newRoutesCollector(registryRoutesLoader.getLoader(),
-                config.routesDiscovery.excludePatterns, config.routesDiscovery.includePatterns);
+            CamelRoutesLoaderBuildItems.Registry registryRoutesLoader) {
+        RuntimeValue<RoutesCollector> routesCollector = recorder.newRoutesCollector(registryRoutesLoader.getLoader());
         return new CamelRoutesCollectorBuildItem(routesCollector);
     }
 
diff --git a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterCombinedPropertyTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterCombinedPropertyTest.java
deleted file mode 100644
index e0885a8bd1..0000000000
--- a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterCombinedPropertyTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.core.deployment.main;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.List;
-import java.util.Properties;
-
-import io.quarkus.test.QuarkusUnitTest;
-import jakarta.inject.Inject;
-import org.apache.camel.CamelContext;
-import org.apache.camel.Route;
-import org.apache.camel.builder.RouteBuilder;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.Asset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class CamelMainRoutesExcludeFilterCombinedPropertyTest {
-    @RegisterExtension
-    static final QuarkusUnitTest CONFIG = new QuarkusUnitTest()
-            .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
-                    .addAsResource(applicationProperties(), "application.properties"));
-
-    @Inject
-    CamelContext context;
-
-    public static Asset applicationProperties() {
-        Writer writer = new StringWriter();
-
-        Properties props = new Properties();
-        props.setProperty("quarkus.banner.enabled", "false");
-        props.setProperty("quarkus.camel.routes-discovery.enabled", "true");
-        props.setProperty("quarkus.camel.routes-discovery.exclude-patterns", "**/*FilteredA");
-        props.setProperty("camel.main.javaRoutesExcludePattern", "**/*FilteredB");
-
-        try {
-            props.store(writer, "");
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
-        return new StringAsset(writer.toString());
-    }
-
-    @Test
-    public void testRoutesFilter() {
-        List<Route> routes = context.getRoutes();
-        assertEquals(1, routes.size());
-        assertNotNull(context.getRoute("my-route"));
-    }
-
-    public static class MyRoute extends RouteBuilder {
-        @Override
-        public void configure() throws Exception {
-            from("direct:in").routeId("my-route").to("log:out");
-        }
-    }
-
-    public static class MyRouteFilteredA extends RouteBuilder {
-        @Override
-        public void configure() throws Exception {
-            from("direct:filtered-a").routeId("my-route-filtered-a").to("log:filtered-a");
-        }
-    }
-
-    public static class MyRouteFilteredB extends RouteBuilder {
-        @Override
-        public void configure() throws Exception {
-            from("direct:filtered-b").routeId("my-route-filtered-b").to("log:filtered-b");
-        }
-    }
-}
diff --git a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterTest.java
index bc7b9f735b..897e271005 100644
--- a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterTest.java
+++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterTest.java
@@ -54,7 +54,8 @@ public class CamelMainRoutesExcludeFilterTest {
         Properties props = new Properties();
         props.setProperty("quarkus.banner.enabled", "false");
         props.setProperty("quarkus.camel.routes-discovery.enabled", "true");
-        props.setProperty("quarkus.camel.routes-discovery.exclude-patterns", "**/*Filtered,**/*Bean,**/*Producer");
+        props.setProperty("quarkus.camel.routes-discovery.exclude-patterns", "**/*Filtered");
+        props.setProperty("camel.main.javaRoutesExcludePattern", "**/*Bean,**/*Producer");
 
         try {
             props.store(writer, "");
diff --git a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesIncludeFilterCombinedPropertyTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesIncludeFilterCombinedPropertyTest.java
deleted file mode 100644
index 0ad6fd3a32..0000000000
--- a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesIncludeFilterCombinedPropertyTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.core.deployment.main;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.List;
-import java.util.Properties;
-
-import io.quarkus.test.QuarkusUnitTest;
-import jakarta.inject.Inject;
-import org.apache.camel.CamelContext;
-import org.apache.camel.Route;
-import org.apache.camel.builder.RouteBuilder;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.Asset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class CamelMainRoutesIncludeFilterCombinedPropertyTest {
-    @RegisterExtension
-    static final QuarkusUnitTest CONFIG = new QuarkusUnitTest()
-            .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
-                    .addAsResource(applicationProperties(), "application.properties"));
-
-    @Inject
-    CamelContext context;
-
-    public static Asset applicationProperties() {
-        Writer writer = new StringWriter();
-
-        Properties props = new Properties();
-        props.setProperty("quarkus.banner.enabled", "false");
-        props.setProperty("quarkus.camel.routes-discovery.enabled", "true");
-        props.setProperty("quarkus.camel.routes-discovery.include-patterns", "**/*FilteredA");
-        props.setProperty("camel.main.javaRoutesIncludePattern", "**/*FilteredB");
-
-        try {
-            props.store(writer, "");
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
-        return new StringAsset(writer.toString());
-    }
-
-    @Test
-    public void testRoutesFilter() {
-        List<Route> routes = context.getRoutes();
-        assertEquals(2, routes.size());
-        assertNotNull(context.getRoute("my-route-filtered-a"));
-        assertNotNull(context.getRoute("my-route-filtered-b"));
-    }
-
-    public static class MyRoute extends RouteBuilder {
-        @Override
-        public void configure() throws Exception {
-            from("direct:in").routeId("my-route").to("log:out");
-        }
-    }
-
-    public static class MyRouteFilteredA extends RouteBuilder {
-        @Override
-        public void configure() throws Exception {
-            from("direct:filtered-a").routeId("my-route-filtered-a").to("log:filtered-a");
-        }
-    }
-
-    public static class MyRouteFilteredB extends RouteBuilder {
-        @Override
-        public void configure() throws Exception {
-            from("direct:filtered-b").routeId("my-route-filtered-b").to("log:filtered-b");
-        }
-    }
-}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java
index 0e3b223a68..55e765102d 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java
@@ -17,7 +17,6 @@
 package org.apache.camel.quarkus.main;
 
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 
 import io.quarkus.arc.runtime.BeanContainer;
@@ -70,12 +69,8 @@ public class CamelMainRecorder {
         main.getValue().addMainListener(listener.getValue());
     }
 
-    public RuntimeValue<RoutesCollector> newRoutesCollector(
-            RuntimeValue<RegistryRoutesLoader> registryRoutesLoader,
-            Optional<List<String>> excludePatterns,
-            Optional<List<String>> includePatterns) {
-        return new RuntimeValue<>(
-                new CamelMainRoutesCollector(registryRoutesLoader.getValue(), excludePatterns, includePatterns));
+    public RuntimeValue<RoutesCollector> newRoutesCollector(RuntimeValue<RegistryRoutesLoader> registryRoutesLoader) {
+        return new RuntimeValue<>(new CamelMainRoutesCollector(registryRoutesLoader.getValue()));
     }
 
     public void customizeContext(RuntimeValue<CamelMain> main, List<RuntimeValue<CamelContextCustomizer>> contextCustomizers) {
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
index 44d86a0f8a..8595f531d0 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
@@ -17,7 +17,6 @@
 package org.apache.camel.quarkus.main;
 
 import java.util.List;
-import java.util.Optional;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
@@ -26,16 +25,9 @@ import org.apache.camel.quarkus.core.RegistryRoutesLoader;
 
 public class CamelMainRoutesCollector extends DefaultRoutesCollector {
     private final RegistryRoutesLoader registryRoutesLoader;
-    private final Optional<List<String>> excludePatterns;
-    private final Optional<List<String>> includePatterns;
 
-    public CamelMainRoutesCollector(
-            RegistryRoutesLoader registryRoutesLoader,
-            Optional<List<String>> excludePatterns,
-            Optional<List<String>> includePatterns) {
+    public CamelMainRoutesCollector(RegistryRoutesLoader registryRoutesLoader) {
         this.registryRoutesLoader = registryRoutesLoader;
-        this.excludePatterns = excludePatterns;
-        this.includePatterns = includePatterns;
     }
 
     public RegistryRoutesLoader getRegistryRoutesLoader() {
@@ -48,21 +40,6 @@ public class CamelMainRoutesCollector extends DefaultRoutesCollector {
             String excludePattern,
             String includePattern) {
 
-        /**
-         * The incoming excludePattern & includePattern are ignored since they are provided from camel-main via:
-         *
-         * camel.main.javaRoutesExcludePattern
-         * camel.main.javaRoutesIncludePattern
-         *
-         * The values for those properties are combined with the quarkus.camel.routes-discovery equivalents at build time.
-         */
-        return registryRoutesLoader.collectRoutesFromRegistry(
-                camelContext,
-                getPatternString(excludePatterns),
-                getPatternString(includePatterns));
-    }
-
-    private String getPatternString(Optional<List<String>> camelQuarkusPatterns) {
-        return camelQuarkusPatterns.map(patterns -> String.join(",", patterns)).orElse(null);
+        return registryRoutesLoader.collectRoutesFromRegistry(camelContext, excludePattern, includePattern);
     }
 }