You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/09/18 17:16:29 UTC

[camel-k-runtime] branch master updated: quarkus: disable routes discovery as routes are programmatically added

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