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 2019/10/05 15:27:15 UTC

[camel-quarkus] 01/05: chore: use RecorderContext to load classes when possible to delegate class loading to quarkus engine

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-quarkus.git

commit baedf0cb53f6fb09058e0e9c6b76e58dda0999ec
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Sat Oct 5 13:29:35 2019 +0200

    chore: use RecorderContext to load classes when possible to delegate class loading to quarkus engine
---
 .../org/apache/camel/quarkus/core/deployment/BuildProcessor.java   | 7 ++++++-
 .../main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java | 6 +++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
index 1145f63..afda882 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
@@ -29,8 +29,10 @@ import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.ServiceStartBuildItem;
 import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
+import io.quarkus.deployment.recording.RecorderContext;
 import io.quarkus.runtime.RuntimeValue;
 import org.apache.camel.CamelContext;
+import org.apache.camel.RoutesBuilder;
 import org.apache.camel.quarkus.core.CamelConfig;
 import org.apache.camel.quarkus.core.CamelMain;
 import org.apache.camel.quarkus.core.CamelMainProducers;
@@ -49,6 +51,7 @@ class BuildProcessor {
      * Build steps related to camel core.
      */
     public static class Core {
+
         @BuildStep
         void beans(BuildProducer<AdditionalBeanBuildItem> beanProducer) {
             beanProducer.produce(AdditionalBeanBuildItem.unremovableOf(CamelProducers.class));
@@ -117,6 +120,7 @@ class BuildProcessor {
             beanProducer.produce(AdditionalBeanBuildItem.unremovableOf(CamelMainProducers.class));
         }
 
+        @SuppressWarnings("unchecked")
         @Record(ExecutionTime.STATIC_INIT)
         @BuildStep(onlyIfNot = Flags.MainDisabled.class)
         CamelMainBuildItem main(
@@ -126,6 +130,7 @@ class BuildProcessor {
             List<CamelMainListenerBuildItem> listeners,
             List<CamelRoutesBuilderBuildItem> routesBuilders,
             BeanContainerBuildItem beanContainer,
+            RecorderContext recorderContext,
             CamelConfig.BuildTime buildTimeConfig) {
 
             RuntimeValue<CamelMain> main = recorder.createCamelMain(context.getCamelContext(), beanContainer.getValue());
@@ -134,7 +139,7 @@ class BuildProcessor {
             }
 
             CamelSupport.getRouteBuilderClasses(combinedIndex.getIndex()).forEach(name -> {
-                recorder.addRouteBuilder(main, name);
+                recorder.addRouteBuilder(main, (Class<RoutesBuilder>)recorderContext.classProxy(name));
             });
             routesBuilders.forEach(routesBuilder -> {
                 recorder.addRouteBuilder(main, routesBuilder.getInstance());
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
index f9d7236..0c861a7 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
@@ -49,12 +49,12 @@ public class CamelMainRecorder {
 
     public void addRouteBuilder(
             RuntimeValue<CamelMain> main,
-            String className) {
+            Class<? extends RoutesBuilder> routeBuilderClass) {
 
         try {
-            main.getValue().addRouteBuilder(Class.forName(className));
+            main.getValue().addRouteBuilder(routeBuilderClass);
         } catch (Exception e) {
-            throw new RuntimeException("Could not add route builder '" + className + "'", e);
+            throw new RuntimeException("Could not add route builder '" + routeBuilderClass.getName() + "'", e);
         }
     }