This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
The following commit(s) were added to refs/heads/master by this push: new e8e007a quarkus: disable routes discovery as routes are programmatically added e8e007a is described below commit e8e007a37e6acbe004da65a4b61f165cea6a2e9c Author: Luca Burgazzoli <lburgazz...@gmail.com> AuthorDate: Fri Sep 18 16:33:27 2020 +0200 quarkus: disable routes discovery as routes are programmatically added --- .../org/apache/camel/k/quarkus/it/Application.java | 3 +++ .../org/apache/camel/k/quarkus/it/RuntimeTest.java | 1 + .../k/quarkus/deployment/DeploymentProcessor.java | 16 ++++++------ .../org/apache/camel/k/quarkus/Application.java | 30 ++++++++++++++++++++++ .../camel/k/quarkus/ApplicationRecorder.java | 5 ++++ 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java index ce7f8a1..d0d308a 100644 --- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java @@ -28,6 +28,8 @@ import javax.ws.rs.core.MediaType; import org.apache.camel.CamelContext; import org.apache.camel.k.Runtime; +import org.apache.camel.main.BaseMainSupport; +import org.apache.camel.quarkus.main.CamelMain; import org.eclipse.microprofile.config.Config; import static org.apache.camel.k.quarkus.Application.instance; @@ -45,6 +47,7 @@ public class Application { return Json.createObjectBuilder() .add("camel-context", instance(CamelContext.class).map(Object::getClass).map(Class::getName).orElse("")) .add("camel-k-runtime", instance(Runtime.class).map(Object::getClass).map(Class::getName).orElse("")) + .add("routes-collector", instance(CamelMain.class).map(BaseMainSupport::getRoutesCollector).map(Object::getClass).map(Class::getName).orElse("")) .build(); } diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java index 7216824..7f17bb2 100644 --- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java @@ -42,6 +42,7 @@ public class RuntimeTest { assertThat(p.getString("camel-context")).isEqualTo(FastCamelContext.class.getName()); assertThat(p.getString("camel-k-runtime")).isEqualTo(Application.Runtime.class.getName()); + assertThat(p.getString("routes-collector")).isEqualTo(Application.NoRoutesCollector.class.getName()); } @Test diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/deployment/src/main/java/org/apache/camel/k/quarkus/deployment/DeploymentProcessor.java b/camel-k-quarkus/camel-k-runtime-quarkus/deployment/src/main/java/org/apache/camel/k/quarkus/deployment/DeploymentProcessor.java index f959492..9beab55 100644 --- a/camel-k-quarkus/camel-k-runtime-quarkus/deployment/src/main/java/org/apache/camel/k/quarkus/deployment/DeploymentProcessor.java +++ b/camel-k-quarkus/camel-k-runtime-quarkus/deployment/src/main/java/org/apache/camel/k/quarkus/deployment/DeploymentProcessor.java @@ -27,30 +27,30 @@ import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.Consume; import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Record; -import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import org.apache.camel.k.Runtime; import org.apache.camel.k.quarkus.ApplicationProducers; import org.apache.camel.k.quarkus.ApplicationRecorder; import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeTaskBuildItem; -import org.apache.camel.quarkus.main.CamelMainApplication; import org.apache.camel.quarkus.main.deployment.spi.CamelMainBuildItem; import org.apache.camel.quarkus.main.deployment.spi.CamelMainListenerBuildItem; +import org.apache.camel.quarkus.main.deployment.spi.CamelRoutesCollectorBuildItem; public class DeploymentProcessor { - @BuildStep - public ReflectiveClassBuildItem reflectiveClasses() { - return new ReflectiveClassBuildItem(true, false, CamelMainApplication.class); - } - @Record(ExecutionTime.STATIC_INIT) @BuildStep - CamelMainListenerBuildItem registerListener(ApplicationRecorder recorder) { + CamelMainListenerBuildItem mainListener(ApplicationRecorder recorder) { List<Runtime.Listener> listeners = new ArrayList<>(); ServiceLoader.load(Runtime.Listener.class).forEach(listeners::add); return new CamelMainListenerBuildItem(recorder.createMainListener(listeners)); } + @Record(ExecutionTime.STATIC_INIT) + @BuildStep + CamelRoutesCollectorBuildItem routesCollector(ApplicationRecorder recorder) { + return new CamelRoutesCollectorBuildItem(recorder.createRoutesCollector()); + } + @Record(ExecutionTime.RUNTIME_INIT) @BuildStep @Consume(SyntheticBeansRuntimeInitBuildItem.class) diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java index 320bd83..8dcb621 100644 --- a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java +++ b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java @@ -16,6 +16,7 @@ */ package org.apache.camel.k.quarkus; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Optional; @@ -30,6 +31,10 @@ import org.apache.camel.CamelContext; import org.apache.camel.RoutesBuilder; import org.apache.camel.main.BaseMainSupport; import org.apache.camel.main.MainListener; +import org.apache.camel.main.RoutesCollector; +import org.apache.camel.model.RouteTemplatesDefinition; +import org.apache.camel.model.RoutesDefinition; +import org.apache.camel.model.rest.RestsDefinition; public final class Application { private Application() { @@ -142,6 +147,31 @@ public final class Application { } } + /** + * Since routes are programmatically loaded, create a no-hop collector + */ + public static class NoRoutesCollector implements RoutesCollector { + @Override + public List<RoutesBuilder> collectRoutesFromRegistry(CamelContext camelContext, String excludePattern, String includePattern) { + return Collections.emptyList(); + } + + @Override + public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelContext, String directory) throws Exception { + return Collections.emptyList(); + } + + @Override + public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory) throws Exception { + return Collections.emptyList(); + } + + @Override + public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) throws Exception { + return Collections.emptyList(); + } + } + // ********************************* // // Helpers diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationRecorder.java b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationRecorder.java index e4ed9a8..696da7c 100644 --- a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationRecorder.java +++ b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationRecorder.java @@ -23,6 +23,7 @@ import io.quarkus.runtime.RuntimeValue; import io.quarkus.runtime.annotations.Recorder; import org.apache.camel.k.Runtime; import org.apache.camel.main.MainListener; +import org.apache.camel.main.RoutesCollector; import org.apache.camel.quarkus.main.CamelMain; @Recorder @@ -34,4 +35,8 @@ public class ApplicationRecorder { public void publishRuntime(RuntimeValue<CamelMain> main, BeanContainer container) { container.instance(ApplicationProducers.class).setRuntime(new Application.Runtime(main.getValue())); } + + public RuntimeValue<RoutesCollector> createRoutesCollector() { + return new RuntimeValue<>(new Application.NoRoutesCollector()); + } }