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