This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch 2.13.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 4e411dbc86311ea300abb35126e119ff554143e6 Author: James Netherton <jamesnether...@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 | 95 --------------------- .../main/CamelMainRoutesExcludeFilterTest.java | 3 +- ...ainRoutesIncludeFilterCombinedPropertyTest.java | 96 ---------------------- .../camel/quarkus/main/CamelMainRecorder.java | 9 +- .../quarkus/main/CamelMainRoutesCollector.java | 27 +----- 7 files changed, 8 insertions(+), 254 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 ab57746e1f..b72b9ecaad 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; @@ -77,8 +76,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; @@ -367,28 +364,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 9b5583d5b8..0000000000 --- a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesExcludeFilterCombinedPropertyTest.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 javax.inject.Inject; - -import io.quarkus.test.QuarkusUnitTest; -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 6b932dc5e7..a614284102 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 @@ -55,7 +55,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 264b0f4c70..0000000000 --- a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesIncludeFilterCombinedPropertyTest.java +++ /dev/null @@ -1,96 +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 javax.inject.Inject; - -import io.quarkus.test.QuarkusUnitTest; -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); } }