This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/master by this push:
     new a94fcca  Upgrade to camel 3.2.0
a94fcca is described below

commit a94fcca655355e0caafed2cf0d990e94d223754b
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Wed Apr 8 16:39:32 2020 +0200

    Upgrade to camel 3.2.0
---
 docs/modules/ROOT/pages/cdi.adoc                   |   2 +-
 .../pages/list-of-camel-quarkus-extensions.adoc    |   4 +-
 .../main/java/org/acme/observability/Routes.java   |   2 +-
 .../org/acme/observability/ObservabilityTest.java  |   2 +-
 .../src/main/java/org/acme/timer/TimerRoute.java   |   2 +-
 .../src/main/java/org/acme/timer/TimerRoute.java   |   2 +-
 .../src/main/resources/routes/my-routes.xml        |   2 +-
 .../src/main/java/org/acme/timer/TimerRoute.java   |   2 +-
 .../quarkus/core/deployment/BuildProcessor.java    |  13 ++
 .../core/deployment/NativeImageProcessor.java      |  34 +++-
 extensions-core/core/runtime/pom.xml               |  12 ++
 .../org/apache/camel/quarkus/core/BaseModel.java   |  59 +-----
 .../org/apache/camel/quarkus/core/CamelMain.java   |   8 +-
 .../camel/quarkus/core/CamelMainRecorder.java      |   1 -
 .../apache/camel/quarkus/core/CamelRecorder.java   |   2 +-
 .../quarkus/core/DisabledValidateReifier.java      |   6 +-
 .../camel/quarkus/core/FastCamelContext.java       | 225 ++++++++++++---------
 .../org/apache/camel/quarkus/core/FastModel.java   | 195 ------------------
 .../camel/quarkus/core/FastTypeConverter.java      |  11 +-
 .../component/xml/jaxb/XmlJaxbRecorder.java        |   2 +-
 .../avro-rpc/deployment}/pom.xml                   |  27 +--
 .../component/avro/deployment/AvroProcessor.java   |  58 ++++++
 extensions-jvm/avro-rpc/integration-test/pom.xml   |  82 ++++++++
 .../quarkus/component/avro/it/AvroResource.java    |  15 +-
 .../camel/quarkus/component/avro/it/AvroTest.java  |   8 -
 .../avro-rpc/pom.xml                               |  32 +--
 .../avro-rpc}/runtime/pom.xml                      |  15 +-
 .../camel/quarkus/component/avro/AvroRecorder.java |  14 ++
 .../main/resources/META-INF/quarkus-extension.yaml |  29 +++
 .../quarkus/component/avro/it/AvroResource.java    |  15 +-
 .../camel/quarkus/component/avro/it/AvroTest.java  |   8 -
 extensions-jvm/pom.xml                             |   1 +
 extensions-support/debezium/runtime/pom.xml        |   4 +
 extensions/attachments/runtime/pom.xml             |   1 +
 .../braintree/graal/BraintreeRecorder.java         |   5 +-
 extensions/file/runtime/pom.xml                    |   1 +
 extensions/http/runtime/pom.xml                    |   1 +
 extensions/jackson/runtime/pom.xml                 |   1 +
 extensions/jaxb/runtime/pom.xml                    |   1 +
 extensions/pom.xml                                 |   3 +-
 .../component/qute/QuteComponentConfigurer.java    |  32 ++-
 .../component/qute/QuteEndpointConfigurer.java     |  36 +++-
 .../org/apache/camel/component/qute/qute.json      |   1 +
 .../reactive/streams/ReactiveStreamsRecorder.java  |  10 +-
 .../component/rest/QuarkusRestComponent.java       |   3 +-
 .../component/rest/QuarkusRestEndpoint.java        |   9 +-
 extensions/servlet/runtime/pom.xml                 |   1 +
 .../src/main/resources/application.properties      |   1 -
 .../src/main/resources/routes/my-routes.xml        |   2 +-
 .../src/main/resources/routes/my-routes.xml        |   2 +-
 .../camel/quarkus/component/file/it/FileTest.java  |   2 +-
 integration-tests/pom.xml                          |   3 +-
 pom.xml                                            |   9 +-
 poms/bom/pom.xml                                   |  75 +++++++
 .../org/apache/camel/quarkus/maven/CqCatalog.java  |  21 +-
 .../quarkus/maven/PrepareCatalogQuarkusMojo.java   |   2 +-
 56 files changed, 631 insertions(+), 485 deletions(-)

diff --git a/docs/modules/ROOT/pages/cdi.adoc b/docs/modules/ROOT/pages/cdi.adoc
index e9f1420..f858973 100644
--- a/docs/modules/ROOT/pages/cdi.adoc
+++ b/docs/modules/ROOT/pages/cdi.adoc
@@ -15,7 +15,7 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
 @ApplicationScoped <1>
 public class TimerRoute extends RouteBuilder {
 
-    @ConfigProperty(name = "timer.period", defaultValue = "1s") <2>
+    @ConfigProperty(name = "timer.period", defaultValue = "1000") <2>
     String period;
 
     @Inject
diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc 
b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index df584d0..1d86eb5 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -41,7 +41,7 @@ Level | Since | Description
 `amqp:destinationType:destinationName` | Native +
  Stable | 1.0.0-M6 | Messaging with AMQP protocol using Apache QPid Client.
 
-| link:https://camel.apache.org/components/latest/avro-component.html[Avro] 
(camel-quarkus-avro) +
+| link:https://camel.apache.org/components/latest/avro-component.html[Avro] 
(camel-quarkus-avro-rpc) +
 `avro:transport:host:port/messageName` | JVM +
  Preview | 1.0.0-M6 | Working with Apache Avro for data serialization.
 
@@ -299,7 +299,7 @@ Level | Since | Description
 
 | 
link:https://camel.apache.org/components/latest/google-pubsub-component.html[Google
 Pubsub] (camel-quarkus-google-pubsub) +
 `google-pubsub:projectId:destinationName` | JVM +
- Preview | 1.0.0-M6 | Messaging client for Google Cloud Platform PubSub Service
+ Preview | 1.0.0-M6 | Messaging client for Google Cloud Platform PubSub 
Service Built on top of the Google Cloud Pub/Sub libraries.
 
 | 
link:https://camel.apache.org/components/latest/google-sheets-component.html[Google
 Sheets] (camel-quarkus-google-sheets) +
 `google-sheets:apiName/methodName` | Native +
diff --git 
a/examples/observability/src/main/java/org/acme/observability/Routes.java 
b/examples/observability/src/main/java/org/acme/observability/Routes.java
index c51196f..8f1be8f 100644
--- a/examples/observability/src/main/java/org/acme/observability/Routes.java
+++ b/examples/observability/src/main/java/org/acme/observability/Routes.java
@@ -23,7 +23,7 @@ public class Routes extends RouteBuilder {
     @Override
     public void configure() throws Exception {
         // Invokes a simple greeting endpoint every 10 seconds
-        from("timer:greeting?period=10s")
+        from("timer:greeting?period=10000")
                 .to("netty-http:http://localhost:8099/greeting";);
 
         from("netty-http:0.0.0.0:8099/greeting")
diff --git 
a/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java
 
b/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java
index 8d31c53..e1dd736 100644
--- 
a/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java
+++ 
b/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java
@@ -37,7 +37,7 @@ public class ObservabilityTest {
                 .then()
                 .statusCode(200)
                 .body(
-                        
"'camel.context.status;camelContext=camel-quarkus-observability'", is(1));
+                        
"'camel.context.status;camelContext=camel-quarkus-observability'", is(3));
     }
 
     @Test
diff --git 
a/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java 
b/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java
index 8052005..0e0056f 100644
--- a/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java
+++ b/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java
@@ -32,7 +32,7 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
 public class TimerRoute extends RouteBuilder {
 
     /** {@code timer.period} is defined in {@code 
src/main/resources/application.properties} */
-    @ConfigProperty(name = "timer.period", defaultValue = "1s")
+    @ConfigProperty(name = "timer.period", defaultValue = "1000")
     String period;
 
     /** An injected bean */
diff --git 
a/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java 
b/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java
index 21c07bd..a7cdd61 100644
--- a/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java
+++ b/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java
@@ -31,7 +31,7 @@ public class TimerRoute extends RouteBuilder {
      * {@code timer.period} is defined in {@code 
src/main/resources/application.properties}
      */
     @Value("timer.period")
-    String period = "1s";
+    String period = "1000";
 
     /**
      * An injected bean
diff --git a/examples/timer-log-xml/src/main/resources/routes/my-routes.xml 
b/examples/timer-log-xml/src/main/resources/routes/my-routes.xml
index 42fd73f..ed63c39 100644
--- a/examples/timer-log-xml/src/main/resources/routes/my-routes.xml
+++ b/examples/timer-log-xml/src/main/resources/routes/my-routes.xml
@@ -24,7 +24,7 @@
             http://camel.apache.org/schema/spring/camel-spring.xsd";>
 
     <route id="xml-route">
-        <from uri="timer:from-xml?period=1s"/>
+        <from uri="timer:from-xml?period=1000"/>
         <log message="Hello XML!"/>
     </route>
 
diff --git a/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java 
b/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java
index 70b8bd7..0a3b0b9 100644
--- a/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java
+++ b/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java
@@ -22,7 +22,7 @@ public class TimerRoute extends RouteBuilder {
 
     @Override
     public void configure() throws Exception {
-        from("timer:foo?period=1s")
+        from("timer:foo?period=1000")
                 .log("Hello World");
     }
 }
diff --git 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
index 7595070..94bb313 100644
--- 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
+++ 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
@@ -40,6 +40,7 @@ import io.quarkus.deployment.annotations.Overridable;
 import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
 import io.quarkus.deployment.builditem.ServiceStartBuildItem;
 import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
 import io.quarkus.deployment.recording.RecorderContext;
@@ -100,6 +101,12 @@ class BuildProcessor {
      * Build steps related to camel core.
      */
     public static class Core {
+        // TODO: remove when https://issues.apache.org/jira/browse/CAMEL-14851 
is fixed
+        @BuildStep
+        IndexDependencyBuildItem endpointDslIndex() {
+            return new IndexDependencyBuildItem("org.apache.camel", 
"camel-endpointdsl");
+        }
+
         @BuildStep
         BeanRegistrationPhaseBuildItem.BeanConfiguratorBuildItem 
containerBeans(
                 BeanRegistrationPhaseBuildItem beanRegistrationPhase,
@@ -156,6 +163,12 @@ class BuildProcessor {
                     "META-INF/services/org/apache/camel/language/*",
                     "META-INF/services/org/apache/camel/dataformat/*",
                     "META-INF/services/org/apache/camel/cron/*"));
+
+            services.produce(new CamelServicePatternBuildItem(
+                    CamelServiceDestination.DISCOVERY,
+                    false,
+                    
"META-INF/services/org/apache/camel/configurer/avro-component",
+                    
"META-INF/services/org/apache/camel/configurer/avro-endpoint"));
         }
 
         @BuildStep
diff --git 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
index 0daef50..c055309 100644
--- 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
+++ 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
@@ -33,6 +33,7 @@ import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import 
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveMethodBuildItem;
+import 
io.quarkus.deployment.builditem.nativeimage.RuntimeReinitializedClassBuildItem;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
@@ -85,7 +86,7 @@ public class NativeImageProcessor {
                 PropertiesComponent.class,
                 DataFormat.class);
 
-        @BuildStep
+        //        @BuildStep
         void reflectiveItems(
                 CombinedIndexBuildItem combinedIndex,
                 BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
@@ -138,7 +139,7 @@ public class NativeImageProcessor {
 
         }
 
-        @BuildStep
+        //        @BuildStep
         void camelServices(
                 List<CamelServiceBuildItem> camelServices,
                 BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
@@ -292,16 +293,16 @@ public class NativeImageProcessor {
             //
             camelRoutesBuilders.forEach(camelRoutesBuilderClassBuildItem -> {
                 reflectiveClass.produce(
-                        new ReflectiveClassBuildItem(true, true, 
camelRoutesBuilderClassBuildItem.getDotName().toString()));
+                        new ReflectiveClassBuildItem(false, false, 
camelRoutesBuilderClassBuildItem.getDotName().toString()));
             });
 
-            reflectiveClass.produce(new ReflectiveClassBuildItem(
-                    true,
-                    false,
-                    org.apache.camel.main.DefaultConfigurationProperties.class,
-                    org.apache.camel.main.MainConfigurationProperties.class,
-                    org.apache.camel.main.HystrixConfigurationProperties.class,
-                    org.apache.camel.main.RestConfigurationProperties.class));
+            //            reflectiveClass.produce(new ReflectiveClassBuildItem(
+            //                    true,
+            //                    false,
+            //                    
org.apache.camel.main.DefaultConfigurationProperties.class,
+            //                    
org.apache.camel.main.MainConfigurationProperties.class,
+            //                    
org.apache.camel.main.HystrixConfigurationProperties.class,
+            //                    
org.apache.camel.main.RestConfigurationProperties.class));
 
             // TODO: The classes below are needed to fix 
https://github.com/apache/camel-quarkus/issues/1005
             //       but we need to investigate why it does not fail with Java 
1.8
@@ -314,4 +315,17 @@ public class NativeImageProcessor {
                     org.apache.camel.spi.RestConfiguration.class));
         }
     }
+
+    @BuildStep
+    void process(BuildProducer<RuntimeReinitializedClassBuildItem> 
reinitialized) {
+        for (String s : Arrays.asList(
+                "sun.security.jca.JCAUtil",
+                "sun.security.jca.JCAUtil$CachedSecureRandomHolder",
+                "sun.security.provider.SecureRandom$SeederHolder",
+                "sun.security.provider.SeedGenerator",
+                "java.security.SecureRandom",
+                "java.net.DefaultDatagramSocketImplFactory")) {
+            reinitialized.produce(new RuntimeReinitializedClassBuildItem(s));
+        }
+    }
 }
diff --git a/extensions-core/core/runtime/pom.xml 
b/extensions-core/core/runtime/pom.xml
index 57b7f16..32715da 100644
--- a/extensions-core/core/runtime/pom.xml
+++ b/extensions-core/core/runtime/pom.xml
@@ -87,6 +87,18 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-languages</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-endpointdsl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-componentdsl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-core-catalog</artifactId>
         </dependency>
         <dependency>
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
index 0a11942..2ccfc61 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
@@ -16,28 +16,13 @@
  */
 package org.apache.camel.quarkus.core;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.FailedToStartRouteException;
-import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.HystrixConfigurationDefinition;
-import org.apache.camel.model.Model;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.model.Resilience4jConfigurationDefinition;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RouteDefinitionHelper;
-import org.apache.camel.model.RouteFilters;
+import org.apache.camel.model.*;
 import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
@@ -80,7 +65,7 @@ public abstract class BaseModel implements Model {
         removeRouteDefinitions(list);
         this.routeDefinitions.addAll(list);
         if (shouldStartRoutes()) {
-            startRouteDefinitions(list);
+            
getCamelContext().adapt(ModelCamelContext.class).startRouteDefinitions(list);
         }
     }
 
@@ -256,7 +241,7 @@ public abstract class BaseModel implements Model {
     }
 
     @Override
-    public <T extends ProcessorDefinition> T getProcessorDefinition(String id, 
Class<T> type) {
+    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String 
id, Class<T> type) {
         ProcessorDefinition answer = getProcessorDefinition(id);
         if (answer != null) {
             return type.cast(answer);
@@ -295,11 +280,6 @@ public abstract class BaseModel implements Model {
     }
 
     @Override
-    public void startRouteDefinitions() throws Exception {
-        startRouteDefinitions(routeDefinitions);
-    }
-
-    @Override
     public void setRouteFilterPattern(String include, String exclude) {
         setRouteFilter(RouteFilters.filterByPattern(include, exclude));
     }
@@ -314,37 +294,6 @@ public abstract class BaseModel implements Model {
         this.routeFilter = routeFilter;
     }
 
-    protected void startRouteDefinitions(Collection<RouteDefinition> list) 
throws Exception {
-        if (list != null) {
-            for (RouteDefinition route : list) {
-                startRoute(route);
-            }
-        }
-    }
-
-    public void startRoute(RouteDefinition routeDefinition) throws Exception {
-        prepare(routeDefinition);
-        start(routeDefinition);
-    }
-
-    protected void prepare(RouteDefinition routeDefinition) throws Exception {
-        // assign ids to the routes and validate that the id's is all unique
-        RouteDefinitionHelper.forceAssignIds(camelContext, routeDefinitions);
-        String duplicate = 
RouteDefinitionHelper.validateUniqueIds(routeDefinition, routeDefinitions);
-        if (duplicate != null) {
-            throw new FailedToStartRouteException(routeDefinition.getId(),
-                    "duplicate id detected: " + duplicate + ". Please correct 
ids to be unique among all your routes.");
-        }
-
-        // must ensure route is prepared, before we can start it
-        if (!routeDefinition.isPrepared()) {
-            RouteDefinitionHelper.prepareRoute(camelContext, routeDefinition);
-            routeDefinition.markPrepared();
-        }
-    }
-
-    protected abstract void start(RouteDefinition routeDefinition) throws 
Exception;
-
     /**
      * Should we start newly added routes?
      */
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java
index a83862c..34cfa37 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java
@@ -41,12 +41,18 @@ public class CamelMain extends BaseMainSupport implements 
CamelContextAware {
     }
 
     @Override
+    protected void doInit() throws Exception {
+        super.doInit();
+        postProcessCamelContext(getCamelContext());
+        getCamelContext().init();
+    }
+
+    @Override
     protected void doStart() throws Exception {
         for (MainListener listener : listeners) {
             listener.beforeStart(this);
         }
 
-        postProcessCamelContext(getCamelContext());
         getCamelContext().start();
 
         for (MainListener listener : listeners) {
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
index ec0d238..8542ee6 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
@@ -93,7 +93,6 @@ public class CamelMainRecorder {
         });
 
         try {
-            main.getValue().init();
             main.getValue().start();
         } catch (Exception e) {
             throw new RuntimeException(e);
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
index 56c37e5..95770b0 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
@@ -80,7 +80,7 @@ public class CamelRecorder {
         context.setTypeConverterRegistry(typeConverterRegistry.getValue());
         context.setLoadTypeConverters(false);
         context.setModelJAXBContextFactory(contextFactory.getValue());
-        context.init();
+        context.build();
 
         // register to the container
         beanContainer.instance(CamelProducers.class).setContext(context);
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
index 911bfe7..a9b8144 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
@@ -17,15 +17,15 @@
 package org.apache.camel.quarkus.core;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ValidateDefinition;
 import org.apache.camel.reifier.ProcessorReifier;
-import org.apache.camel.spi.RouteContext;
 
 public class DisabledValidateReifier extends 
ProcessorReifier<ValidateDefinition> {
 
-    public DisabledValidateReifier(RouteContext routeContext, 
ProcessorDefinition<?> definition) {
-        super(routeContext, (ValidateDefinition) definition);
+    public DisabledValidateReifier(Route route, ProcessorDefinition<?> 
definition) {
+        super(route, (ValidateDefinition) definition);
     }
 
     @Override
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index f0d0493..768a48f 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -24,105 +24,33 @@ import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Function;
 
-import org.apache.camel.AsyncProcessor;
-import org.apache.camel.CatalogCamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Processor;
-import org.apache.camel.TypeConverter;
+import org.apache.camel.*;
+import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog;
 import 
org.apache.camel.component.microprofile.config.CamelMicroProfilePropertiesSource;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.DefaultExecutorServiceManager;
-import org.apache.camel.impl.engine.AbstractCamelContext;
-import org.apache.camel.impl.engine.BeanProcessorFactoryResolver;
-import org.apache.camel.impl.engine.BeanProxyFactoryResolver;
-import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
-import org.apache.camel.impl.engine.DefaultBeanIntrospection;
-import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
-import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy;
-import org.apache.camel.impl.engine.DefaultClassResolver;
-import org.apache.camel.impl.engine.DefaultComponentResolver;
-import org.apache.camel.impl.engine.DefaultConfigurerResolver;
-import org.apache.camel.impl.engine.DefaultDataFormatResolver;
-import org.apache.camel.impl.engine.DefaultEndpointRegistry;
-import org.apache.camel.impl.engine.DefaultInflightRepository;
-import org.apache.camel.impl.engine.DefaultInjector;
-import org.apache.camel.impl.engine.DefaultLanguageResolver;
-import org.apache.camel.impl.engine.DefaultMessageHistoryFactory;
-import org.apache.camel.impl.engine.DefaultNodeIdFactory;
-import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
-import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver;
-import org.apache.camel.impl.engine.DefaultProcessorFactory;
-import org.apache.camel.impl.engine.DefaultReactiveExecutor;
-import org.apache.camel.impl.engine.DefaultRouteController;
-import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
-import org.apache.camel.impl.engine.DefaultTracer;
-import org.apache.camel.impl.engine.DefaultTransformerRegistry;
-import org.apache.camel.impl.engine.DefaultUnitOfWorkFactory;
-import org.apache.camel.impl.engine.DefaultValidatorRegistry;
-import org.apache.camel.impl.engine.EndpointKey;
-import org.apache.camel.impl.engine.HeadersMapFactoryResolver;
-import org.apache.camel.impl.engine.RestRegistryFactoryResolver;
+import org.apache.camel.impl.engine.*;
 import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
-import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.HystrixConfigurationDefinition;
-import org.apache.camel.model.Model;
-import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.Resilience4jConfigurationDefinition;
-import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.*;
 import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
+import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
 import org.apache.camel.processor.MulticastProcessor;
-import org.apache.camel.spi.AsyncProcessorAwaitManager;
-import org.apache.camel.spi.BeanIntrospection;
-import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
-import org.apache.camel.spi.CamelBeanPostProcessor;
-import org.apache.camel.spi.CamelContextNameStrategy;
-import org.apache.camel.spi.ClassResolver;
-import org.apache.camel.spi.ComponentResolver;
-import org.apache.camel.spi.ConfigurerResolver;
-import org.apache.camel.spi.DataFormat;
-import org.apache.camel.spi.DataFormatResolver;
-import org.apache.camel.spi.EndpointRegistry;
-import org.apache.camel.spi.ExecutorServiceManager;
-import org.apache.camel.spi.FactoryFinderResolver;
-import org.apache.camel.spi.HeadersMapFactory;
-import org.apache.camel.spi.InflightRepository;
-import org.apache.camel.spi.Injector;
-import org.apache.camel.spi.Language;
-import org.apache.camel.spi.LanguageResolver;
-import org.apache.camel.spi.ManagementNameStrategy;
-import org.apache.camel.spi.MessageHistoryFactory;
-import org.apache.camel.spi.ModelJAXBContextFactory;
-import org.apache.camel.spi.ModelToXMLDumper;
-import org.apache.camel.spi.NodeIdFactory;
-import org.apache.camel.spi.PackageScanClassResolver;
-import org.apache.camel.spi.PackageScanResourceResolver;
-import org.apache.camel.spi.ProcessorFactory;
-import org.apache.camel.spi.PropertiesComponent;
-import org.apache.camel.spi.ReactiveExecutor;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.spi.RestRegistryFactory;
-import org.apache.camel.spi.RouteController;
-import org.apache.camel.spi.ShutdownStrategy;
-import org.apache.camel.spi.StreamCachingStrategy;
-import org.apache.camel.spi.Tracer;
-import org.apache.camel.spi.TransformerRegistry;
-import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.camel.spi.UnitOfWorkFactory;
-import org.apache.camel.spi.UuidGenerator;
-import org.apache.camel.spi.ValidatorRegistry;
-import org.apache.camel.spi.XMLRoutesDefinitionLoader;
+import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
+import org.apache.camel.reifier.language.ExpressionReifier;
+import org.apache.camel.reifier.transformer.TransformerReifier;
+import org.apache.camel.reifier.validator.ValidatorReifier;
+import org.apache.camel.spi.*;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ObjectHelper;
 
 public class FastCamelContext extends AbstractCamelContext implements 
CatalogCamelContext, ModelCamelContext {
     private final Model model;
@@ -285,17 +213,25 @@ public class FastCamelContext extends 
AbstractCamelContext implements CatalogCam
 
     @Override
     protected HeadersMapFactory createHeadersMapFactory() {
-        return new HeadersMapFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(HeadersMapFactory.FACTORY, 
HeadersMapFactory.class)
+                .resolve(getCamelContextReference())
+                .orElseGet(DefaultHeadersMapFactory::new);
     }
 
     @Override
     protected BeanProxyFactory createBeanProxyFactory() {
-        return new BeanProxyFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, 
BeanProxyFactory.class)
+                .resolve(getCamelContextReference())
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find 
BeanProxyFactory on classpath. "
+                        + "Add camel-bean to classpath."));
     }
 
     @Override
     protected BeanProcessorFactory createBeanProcessorFactory() {
-        return new BeanProcessorFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, 
BeanProcessorFactory.class)
+                .resolve(getCamelContextReference())
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find 
BeanProcessorFactory on classpath. "
+                        + "Add camel-bean to classpath."));
     }
 
     @Override
@@ -357,7 +293,10 @@ public class FastCamelContext extends AbstractCamelContext 
implements CatalogCam
 
     @Override
     protected RestRegistryFactory createRestRegistryFactory() {
-        return new RestRegistryFactoryResolver().resolve(this);
+        return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, 
RestRegistryFactory.class)
+                .resolve(getCamelContextReference())
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find 
RestRegistryFactory on classpath. "
+                        + "Add camel-rest to classpath."));
     }
 
     @Override
@@ -388,8 +327,9 @@ public class FastCamelContext extends AbstractCamelContext 
implements CatalogCam
     @Override
     public AsyncProcessor createMulticast(Collection<Processor> processors, 
ExecutorService executor,
             boolean shutdownExecutorService) {
-        return new MulticastProcessor(this, processors, null, true, executor, 
shutdownExecutorService,
-                false, false, 0L, null, false, false);
+        return new MulticastProcessor(getCamelContextReference(), null, 
processors, null,
+                true, executor, shutdownExecutorService, false, false,
+                0, null, false, false);
     }
 
     @Override
@@ -398,6 +338,24 @@ public class FastCamelContext extends AbstractCamelContext 
implements CatalogCam
     }
 
     @Override
+    protected HealthCheckRegistry createHealthCheckRegistry() {
+        return new DefaultHealthCheckRegistry(this);
+    }
+
+    @Override
+    protected ComponentNameResolver createComponentNameResolver() {
+        return new DefaultComponentNameResolver();
+    }
+
+    @Override
+    protected RestBindingJaxbDataFormatFactory 
createRestBindingJaxbDataFormatFactory() {
+        return new 
BaseServiceResolver<>(RestBindingJaxbDataFormatFactory.FACTORY, 
RestBindingJaxbDataFormatFactory.class)
+                .resolve(getCamelContextReference())
+                .orElseThrow(() -> new IllegalArgumentException("Cannot find 
RestBindingJaxbDataFormatFactory on classpath. "
+                        + "Add camel-jaxb to classpath."));
+    }
+
+    @Override
     public void setTypeConverterRegistry(TypeConverterRegistry 
typeConverterRegistry) {
         super.setTypeConverterRegistry(typeConverterRegistry);
 
@@ -506,13 +464,22 @@ public class FastCamelContext extends 
AbstractCamelContext implements CatalogCam
         return null;
     }
 
+    @Override
+    public Processor createErrorHandler(Route route, Processor processor) 
throws Exception {
+        return ErrorHandlerReifier.reifier(route, 
route.getErrorHandlerFactory())
+                .createErrorHandler(processor);
+    }
+
     //
     // ModelCamelContext
     //
 
     @Override
     public void startRouteDefinitions() throws Exception {
-        model.startRouteDefinitions();
+        List<RouteDefinition> routeDefinitions = model.getRouteDefinitions();
+        if (routeDefinitions != null) {
+            startRouteDefinitions(routeDefinitions);
+        }
     }
 
     @Override
@@ -576,7 +543,7 @@ public class FastCamelContext extends AbstractCamelContext 
implements CatalogCam
     }
 
     @Override
-    public <T extends ProcessorDefinition> T getProcessorDefinition(String id, 
Class<T> type) {
+    public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String 
id, Class<T> type) {
         return model.getProcessorDefinition(id, type);
     }
 
@@ -674,4 +641,78 @@ public class FastCamelContext extends AbstractCamelContext 
implements CatalogCam
     public Function<RouteDefinition, Boolean> getRouteFilter() {
         return model.getRouteFilter();
     }
+
+    @Override
+    public void startRouteDefinitions(List<RouteDefinition> routeDefinitions) 
throws Exception {
+        // indicate we are staring the route using this thread so
+        // we are able to query this if needed
+        boolean alreadyStartingRoutes = isStartingRoutes();
+        if (!alreadyStartingRoutes) {
+            setStartingRoutes(true);
+        }
+        try {
+            RouteDefinitionHelper.forceAssignIds(getCamelContextReference(), 
routeDefinitions);
+            for (RouteDefinition routeDefinition : routeDefinitions) {
+                // assign ids to the routes and validate that the id's is all 
unique
+                String duplicate = 
RouteDefinitionHelper.validateUniqueIds(routeDefinition, routeDefinitions);
+                if (duplicate != null) {
+                    throw new 
FailedToStartRouteException(routeDefinition.getId(),
+                            "duplicate id detected: " + duplicate + ". Please 
correct ids to be unique among all your routes.");
+                }
+
+                // must ensure route is prepared, before we can start it
+                if (!routeDefinition.isPrepared()) {
+                    
RouteDefinitionHelper.prepareRoute(getCamelContextReference(), routeDefinition);
+                    routeDefinition.markPrepared();
+                }
+
+                Route route = new RouteReifier(getCamelContextReference(), 
routeDefinition).createRoute();
+                RouteService routeService = new RouteService(route);
+                startRouteService(routeService, true);
+            }
+        } finally {
+            if (!alreadyStartingRoutes) {
+                setStartingRoutes(false);
+            }
+        }
+    }
+
+    @Override
+    public Expression createExpression(ExpressionDefinition definition) {
+        return ExpressionReifier.reifier(this, definition).createExpression();
+    }
+
+    @Override
+    public Predicate createPredicate(ExpressionDefinition definition) {
+        return ExpressionReifier.reifier(this, definition).createPredicate();
+    }
+
+    @Override
+    public RouteDefinition adviceWith(RouteDefinition definition, 
AdviceWithRouteBuilder builder) throws Exception {
+        return RouteReifier.adviceWith(definition, this, builder);
+    }
+
+    @Override
+    public void registerValidator(ValidatorDefinition def) {
+        model.getValidators().add(def);
+        Validator validator = ValidatorReifier.reifier(this, 
def).createValidator();
+        getValidatorRegistry().put(createValidatorKey(def), validator);
+    }
+
+    private static ValueHolder<String> createValidatorKey(ValidatorDefinition 
def) {
+        return new ValidatorKey(new DataType(def.getType()));
+    }
+
+    @Override
+    public void registerTransformer(TransformerDefinition def) {
+        model.getTransformers().add(def);
+        Transformer transformer = TransformerReifier.reifier(this, 
def).createTransformer();
+        getTransformerRegistry().put(createTransformerKey(def), transformer);
+    }
+
+    private static ValueHolder<String> 
createTransformerKey(TransformerDefinition def) {
+        return ObjectHelper.isNotEmpty(def.getScheme()) ? new 
TransformerKey(def.getScheme())
+                : new TransformerKey(new DataType(def.getFromType()), new 
DataType(def.getToType()));
+    }
+
 }
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
index 847cfcc..fd299a8 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
@@ -16,206 +16,11 @@
  */
 package org.apache.camel.quarkus.core;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.camel.CamelContext;
-import org.apache.camel.ErrorHandlerFactory;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.NamedNode;
-import org.apache.camel.Navigate;
-import org.apache.camel.Processor;
-import org.apache.camel.Route;
-import org.apache.camel.Service;
-import org.apache.camel.impl.engine.AbstractCamelContext;
-import org.apache.camel.impl.engine.BaseRouteService;
-import org.apache.camel.impl.engine.DefaultRouteContext;
-import org.apache.camel.model.OnCompletionDefinition;
-import org.apache.camel.model.OnExceptionDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RouteDefinitionHelper;
-import org.apache.camel.processor.channel.DefaultChannel;
-import org.apache.camel.reifier.RouteReifier;
-import org.apache.camel.support.CamelContextHelper;
 
 public class FastModel extends BaseModel {
     public FastModel(CamelContext camelContext) {
         super(camelContext);
     }
 
-    @Override
-    protected void start(RouteDefinition routeDefinition) throws Exception {
-        // indicate we are staring the route using this thread so
-        // we are able to query this if needed
-        CamelContext camelContext = getCamelContext();
-        AbstractCamelContext mcc = 
camelContext.adapt(AbstractCamelContext.class);
-        mcc.setStartingRoutes(true);
-        try {
-            String id = 
routeDefinition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-            FastRouteContext routeContext = new FastRouteContext(camelContext, 
routeDefinition, id);
-            Route route = new RouteReifier(routeContext, 
routeDefinition).createRoute();
-            FastRouteService routeService = createRouteService(route);
-            mcc.startRouteService(routeService, true);
-        } finally {
-            // we are done staring routes
-            mcc.setStartingRoutes(false);
-        }
-    }
-
-    private FastRouteService createRouteService(Route route) {
-        Integer startupOrder;
-        String description;
-        boolean autoStartup;
-        boolean contextScopedErrorHandler;
-        List<Service> routeScopedServices;
-
-        RouteDefinition definition = (RouteDefinition) 
route.getRouteContext().getRoute();
-        startupOrder = definition.getStartupOrder();
-        description = 
RouteDefinitionHelper.getRouteMessage(definition.toString());
-
-        if (!route.getCamelContext().isAutoStartup()) {
-            autoStartup = false;
-        } else if (definition.getAutoStartup() == null) {
-            // should auto startup by default
-            autoStartup = true;
-        } else {
-            Boolean isAutoStartup = 
CamelContextHelper.parseBoolean(route.getCamelContext(), 
definition.getAutoStartup());
-            autoStartup = isAutoStartup != null && isAutoStartup;
-        }
-
-        if (!definition.isContextScopedErrorHandler()) {
-            contextScopedErrorHandler = false;
-        } else if (definition.getErrorHandlerRef() != null) {
-            // if error handler ref is configured it may refer to a context 
scoped, so we need to check this first
-            // the XML DSL will configure error handlers using refs, so we 
need this additional test
-            ErrorHandlerFactory routeScoped = 
route.getRouteContext().getErrorHandlerFactory();
-            ErrorHandlerFactory contextScoped = 
route.getCamelContext().adapt(ExtendedCamelContext.class)
-                    .getErrorHandlerFactory();
-            contextScopedErrorHandler = contextScoped != null && routeScoped 
== contextScoped;
-        } else {
-            contextScopedErrorHandler = true;
-        }
-
-        List<Service> services = new ArrayList<>();
-        for (ProcessorDefinition<?> output : definition.getOutputs()) {
-            if (output instanceof OnExceptionDefinition) {
-                OnExceptionDefinition onExceptionDefinition = 
(OnExceptionDefinition) output;
-                if (onExceptionDefinition.isRouteScoped()) {
-                    Processor errorHandler = 
route.getRouteContext().getOnException(onExceptionDefinition.getId());
-                    if (errorHandler instanceof Service) {
-                        services.add((Service) errorHandler);
-                    }
-                }
-            } else if (output instanceof OnCompletionDefinition) {
-                OnCompletionDefinition onCompletionDefinition = 
(OnCompletionDefinition) output;
-                if (onCompletionDefinition.isRouteScoped()) {
-                    Processor onCompletionProcessor = 
route.getRouteContext().getOnCompletion(onCompletionDefinition.getId());
-                    if (onCompletionProcessor instanceof Service) {
-                        services.add((Service) onCompletionProcessor);
-                    }
-                }
-            }
-        }
-        routeScopedServices = services;
-
-        FastRouteService routeService = new FastRouteService(route);
-        routeService.setStartupOrder(startupOrder);
-        routeService.setDescription(description);
-        routeService.setAutoStartup(autoStartup);
-        routeService.setContextScopedErrorHandler(contextScopedErrorHandler);
-        routeService.setRouteScopedServices(routeScopedServices);
-        return routeService;
-    }
-
-    static class FastRouteContext extends DefaultRouteContext {
-
-        private NamedNode route;
-
-        public FastRouteContext(CamelContext camelContext, NamedNode route, 
String routeId) {
-            super(camelContext, null, routeId);
-            this.route = route;
-        }
-
-        @Override
-        public NamedNode getRoute() {
-            return route;
-        }
-
-        @SuppressWarnings("unchecked")
-        private void clearModel(Processor nav) {
-            if (nav instanceof DefaultChannel) {
-                DefaultChannel channel = (DefaultChannel) nav;
-                channel.setDefinition(null);
-            }
-            if (nav instanceof Navigate) {
-                List<Processor> children = ((Navigate<Processor>) nav).next();
-                if (children != null) {
-                    for (Processor p : children) {
-                        clearModel(p);
-                    }
-                }
-            }
-        }
-
-    }
-
-    static class FastRouteService extends BaseRouteService {
-
-        private Integer startupOrder;
-        private String description;
-        private boolean autoStartup;
-        private boolean contextScopedErrorHandler;
-        private List<Service> routeScopedServices;
-
-        public FastRouteService(Route route) {
-            super(route);
-        }
-
-        public void setStartupOrder(Integer startupOrder) {
-            this.startupOrder = startupOrder;
-        }
-
-        public void setDescription(String description) {
-            this.description = description;
-        }
-
-        public void setAutoStartup(boolean autoStartup) {
-            this.autoStartup = autoStartup;
-        }
-
-        public void setContextScopedErrorHandler(boolean 
contextScopedErrorHandler) {
-            this.contextScopedErrorHandler = contextScopedErrorHandler;
-        }
-
-        public void setRouteScopedServices(List<Service> routeScopedServices) {
-            this.routeScopedServices = routeScopedServices;
-        }
-
-        @Override
-        public Integer getStartupOrder() {
-            return startupOrder;
-        }
-
-        @Override
-        protected String getRouteDescription() {
-            return description;
-        }
-
-        @Override
-        public boolean isAutoStartup() {
-            return autoStartup;
-        }
-
-        @Override
-        public boolean isContextScopedErrorHandler() {
-            return contextScopedErrorHandler;
-        }
-
-        @Override
-        protected void doGetRouteScopedServices(List<Service> services) {
-            services.addAll(routeScopedServices);
-        }
-    }
-
 }
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
index 178250f..6492338 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
@@ -29,15 +29,16 @@ public class FastTypeConverter extends DefaultTypeConverter 
{
     }
 
     @Override
-    protected void doStart() throws Exception {
+    protected void doInit() throws Exception {
+        super.doInit();
+    }
+
+    @Override
+    public void loadCoreAndFastTypeConverters() throws Exception {
         for (TypeConverterLoader loader : 
getCamelContext().getRegistry().findByType(TypeConverterLoader.class)) {
             LOG.debug("TypeConverterLoader: {} loading converters", loader);
             loader.load(this);
         }
     }
 
-    @Override
-    public void loadCoreAndFastTypeConverters() throws Exception {
-        throw new UnsupportedOperationException();
-    }
 }
diff --git 
a/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java
 
b/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java
index 3cb9e69..260da00 100644
--- 
a/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java
+++ 
b/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java
@@ -21,10 +21,10 @@ import javax.xml.bind.JAXBException;
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.impl.DefaultModelJAXBContextFactory;
 import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.XMLRoutesDefinitionLoader;
+import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
 import org.apache.camel.xml.jaxb.JaxbModelToXMLDumper;
 import org.apache.camel.xml.jaxb.JaxbXMLRoutesDefinitionLoader;
 import org.graalvm.nativeimage.ImageInfo;
diff --git a/extensions/file/runtime/pom.xml 
b/extensions-jvm/avro-rpc/deployment/pom.xml
similarity index 73%
copy from extensions/file/runtime/pom.xml
copy to extensions-jvm/avro-rpc/deployment/pom.xml
index 197d38a..4310cab 100644
--- a/extensions/file/runtime/pom.xml
+++ b/extensions-jvm/avro-rpc/deployment/pom.xml
@@ -17,27 +17,25 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-file-parent</artifactId>
+        <artifactId>camel-quarkus-avro-rpc-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-file</artifactId>
-    <name>Camel Quarkus :: File :: Runtime</name>
-
-    <properties>
-        <firstVersion>0.4.0</firstVersion>
-    </properties>
+    <artifactId>camel-quarkus-avro-rpc-deployment</artifactId>
+    <name>Camel Quarkus :: Avro RPC :: Deployment</name>
 
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
-                <artifactId>camel-quarkus-bom</artifactId>
+                <artifactId>camel-quarkus-bom-deployment</artifactId>
                 <version>${project.version}</version>
                 <type>pom</type>
                 <scope>import</scope>
@@ -48,21 +46,17 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-core</artifactId>
+            <artifactId>camel-quarkus-core-deployment</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-file</artifactId>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-avro-rpc</artifactId>
         </dependency>
     </dependencies>
 
     <build>
         <plugins>
             <plugin>
-                <groupId>io.quarkus</groupId>
-                <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
@@ -77,4 +71,5 @@
             </plugin>
         </plugins>
     </build>
+
 </project>
diff --git 
a/extensions-jvm/avro-rpc/deployment/src/main/java/org/apache/camel/quarkus/component/avro/deployment/AvroProcessor.java
 
b/extensions-jvm/avro-rpc/deployment/src/main/java/org/apache/camel/quarkus/component/avro/deployment/AvroProcessor.java
new file mode 100644
index 0000000..ec58a38
--- /dev/null
+++ 
b/extensions-jvm/avro-rpc/deployment/src/main/java/org/apache/camel/quarkus/component/avro/deployment/AvroProcessor.java
@@ -0,0 +1,58 @@
+/*
+ * 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.component.avro.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeBuild;
+import org.apache.camel.component.avro.AvroComponent;
+import org.apache.camel.quarkus.component.avro.AvroRecorder;
+import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import org.apache.camel.quarkus.core.deployment.CamelBeanBuildItem;
+import org.jboss.logging.Logger;
+
+class AvroProcessor {
+
+    private static final Logger LOG = Logger.getLogger(AvroProcessor.class);
+    private static final String FEATURE = "camel-avro-rpc";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    /**
+     * Remove this once this extension starts supporting the native mode.
+     */
+    @BuildStep(onlyIf = NativeBuild.class)
+    @Record(value = ExecutionTime.RUNTIME_INIT)
+    void warnJvmInNative(JvmOnlyRecorder recorder) {
+        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
+        recorder.warnJvmInNative(FEATURE); // warn at runtime
+    }
+
+    @Record(ExecutionTime.STATIC_INIT)
+    @BuildStep
+    CamelBeanBuildItem avroComponent(AvroRecorder recorder) {
+        return new CamelBeanBuildItem(
+                "avro-rpc",
+                AvroComponent.class.getName(),
+                recorder.createAvroComponent());
+    }
+}
diff --git a/extensions-jvm/avro-rpc/integration-test/pom.xml 
b/extensions-jvm/avro-rpc/integration-test/pom.xml
new file mode 100644
index 0000000..b76aa68
--- /dev/null
+++ b/extensions-jvm/avro-rpc/integration-test/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-avro-rpc-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-avro-rpc-integration-test</artifactId>
+    <name>Camel Quarkus :: Avro RPC :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Avro 
extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment 
modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by 
default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although 
they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this 
module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        
<mvnd.builder.rule>camel-quarkus-avro-rpc-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-avro-rpc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git 
a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
 
b/extensions-jvm/avro-rpc/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
similarity index 74%
copy from 
extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
copy to 
extensions-jvm/avro-rpc/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
index 0ba3eb3..99f5473 100644
--- 
a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
+++ 
b/extensions-jvm/avro-rpc/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
@@ -33,8 +33,7 @@ public class AvroResource {
 
     private static final Logger LOG = Logger.getLogger(AvroResource.class);
 
-    private static final String COMPONENT_AVRO = "avro";
-    private static final String DATAFORMAT_AVRO = "avro";
+    private static final String COMPONENT_AVRO = "avro-rpc";
     @Inject
     CamelContext context;
 
@@ -49,16 +48,4 @@ public class AvroResource {
         LOG.warnf("Could not load [%s] from the Camel context", 
COMPONENT_AVRO);
         return Response.status(500, COMPONENT_AVRO + " could not be loaded 
from the Camel context").build();
     }
-
-    @Path("/load/dataformat/avro")
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public Response loadDataformatAvro() throws Exception {
-        /* This is an autogenerated test */
-        if (context.getComponent(DATAFORMAT_AVRO) != null) {
-            return Response.ok().build();
-        }
-        LOG.warnf("Could not load [%s] from the Camel context", 
DATAFORMAT_AVRO);
-        return Response.status(500, DATAFORMAT_AVRO + " could not be loaded 
from the Camel context").build();
-    }
 }
diff --git 
a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
 
b/extensions-jvm/avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
similarity index 85%
copy from 
extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
copy to 
extensions-jvm/avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
index 417bee2..346a3c9 100644
--- 
a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
+++ 
b/extensions-jvm/avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
@@ -31,12 +31,4 @@ class AvroTest {
                 .statusCode(200);
     }
 
-    @Test
-    public void loadDataformatAvro() {
-        /* A simple autogenerated test */
-        RestAssured.get("/avro/load/dataformat/avro")
-                .then()
-                .statusCode(200);
-    }
-
 }
diff --git 
a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml 
b/extensions-jvm/avro-rpc/pom.xml
similarity index 51%
copy from 
integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml
copy to extensions-jvm/avro-rpc/pom.xml
index 482befb..2bf4bd8 100644
--- 
a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml
+++ b/extensions-jvm/avro-rpc/pom.xml
@@ -17,18 +17,24 @@
     limitations under the License.
 
 -->
-<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-        xmlns="http://camel.apache.org/schema/spring";
-        xsi:schemaLocation="
-            http://camel.apache.org/schema/spring
-            http://camel.apache.org/schema/spring/camel-spring.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
 
-    <route id="my-xml-route">
-        <from uri="timer:from-xml?period=3s"/>
-        <setBody>
-            <constant>Hello World!!!</constant>
-        </setBody>
-        <to uri="log:from-xml"/>
-    </route>
+    <artifactId>camel-quarkus-avro-rpc-parent</artifactId>
+    <name>Camel Quarkus :: Avro RPC</name>
+    <packaging>pom</packaging>
 
-</routes>
\ No newline at end of file
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions/attachments/runtime/pom.xml 
b/extensions-jvm/avro-rpc/runtime/pom.xml
similarity index 82%
copy from extensions/attachments/runtime/pom.xml
copy to extensions-jvm/avro-rpc/runtime/pom.xml
index 8decf13..f7dfabf 100644
--- a/extensions/attachments/runtime/pom.xml
+++ b/extensions-jvm/avro-rpc/runtime/pom.xml
@@ -17,20 +17,23 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-attachments-parent</artifactId>
+        <artifactId>camel-quarkus-avro-rpc-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-attachments</artifactId>
-    <name>Camel Quarkus :: Attachments :: Runtime</name>
+    <artifactId>camel-quarkus-avro-rpc</artifactId>
+    <name>Camel Quarkus :: Avro RPC :: Runtime</name>
+    <description>Working with Apache Avro for data serialization.</description>
 
     <properties>
-        <firstVersion>0.3.0</firstVersion>
+        <firstVersion>1.0.0-M6</firstVersion>
     </properties>
 
     <dependencyManagement>
@@ -52,7 +55,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-attachments</artifactId>
+            <artifactId>camel-avro-rpc</artifactId>
         </dependency>
     </dependencies>
 
diff --git 
a/extensions-jvm/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/AvroRecorder.java
 
b/extensions-jvm/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/AvroRecorder.java
new file mode 100644
index 0000000..6fbb1b6
--- /dev/null
+++ 
b/extensions-jvm/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/AvroRecorder.java
@@ -0,0 +1,14 @@
+package org.apache.camel.quarkus.component.avro;
+
+import io.quarkus.runtime.RuntimeValue;
+import io.quarkus.runtime.annotations.Recorder;
+import org.apache.camel.component.avro.AvroComponent;
+
+@Recorder
+public class AvroRecorder {
+
+    public RuntimeValue<?> createAvroComponent() {
+        return new RuntimeValue<>(new AvroComponent());
+    }
+
+}
diff --git 
a/extensions-jvm/avro-rpc/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 
b/extensions-jvm/avro-rpc/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..def5c36
--- /dev/null
+++ 
b/extensions-jvm/avro-rpc/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+---
+name: "Avro RPC"
+description: "Working with Apache Avro for RPC."
+metadata:
+  unlisted: true
+  keywords:
+  - "messaging"
+  - "transformation"
+  guide: "https://camel.apache.org/components/latest/avro-rpc-component.html";
+  categories:
+  - "integration"
+  status: "preview"
diff --git 
a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
 
b/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
index 0ba3eb3..ec520f6 100644
--- 
a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
+++ 
b/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java
@@ -33,29 +33,16 @@ public class AvroResource {
 
     private static final Logger LOG = Logger.getLogger(AvroResource.class);
 
-    private static final String COMPONENT_AVRO = "avro";
     private static final String DATAFORMAT_AVRO = "avro";
     @Inject
     CamelContext context;
 
-    @Path("/load/component/avro")
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public Response loadComponentAvro() throws Exception {
-        /* This is an autogenerated test */
-        if (context.getComponent(COMPONENT_AVRO) != null) {
-            return Response.ok().build();
-        }
-        LOG.warnf("Could not load [%s] from the Camel context", 
COMPONENT_AVRO);
-        return Response.status(500, COMPONENT_AVRO + " could not be loaded 
from the Camel context").build();
-    }
-
     @Path("/load/dataformat/avro")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
     public Response loadDataformatAvro() throws Exception {
         /* This is an autogenerated test */
-        if (context.getComponent(DATAFORMAT_AVRO) != null) {
+        if (context.resolveDataFormat(DATAFORMAT_AVRO) != null) {
             return Response.ok().build();
         }
         LOG.warnf("Could not load [%s] from the Camel context", 
DATAFORMAT_AVRO);
diff --git 
a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
 
b/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
index 417bee2..78229a0 100644
--- 
a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
+++ 
b/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java
@@ -24,14 +24,6 @@ import org.junit.jupiter.api.Test;
 class AvroTest {
 
     @Test
-    public void loadComponentAvro() {
-        /* A simple autogenerated test */
-        RestAssured.get("/avro/load/component/avro")
-                .then()
-                .statusCode(200);
-    }
-
-    @Test
     public void loadDataformatAvro() {
         /* A simple autogenerated test */
         RestAssured.get("/avro/load/dataformat/avro")
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 640e14d..fddc738 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -35,6 +35,7 @@
     <modules>
         <!-- extensions a..z; do not remove this comment, it is important when 
sorting via  mvn process-resources -Pformat -->
         <module>avro</module>
+        <module>avro-rpc</module>
         <module>aws2-cw</module>
         <module>aws2-ddb</module>
         <module>aws2-ec2</module>
diff --git a/extensions-support/debezium/runtime/pom.xml 
b/extensions-support/debezium/runtime/pom.xml
index cde95af..3682b66 100644
--- a/extensions-support/debezium/runtime/pom.xml
+++ b/extensions-support/debezium/runtime/pom.xml
@@ -64,6 +64,10 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>io.debezium</groupId>
+            <artifactId>debezium-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/attachments/runtime/pom.xml 
b/extensions/attachments/runtime/pom.xml
index 8decf13..18dad3e 100644
--- a/extensions/attachments/runtime/pom.xml
+++ b/extensions/attachments/runtime/pom.xml
@@ -28,6 +28,7 @@
 
     <artifactId>camel-quarkus-attachments</artifactId>
     <name>Camel Quarkus :: Attachments :: Runtime</name>
+    <description>Support for attachments on Camel messages.</description>
 
     <properties>
         <firstVersion>0.3.0</firstVersion>
diff --git 
a/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java
 
b/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java
index cb87a09..3647646 100644
--- 
a/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java
+++ 
b/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java
@@ -19,6 +19,7 @@ package org.apache.camel.quarkus.component.braintree.graal;
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.component.braintree.BraintreeComponent;
+import org.apache.camel.component.braintree.BraintreeConfiguration;
 
 @Recorder
 public class BraintreeRecorder {
@@ -30,7 +31,9 @@ public class BraintreeRecorder {
      */
     public RuntimeValue<BraintreeComponent> configureBraintreeComponent() {
         BraintreeComponent component = new BraintreeComponent();
-        component.setLogHandlerEnabled(false);
+        BraintreeConfiguration configuration = new BraintreeConfiguration();
+        configuration.setLogHandlerEnabled(false);
+        component.setConfiguration(configuration);
         return new RuntimeValue<>(component);
     }
 }
diff --git a/extensions/file/runtime/pom.xml b/extensions/file/runtime/pom.xml
index 197d38a..f5031b8 100644
--- a/extensions/file/runtime/pom.xml
+++ b/extensions/file/runtime/pom.xml
@@ -28,6 +28,7 @@
 
     <artifactId>camel-quarkus-file</artifactId>
     <name>Camel Quarkus :: File :: Runtime</name>
+    <description>The file component provides access to the file 
system.</description>
 
     <properties>
         <firstVersion>0.4.0</firstVersion>
diff --git a/extensions/http/runtime/pom.xml b/extensions/http/runtime/pom.xml
index e3f4400..3e66559 100644
--- a/extensions/http/runtime/pom.xml
+++ b/extensions/http/runtime/pom.xml
@@ -28,6 +28,7 @@
 
     <artifactId>camel-quarkus-http</artifactId>
     <name>Camel Quarkus :: HTTP :: Runtime</name>
+    <description>The http component provides support for the HTTP/HTTPS 
protocols.</description>
 
     <properties>
         <firstVersion>1.0.0-M3</firstVersion>
diff --git a/extensions/jackson/runtime/pom.xml 
b/extensions/jackson/runtime/pom.xml
index c9c6f6b..d91b059 100644
--- a/extensions/jackson/runtime/pom.xml
+++ b/extensions/jackson/runtime/pom.xml
@@ -27,6 +27,7 @@
 
     <artifactId>camel-quarkus-jackson</artifactId>
     <name>Camel Quarkus :: Jackson :: Runtime</name>
+    <description>Provides support for the Jackson dataformat.</description>
 
     <properties>
         <firstVersion>0.3.0</firstVersion>
diff --git a/extensions/jaxb/runtime/pom.xml b/extensions/jaxb/runtime/pom.xml
index 9a74934..158b29f 100644
--- a/extensions/jaxb/runtime/pom.xml
+++ b/extensions/jaxb/runtime/pom.xml
@@ -28,6 +28,7 @@
 
     <artifactId>camel-quarkus-jaxb</artifactId>
     <name>Camel Quarkus :: JAXB extension :: Runtime</name>
+    <description>The jaxb extensions provides JAXB support for 
Camel.</description>
 
     <properties>
         <firstVersion>1.0.0-M5</firstVersion>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 7fe8c7f..13333ac 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -98,7 +98,8 @@
         <module>mail</module>
         <module>microprofile-health</module>
         <module>microprofile-metrics</module>
-        <module>mongodb</module>
+<!--        Disable MongoDB until quarkus uses mongbd 4.x -->
+<!--        <module>mongodb</module>-->
         <module>mustache</module>
         <module>netty</module>
         <module>netty-http</module>
diff --git 
a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
 
b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
index 37d5e07..0e903b1 100644
--- 
a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
+++ 
b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
@@ -1,29 +1,55 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.component.qute;
 
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.support.component.PropertyConfigurerSupport;
 
 /**
  * Generated by camel build tools - do NOT edit this file!
  */
 @SuppressWarnings("unchecked")
-public class QuteComponentConfigurer extends PropertyConfigurerSupport 
implements GeneratedPropertyConfigurer {
+public class QuteComponentConfigurer extends PropertyConfigurerSupport 
implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         QuteComponent target = (QuteComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
-        case "lazystartproducer":
-        case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
         case "basicpropertybinding":
         case "basicPropertyBinding": 
target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); 
return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
         case "quteengine":
         case "quteEngine": target.setQuteEngine(property(camelContext, 
io.quarkus.qute.Engine.class, value)); return true;
         default: return false;
         }
     }
 
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        Map<String, Object> answer = new CaseInsensitiveMap();
+        answer.put("basicPropertyBinding", boolean.class);
+        answer.put("lazyStartProducer", boolean.class);
+        answer.put("quteEngine", io.quarkus.qute.Engine.class);
+        return answer;
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        QuteComponent target = (QuteComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "basicpropertybinding":
+        case "basicPropertyBinding": return target.isBasicPropertyBinding();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "quteengine":
+        case "quteEngine": return target.getQuteEngine();
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
 
b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
index 86093a9..059e63e 100644
--- 
a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
+++ 
b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
@@ -1,31 +1,61 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.component.qute;
 
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.support.component.PropertyConfigurerSupport;
 
 /**
  * Generated by camel build tools - do NOT edit this file!
  */
 @SuppressWarnings("unchecked")
-public class QuteEndpointConfigurer extends PropertyConfigurerSupport 
implements GeneratedPropertyConfigurer {
+public class QuteEndpointConfigurer extends PropertyConfigurerSupport 
implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         QuteEndpoint target = (QuteEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "basicpropertybinding":
+        case "basicPropertyBinding": 
target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); 
return true;
         case "contentcache":
         case "contentCache": target.setContentCache(property(camelContext, 
boolean.class, value)); return true;
         case "encoding": target.setEncoding(property(camelContext, 
java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
-        case "basicpropertybinding":
-        case "basicPropertyBinding": 
target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); 
return true;
         case "synchronous": target.setSynchronous(property(camelContext, 
boolean.class, value)); return true;
         default: return false;
         }
     }
 
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        Map<String, Object> answer = new CaseInsensitiveMap();
+        answer.put("basicPropertyBinding", boolean.class);
+        answer.put("contentCache", boolean.class);
+        answer.put("encoding", java.lang.String.class);
+        answer.put("lazyStartProducer", boolean.class);
+        answer.put("synchronous", boolean.class);
+        return answer;
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        QuteEndpoint target = (QuteEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "basicpropertybinding":
+        case "basicPropertyBinding": return target.isBasicPropertyBinding();
+        case "contentcache":
+        case "contentCache": return target.isContentCache();
+        case "encoding": return target.getEncoding();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "synchronous": return target.isSynchronous();
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json
 
b/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json
index c50c6d4..486d247 100644
--- 
a/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json
+++ 
b/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json
@@ -1,6 +1,7 @@
 {
   "component": {
     "kind": "component",
+    "name": "qute",
     "scheme": "qute",
     "extendsScheme": "",
     "syntax": "qute:resourceUri",
diff --git 
a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java
 
b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java
index 2e731d3..9b2b597 100644
--- 
a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java
+++ 
b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java
@@ -25,6 +25,7 @@ import 
org.apache.camel.component.reactive.streams.ReactiveStreamsComponent;
 import 
org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService;
 import 
org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServiceFactory;
 import 
org.apache.camel.component.reactive.streams.engine.DefaultCamelReactiveStreamsServiceFactory;
+import 
org.apache.camel.component.reactive.streams.engine.ReactiveStreamsEngineConfiguration;
 import org.apache.camel.support.service.ServiceHelper;
 
 @Recorder
@@ -63,10 +64,17 @@ public class ReactiveStreamsRecorder {
         @Override
         public CamelReactiveStreamsService getReactiveStreamsService() {
             synchronized (this.lock) {
+                if (getReactiveStreamsEngineConfiguration() == null) {
+                    ReactiveStreamsEngineConfiguration 
reactiveStreamsEngineConfiguration = new ReactiveStreamsEngineConfiguration();
+                    
reactiveStreamsEngineConfiguration.setThreadPoolMaxSize(getThreadPoolMaxSize());
+                    
reactiveStreamsEngineConfiguration.setThreadPoolMinSize(getThreadPoolMinSize());
+                    
reactiveStreamsEngineConfiguration.setThreadPoolName(getThreadPoolName());
+                    
setReactiveStreamsEngineConfiguration(reactiveStreamsEngineConfiguration);
+                }
                 if (reactiveStreamService == null) {
                     this.reactiveStreamService = 
reactiveStreamServiceFactory.newInstance(
                             getCamelContext(),
-                            getInternalEngineConfiguration());
+                            getReactiveStreamsEngineConfiguration());
 
                     try {
                         // Start the service and add it to the Camel context 
to expose managed attributes
diff --git 
a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java
 
b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java
index 13925b9..86c3316 100644
--- 
a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java
+++ 
b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java
@@ -42,8 +42,7 @@ public class QuarkusRestComponent extends RestComponent {
 
         RestConfiguration config = new RestConfiguration();
         mergeConfigurations(getCamelContext(), config, 
findGlobalRestConfiguration());
-        mergeConfigurations(getCamelContext(), config, 
getCamelContext().getRestConfiguration(cname, false));
-        mergeConfigurations(getCamelContext(), config, 
getCamelContext().getRestConfiguration(pname, false));
+        mergeConfigurations(getCamelContext(), config, 
getCamelContext().getRestConfiguration());
 
         // if no explicit host was given, then fallback and use default 
configured host
         String h = getAndRemoveOrResolveReferenceParameter(parameters, "host", 
String.class, getHost());
diff --git 
a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java
 
b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java
index 6c1281c..94f5aa0 100644
--- 
a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java
+++ 
b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java
@@ -29,6 +29,7 @@ import org.apache.camel.component.rest.RestEndpoint;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestProducerFactory;
+import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -172,13 +173,7 @@ public class QuarkusRestEndpoint extends RestEndpoint {
         if (factory != null) {
             LOG.debug("Using RestProducerFactory: {}", factory);
 
-            RestConfiguration config = 
getCamelContext().getRestConfiguration(pname, false);
-            if (config == null) {
-                config = getCamelContext().getRestConfiguration();
-            }
-            if (config == null) {
-                config = getCamelContext().getRestConfiguration(pname, true);
-            }
+            RestConfiguration config = 
CamelContextHelper.getRestConfiguration(getCamelContext(), pname);
 
             Producer producer;
             if (apiDocFactory != null) {
diff --git a/extensions/servlet/runtime/pom.xml 
b/extensions/servlet/runtime/pom.xml
index 1566ec5..d470ac2 100644
--- a/extensions/servlet/runtime/pom.xml
+++ b/extensions/servlet/runtime/pom.xml
@@ -27,6 +27,7 @@
 
     <artifactId>camel-quarkus-servlet</artifactId>
     <name>Camel Quarkus :: Servlet :: Runtime</name>
+    <description>Camel servlet transport support.</description>
 
     <properties>
         <firstVersion>0.2.0</firstVersion>
diff --git 
a/integration-tests/braintree/src/main/resources/application.properties 
b/integration-tests/braintree/src/main/resources/application.properties
index 41539a4..0f2c1c2 100644
--- a/integration-tests/braintree/src/main/resources/application.properties
+++ b/integration-tests/braintree/src/main/resources/application.properties
@@ -15,7 +15,6 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 
-camel.component.braintree.configuration = 
#class:org.apache.camel.component.braintree.BraintreeConfiguration
 camel.component.braintree.configuration.environment=SANDBOX
 
camel.component.braintree.configuration.merchantId={{env:BRAINTREE_MERCHANT_ID}}
 camel.component.braintree.configuration.publicKey={{env:BRAINTREE_PUBLIC_KEY}}
diff --git 
a/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml 
b/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml
index 482befb..e491c29 100644
--- a/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml
+++ b/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml
@@ -24,7 +24,7 @@
             http://camel.apache.org/schema/spring/camel-spring.xsd";>
 
     <route id="my-xml-route">
-        <from uri="timer:from-xml?period=3s"/>
+        <from uri="timer:from-xml?period=3000"/>
         <setBody>
             <constant>Hello World!!!</constant>
         </setBody>
diff --git 
a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml 
b/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml
index 482befb..e491c29 100644
--- 
a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml
+++ 
b/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml
@@ -24,7 +24,7 @@
             http://camel.apache.org/schema/spring/camel-spring.xsd";>
 
     <route id="my-xml-route">
-        <from uri="timer:from-xml?period=3s"/>
+        <from uri="timer:from-xml?period=3000"/>
         <setBody>
             <constant>Hello World!!!</constant>
         </setBody>
diff --git 
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
 
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
index ace21af..3546687 100644
--- 
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
+++ 
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
@@ -61,7 +61,7 @@ class FileTest {
 
     @Test
     public void fileWatchCreateUpdate() throws IOException, 
InterruptedException {
-        final Path dir = 
Files.createTempDirectory(FileTest.class.getSimpleName()).toAbsolutePath().normalize();
+        final Path dir = 
Files.createTempDirectory(FileTest.class.getSimpleName()).toRealPath();
         RestAssured.given()
                 .queryParam("path", dir.toString())
                 .get("/file-watch/get-events")
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index b8c962d..156b46b 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -91,7 +91,8 @@
         <module>mail</module>
         <module>messaging</module>
         <module>microprofile</module>
-        <module>mongodb</module>
+<!--        Disable MongoDB until quarkus uses mongbd 4.x -->
+<!--        <module>mongodb</module>-->
         <module>mustache</module>
         <module>netty</module>
         <module>olingo4</module>
diff --git a/pom.xml b/pom.xml
index 35c243f..828843e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
         <awssdk1.version>1.11.714</awssdk1.version>
         <awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version>
         <awssdk2.version>2.10.67</awssdk2.version>
-        <camel.version>3.1.0</camel.version>
+        <camel.version>3.2.0</camel.version>
         <freemarker.version>2.3.30</freemarker.version>
         <google-http-client.version>1.22.0</google-http-client.version>
         <guava.version>26.0-jre</guava.version>
@@ -65,7 +65,8 @@
         <retrofit.version>2.5.0</retrofit.version>
         <!-- Keep spring.version aligned with the version used by Camel -->
         <spring.version>5.2.3.RELEASE</spring.version>
-        <snakeyaml.version>1.25</snakeyaml.version>
+        <!-- TODO: not aligned with quarkus, needed to get snakeyaml 
dataformat to work -->
+        <snakeyaml.version>1.26</snakeyaml.version>
         <xalan.version>2.7.2</xalan.version>
         <xerces.version>2.12.0</xerces.version>
         <xstream.version>1.4.11</xstream.version>
@@ -91,6 +92,8 @@
 
         
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
         <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
+        
<google-auth-library-credentials.version>0.19.0</google-auth-library-credentials.version>
+        
<google-auth-library-oauth2-http.version>0.19.0</google-auth-library-oauth2-http.version>
         <groovy-maven-plugin.version>2.1.1</groovy-maven-plugin.version>
         <groovy.version>3.0.2</groovy.version>
         <jandex-maven-plugin.version>1.0.7</jandex-maven-plugin.version>
@@ -108,6 +111,8 @@
         <!-- NOTE: We pin to this version due to 
https://github.com/apache/camel-quarkus/issues/723 -->
         <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
         <cq-plugin.version>0.2.0</cq-plugin.version>
+        <protobuf-java.version>3.11.0</protobuf-java.version>
+        
<proto-google-common-protos.version>1.17.0</proto-google-common-protos.version>
         <rpkgtests-maven-plugin.version>0.6.0</rpkgtests-maven-plugin.version>
 
         <!-- maven-release-plugin -->
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index b1bc1ee..0e65b85 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -134,6 +134,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-avro-rpc</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-aws-ec2</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -324,6 +329,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-componentdsl</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-consul</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -349,6 +359,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-core-languages</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-couchbase</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -1054,6 +1069,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-avro-rpc</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-aws-commons</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
@@ -1891,6 +1911,21 @@
                 <version>${jackson.version}</version>
             </dependency>
             <dependency>
+                <groupId>com.google.api.grpc</groupId>
+                <artifactId>proto-google-common-protos</artifactId>
+                <version>${proto-google-common-protos.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.auth</groupId>
+                <artifactId>google-auth-library-credentials</artifactId>
+                <version>${google-auth-library-credentials.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.auth</groupId>
+                <artifactId>google-auth-library-oauth2-http</artifactId>
+                <version>${google-auth-library-oauth2-http.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>com.google.code.gson</groupId>
                 <artifactId>gson</artifactId>
                 <version>${gson.version}</version>
@@ -1912,6 +1947,11 @@
                 </exclusions>
             </dependency>
             <dependency>
+                <groupId>com.google.protobuf</groupId>
+                <artifactId>protobuf-java</artifactId>
+                <version>${protobuf-java.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>com.orbitz.consul</groupId>
                 <artifactId>consul-client</artifactId>
                 <version>${consul-client.version}</version>
@@ -1943,6 +1983,16 @@
                 <version>${xstream.version}</version>
             </dependency>
             <dependency>
+                <groupId>io.debezium</groupId>
+                <artifactId>debezium-api</artifactId>
+                <version>1.1.0.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>io.fabric8</groupId>
+                <artifactId>kubernetes-client</artifactId>
+                <version>4.9.0</version>
+            </dependency>
+            <dependency>
                 <groupId>javax.xml.ws</groupId>
                 <artifactId>jaxws-api</artifactId>
                 <version>${java.xml.ws.version}</version>
@@ -1964,6 +2014,11 @@
                 <version>${ahc.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>animal-sniffer-annotations</artifactId>
+                <version>1.18</version>
+            </dependency>
+            <dependency>
                 <groupId>org.codehaus.woodstox</groupId>
                 <artifactId>stax2-api</artifactId>
                 <version>${stax2.version}</version>
@@ -2020,6 +2075,16 @@
                 <version>${snakeyaml.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.threeten</groupId>
+                <artifactId>threetenbp</artifactId>
+                <version>1.4.0</version>
+            </dependency>
+            <dependency>
+                <groupId>software.amazon.awssdk</groupId>
+                <artifactId>annotations</artifactId>
+                <version>${awssdk2.version}</version><!-- override the version 
set in the quarkus BOM -->
+            </dependency>
+            <dependency>
                 <groupId>software.amazon.awssdk</groupId>
                 <artifactId>apache-client</artifactId>
                 <version>${awssdk2.version}</version><!-- override the version 
set in the quarkus BOM -->
@@ -2031,6 +2096,11 @@
             </dependency>
             <dependency>
                 <groupId>software.amazon.awssdk</groupId>
+                <artifactId>http-client-spi</artifactId>
+                <version>${awssdk2.version}</version><!-- override the version 
set in the quarkus BOM -->
+            </dependency>
+            <dependency>
+                <groupId>software.amazon.awssdk</groupId>
                 <artifactId>netty-nio-client</artifactId>
                 <version>${awssdk2.version}</version><!-- override the version 
set in the quarkus BOM -->
             </dependency>
@@ -2040,6 +2110,11 @@
                 <version>${awssdk2.version}</version><!-- override the version 
set in the quarkus BOM -->
             </dependency>
             <dependency>
+                <groupId>software.amazon.awssdk</groupId>
+                <artifactId>utils</artifactId>
+                <version>${awssdk2.version}</version><!-- override the version 
set in the quarkus BOM -->
+            </dependency>
+            <dependency>
                 <groupId>xalan</groupId>
                 <artifactId>xalan</artifactId>
                 <version>${xalan.version}</version>
diff --git 
a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java
 
b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java
index 3fdbf73..c4d4099 100644
--- 
a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java
+++ 
b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java
@@ -20,9 +20,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -56,7 +54,7 @@ public class CqCatalog {
         this.catalog = new DefaultCamelCatalog(true);
     }
 
-    public String toCamelArtifactIdBase(String cqArtifactIdBase) {
+    public String toCamelComponentArtifactIdBase(String cqArtifactIdBase) {
         if ("core".equals(cqArtifactIdBase)) {
             return "base";
         } else if ("reactive-executor".equals(cqArtifactIdBase)) {
@@ -66,12 +64,21 @@ public class CqCatalog {
         }
     }
 
+    public List<String> toCamelArtifactIdBase(String cqArtifactIdBase) {
+        if ("core".equals(cqArtifactIdBase)) {
+            return Arrays.asList("camel-base", "camel-core-languages");
+        } else if ("reactive-executor".equals(cqArtifactIdBase)) {
+            return Collections.singletonList("camel-reactive-executor-vertx");
+        } else {
+            return Collections.singletonList("camel-" + cqArtifactIdBase);
+        }
+    }
+
     public List<WrappedModel> filterModels(String artifactIdBase) {
-        artifactIdBase = toCamelArtifactIdBase(artifactIdBase);
-        final String camelArtifactId = "camel-" + artifactIdBase;
+        List<String> camelArtifactIds = toCamelArtifactIdBase(artifactIdBase);
         return Stream.of(Kind.values())
                 .flatMap(kind -> kind.all(this))
-                .filter(wrappedModel -> 
wrappedModel.getArtifactId().equals(camelArtifactId))
+                .filter(wrappedModel -> 
camelArtifactIds.contains(wrappedModel.getArtifactId()))
                 .collect(Collectors.toList());
     }
 
diff --git 
a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
 
b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
index 3fe41dd..00a8782 100644
--- 
a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
+++ 
b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
@@ -217,7 +217,7 @@ public class PrepareCatalogQuarkusMojo extends AbstractMojo 
{
                                     ("compile".equals(dep.getScope()) || 
dep.getScope() == null))
                             .findFirst();
                     if (artifact.isPresent()) {
-                        camelComponentArtifactId = 
catalog.toCamelArtifactIdBase(artifact.get().getArtifactId());
+                        camelComponentArtifactId = 
catalog.toCamelComponentArtifactIdBase(artifact.get().getArtifactId());
                     }
                 }
                 final Properties props = runtimePom.getProperties() != null ? 
runtimePom.getProperties() : new Properties();

Reply via email to