You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/11/09 08:28:10 UTC

[camel-quarkus] branch camel-master updated (8b197bd -> fb4a079)

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

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


 discard 8b197bd  Temporarily disable failing antora xref check
 discard 704b03f  Upgrade to Camel 3.7.0
     add ee7b1d9  Updated CHANGELOG.md
     add 53a223c  Updated CHANGELOG.md
     add 71a1d15  Updated CHANGELOG.md
     add 10bad13  Updated CHANGELOG.md
     new 0d3c8c7  Upgrade to Camel 3.7.0
     new fb4a079  Temporarily disable failing antora xref check

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (8b197bd)
            \
             N -- N -- N   refs/heads/camel-master (fb4a079)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGELOG.md                                       |  8 ++--
 .../camel/quarkus/main/CamelMainRecorder.java      |  5 ---
 .../component/qute/QuteComponentConfigurer.java    | 35 +++++++-----------
 .../component/qute/QuteEndpointConfigurer.java     | 43 +++++++++-------------
 4 files changed, 37 insertions(+), 54 deletions(-)


[camel-quarkus] 01/02: Upgrade to Camel 3.7.0

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0d3c8c7463d11c033055aa4150755a430b1dd55a
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Oct 19 07:16:38 2020 +0100

    Upgrade to Camel 3.7.0
---
 .../pages/reference/extensions/kubernetes.adoc     |   1 +
 .../ROOT/pages/reference/extensions/leveldb.adoc   |  12 ++-
 .../partials/reference/components/atlasmap.adoc    |   1 +
 .../components/kubernetes-custom-resources.adoc    |  13 +++
 .../partials/reference/dataformats/json-jsonb.adoc |   1 +
 .../ROOT/partials/reference/languages/joor.adoc    |   1 +
 .../partials/reference/others/leveldb-legacy.adoc  |   1 +
 .../quarkus/core/deployment/CamelProcessor.java    |   8 ++
 extensions-core/core/runtime/pom.xml               |  16 +--
 .../org/apache/camel/quarkus/core/BaseModel.java   |  31 ++++--
 .../camel/quarkus/core/FastCamelContext.java       | 117 +++++++++++++++------
 .../org/apache/camel/quarkus/core/FastModel.java   |   1 -
 .../camel/quarkus/core/FastTypeConverter.java      |   2 +-
 .../camel/quarkus/main/CamelMainRecorder.java      |   5 -
 extensions/json-validator/runtime/pom.xml          |   4 +
 .../leveldb/runtime/src/main/doc/limitations.adoc  |  12 ++-
 .../component/leveldb/ObjectCodecSubstitute.java   |  64 -----------
 .../QuarkusLevelDBAggregationRepository.java       |  71 +++++++++++++
 .../MicroprofileFaultToleranceProcessor.java       |   8 ++
 .../component/qute/QuteComponentConfigurer.java    |  28 ++---
 .../component/qute/QuteEndpointConfigurer.java     |  36 ++++---
 .../component/qute/QuteEndpointUriFactory.java     |   4 +-
 .../component/foundation/it/mock/MockResource.java |   4 +-
 .../component/leveldb/it/LeveldbRouteBuilder.java  |  10 +-
 .../quarkus/component/leveldb/it/LeveldbIT.java    |   4 -
 .../quarkus/component/leveldb/it/LeveldbTest.java  |  14 +--
 .../camel/quarkus/component/saga/it/SagaRoute.java |   2 +-
 pom.xml                                            |   3 +-
 poms/bom/pom.xml                                   |  10 ++
 29 files changed, 301 insertions(+), 183 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc b/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
index 03778ed..05cfc34 100644
--- a/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
@@ -18,6 +18,7 @@ Perform operations against Kubernetes API
 == What's inside
 
 * xref:latest@components::kubernetes-config-maps-component.adoc[Kubernetes ConfigMap component], URI syntax: `kubernetes-config-maps:masterUrl`
+* xref:latest@components::kubernetes-custom-resources-component.adoc[Kubernetes Custom Resources component], URI syntax: `kubernetes-custom-resources:masterUrl`
 * xref:latest@components::kubernetes-deployments-component.adoc[Kubernetes Deployments component], URI syntax: `kubernetes-deployments:masterUrl`
 * xref:latest@components::kubernetes-hpa-component.adoc[Kubernetes HPA component], URI syntax: `kubernetes-hpa:masterUrl`
 * xref:latest@components::kubernetes-job-component.adoc[Kubernetes Job component], URI syntax: `kubernetes-job:masterUrl`
diff --git a/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc b/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc
index fda4ef0..190fc8d 100644
--- a/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc
@@ -38,8 +38,14 @@ In native mode the extension uses a port of LevelDB written in Java (https://git
 which is within 10% of the performance of the C++ original. Please upvote https://github.com/apache/camel-quarkus/issues/1911[this issue]
 if you do not like the present state.
 
-This extension does not support binary payloads in native mode since object serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. To work around this limitation, the extension instead uses Jackson serializaton / deserialization.
+Serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. Extension has to use serializationization based
+on Jackson. Aggregation repository in native has to be constructed in one of the following ways:
+
+* Use class `QuarkusLevelDBAggregationRepository` instead of `LevelDBAggregationRepository`.
+* Configure jackson serializer on `LevelDBAggregationRepository` by calling `repo.setSerializer(new JacksonLevelDBSerializer());`
+
+Jackson serializer has limitation towards binary content. If payload object contains binary data (does not concern payloads which are completely binary), Jackson serialization and deserialization won't work correctly.
+To avoid this, define your own jackson serializer/deserealizer via `Module` and provide it to the aggragation repository
+(you can use for example the constructor of `QuarkusLevelDBAggregationRepository`).
 
-The problem will be solved when the camel-leveldb component is refactored to use Jackson and custom
-serializers (see https://issues.apache.org/jira/browse/CAMEL-15679[issue])
 
diff --git a/docs/modules/ROOT/partials/reference/components/atlasmap.adoc b/docs/modules/ROOT/partials/reference/components/atlasmap.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/components/atlasmap.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/components/kubernetes-custom-resources.adoc b/docs/modules/ROOT/partials/reference/components/kubernetes-custom-resources.adoc
new file mode 100644
index 0000000..07f368a
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/components/kubernetes-custom-resources.adoc
@@ -0,0 +1,13 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+:cq-artifact-id: camel-quarkus-kubernetes
+:cq-artifact-id-base: kubernetes
+:cq-native-supported: true
+:cq-status: Stable
+:cq-deprecated: false
+:cq-jvm-since: 1.0.0
+:cq-native-since: 1.0.0
+:cq-camel-part-name: kubernetes-custom-resources
+:cq-camel-part-title: Kubernetes Custom Resources
+:cq-camel-part-description: Perform operations on Kubernetes Custom Resources and get notified on Deployment changes.
+:cq-extension-page-title: Kubernetes
diff --git a/docs/modules/ROOT/partials/reference/dataformats/json-jsonb.adoc b/docs/modules/ROOT/partials/reference/dataformats/json-jsonb.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/dataformats/json-jsonb.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/languages/joor.adoc b/docs/modules/ROOT/partials/reference/languages/joor.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/languages/joor.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/others/leveldb-legacy.adoc b/docs/modules/ROOT/partials/reference/others/leveldb-legacy.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/others/leveldb-legacy.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
index 4b542c9..7efea5e 100644
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.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.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.recording.RecorderContext;
 import io.quarkus.runtime.RuntimeValue;
 import org.apache.camel.impl.converter.BaseTypeConverterRegistry;
@@ -346,4 +347,11 @@ class CamelProcessor {
                 .map(CamelRoutesBuilderClassBuildItem::new)
                 .collect(Collectors.toList());
     }
+
+    @BuildStep
+    NativeImageResourceBuildItem initResources() {
+        return new NativeImageResourceBuildItem(
+                "META-INF/services/org/apache/camel/bean-processor-factory",
+                "META-INF/services/org/apache/camel/rest-registry-factory");
+    }
 }
diff --git a/extensions-core/core/runtime/pom.xml b/extensions-core/core/runtime/pom.xml
index 0f2a2c8..9688e0c 100644
--- a/extensions-core/core/runtime/pom.xml
+++ b/extensions-core/core/runtime/pom.xml
@@ -66,27 +66,31 @@
 
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
+            <artifactId>camel-base</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-base</artifactId>
+            <artifactId>camel-componentdsl</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-languages</artifactId>
+            <artifactId>camel-core-catalog</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-endpointdsl</artifactId>
+            <artifactId>camel-core-engine</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-componentdsl</artifactId>
+            <artifactId>camel-core-languages</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-catalog</artifactId>
+            <artifactId>camel-core-processor</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-endpointdsl</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
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 8ee50e0..df3c89a 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
@@ -29,6 +29,7 @@ import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.impl.DefaultModelReifierFactory;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.FaultToleranceConfigurationDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
@@ -46,6 +47,7 @@ import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 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.spi.ModelReifierFactory;
 import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.util.AntPathMatcher;
 
@@ -53,6 +55,7 @@ public abstract class BaseModel implements Model {
 
     private final CamelContext camelContext;
 
+    private ModelReifierFactory modelReifierFactory = new DefaultModelReifierFactory();
     private final List<RouteDefinition> routeDefinitions = new ArrayList<>();
     private final List<RouteTemplateDefinition> routeTemplateDefinitions = new ArrayList<>();
     private final List<RestDefinition> restDefinitions = new ArrayList<>();
@@ -201,10 +204,11 @@ public abstract class BaseModel implements Model {
             throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
         }
 
-        StringJoiner templatesBuilder = new StringJoiner(", ");
         final Map<String, Object> prop = new HashMap<>();
         // include default values first from the template (and validate that we have inputs for all required parameters)
         if (target.getTemplateParameters() != null) {
+            StringJoiner templatesBuilder = new StringJoiner(", ");
+
             for (RouteTemplateParameterDefinition temp : target.getTemplateParameters()) {
                 if (temp.getDefaultValue() != null) {
                     prop.put(temp.getName(), temp.getDefaultValue());
@@ -215,18 +219,19 @@ public abstract class BaseModel implements Model {
                     }
                 }
             }
+            if (templatesBuilder.length() > 0) {
+                throw new IllegalArgumentException(
+                        "Route template " + routeTemplateId + " the following mandatory parameters must be provided: "
+                                + templatesBuilder.toString());
+            }
         }
-        if (templatesBuilder.length() > 0) {
-            throw new IllegalArgumentException(
-                    "Route template " + routeTemplateId + " the following mandatory parameters must be provided: "
-                            + templatesBuilder.toString());
-        }
+
         // then override with user parameters
         if (parameters != null) {
             prop.putAll(parameters);
         }
 
-        RouteTemplateDefinition.Converter converter = RouteTemplateDefinition::asRouteDefinition;
+        RouteTemplateDefinition.Converter converter = RouteTemplateDefinition.Converter.DEFAULT_CONVERTER;
 
         for (Map.Entry<String, RouteTemplateDefinition.Converter> entry : routeTemplateConverters.entrySet()) {
             final String key = entry.getKey();
@@ -244,7 +249,7 @@ public abstract class BaseModel implements Model {
             }
         }
 
-        RouteDefinition def = converter.apply(target);
+        RouteDefinition def = converter.apply(target, prop);
         if (routeId != null) {
             def.setId(routeId);
         }
@@ -476,6 +481,16 @@ public abstract class BaseModel implements Model {
         return modelLifecycleStrategies;
     }
 
+    @Override
+    public ModelReifierFactory getModelReifierFactory() {
+        return modelReifierFactory;
+    }
+
+    @Override
+    public void setModelReifierFactory(ModelReifierFactory modelReifierFactory) {
+        this.modelReifierFactory = modelReifierFactory;
+    }
+
     /**
      * Should we start newly added routes?
      */
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 4ca613e..fd96350 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
@@ -22,10 +22,8 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-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;
@@ -36,12 +34,12 @@ import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.ValueHolder;
+import org.apache.camel.builder.AdviceWith;
 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.BaseServiceResolver;
 import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
@@ -54,17 +52,19 @@ 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.DefaultExecutorServiceManager;
 import org.apache.camel.impl.engine.DefaultHeadersMapFactory;
 import org.apache.camel.impl.engine.DefaultInflightRepository;
 import org.apache.camel.impl.engine.DefaultInjector;
+import org.apache.camel.impl.engine.DefaultInterceptEndpointFactory;
 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.DefaultRouteFactory;
 import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
 import org.apache.camel.impl.engine.DefaultTracer;
 import org.apache.camel.impl.engine.DefaultTransformerRegistry;
@@ -73,8 +73,8 @@ import org.apache.camel.impl.engine.DefaultUriFactoryResolver;
 import org.apache.camel.impl.engine.DefaultValidatorRegistry;
 import org.apache.camel.impl.engine.EndpointKey;
 import org.apache.camel.impl.engine.RouteService;
-import org.apache.camel.impl.transformer.TransformerKey;
-import org.apache.camel.impl.validator.ValidatorKey;
+import org.apache.camel.impl.engine.TransformerKey;
+import org.apache.camel.impl.engine.ValidatorKey;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.FaultToleranceConfigurationDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
@@ -91,12 +91,16 @@ 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.processor.DefaultAnnotationBasedProcessorFactory;
+import org.apache.camel.processor.DefaultDeferServiceFactory;
+import org.apache.camel.processor.DefaultInternalProcessorFactory;
+import org.apache.camel.processor.DefaultProcessorFactory;
 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.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
@@ -110,17 +114,21 @@ import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.DataType;
+import org.apache.camel.spi.DeferServiceFactory;
 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.InterceptEndpointFactory;
+import org.apache.camel.spi.InternalProcessorFactory;
 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.ModelReifierFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.spi.PackageScanClassResolver;
@@ -132,6 +140,7 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RestRegistryFactory;
 import org.apache.camel.spi.RouteController;
+import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.StreamCachingStrategy;
 import org.apache.camel.spi.Tracer;
@@ -150,7 +159,7 @@ import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public class FastCamelContext extends AbstractCamelContext implements CatalogCamelContext, ModelCamelContext {
-    private final Model model;
+    private Model model;
     private final String version;
     private final XMLRoutesDefinitionLoader xmlLoader;
     private final ModelToXMLDumper modelDumper;
@@ -275,6 +284,21 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    protected InternalProcessorFactory createInternalProcessorFactory() {
+        return new DefaultInternalProcessorFactory();
+    }
+
+    @Override
+    protected InterceptEndpointFactory createInterceptEndpointFactory() {
+        return new DefaultInterceptEndpointFactory();
+    }
+
+    @Override
+    protected RouteFactory createRouteFactory() {
+        return new DefaultRouteFactory();
+    }
+
+    @Override
     protected MessageHistoryFactory createMessageHistoryFactory() {
         return new DefaultMessageHistoryFactory();
     }
@@ -320,18 +344,30 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
     @Override
     protected BeanProxyFactory createBeanProxyFactory() {
-        return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class)
-                .resolve(getCamelContextReference())
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
-                        + "Add camel-bean to classpath."));
+        return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class,
+                getBootstrapFactoryFinder())
+                        .resolve(getCamelContextReference())
+                        .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
+                                + "Add camel-bean to classpath."));
+    }
+
+    @Override
+    protected AnnotationBasedProcessorFactory createAnnotationBasedProcessorFactory() {
+        return new DefaultAnnotationBasedProcessorFactory();
+    }
+
+    @Override
+    protected DeferServiceFactory createDeferServiceFactory() {
+        return new DefaultDeferServiceFactory();
     }
 
     @Override
     protected BeanProcessorFactory createBeanProcessorFactory() {
-        return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class)
-                .resolve(getCamelContextReference())
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
-                        + "Add camel-bean to classpath."));
+        return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class,
+                getBootstrapFactoryFinder())
+                        .resolve(getCamelContextReference())
+                        .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
+                                + "Add camel-bean to classpath."));
     }
 
     @Override
@@ -393,10 +429,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
     @Override
     protected RestRegistryFactory createRestRegistryFactory() {
-        return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class)
-                .resolve(getCamelContextReference())
-                .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
-                        + "Add camel-rest to classpath."));
+        return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class,
+                getBootstrapFactoryFinder())
+                        .resolve(getCamelContextReference())
+                        .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
+                                + "Add camel-rest to classpath."));
     }
 
     @Override
@@ -425,14 +462,6 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
-    public AsyncProcessor createMulticast(Collection<Processor> processors, ExecutorService executor,
-            boolean shutdownExecutorService) {
-        return new MulticastProcessor(getCamelContextReference(), null, processors, null,
-                true, executor, shutdownExecutorService, false, false,
-                0, null, false, false);
-    }
-
-    @Override
     protected ConfigurerResolver createConfigurerResolver() {
         return new DefaultConfigurerResolver();
     }
@@ -444,8 +473,9 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
     @Override
     protected HealthCheckRegistry createHealthCheckRegistry() {
-        return new BaseServiceResolver<>(HealthCheckRegistry.FACTORY, HealthCheckRegistry.class)
-                .resolve(getCamelContextReference()).orElse(null);
+        return new BaseServiceResolver<>(HealthCheckRegistry.FACTORY, HealthCheckRegistry.class,
+                getBootstrapFactoryFinder())
+                        .resolve(getCamelContextReference()).orElse(null);
     }
 
     @Override
@@ -455,10 +485,12 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
     @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."));
+        return new BaseServiceResolver<>(RestBindingJaxbDataFormatFactory.FACTORY, RestBindingJaxbDataFormatFactory.class,
+                getBootstrapFactoryFinder())
+                        .resolve(getCamelContextReference())
+                        .orElseThrow(
+                                () -> new IllegalArgumentException("Cannot find RestBindingJaxbDataFormatFactory on classpath. "
+                                        + "Add camel-jaxb to classpath."));
     }
 
     @Override
@@ -576,6 +608,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
                 .createErrorHandler(processor);
     }
 
+    @Override
+    public void disposeModel() {
+        this.model = null;
+    }
+
     //
     // ModelCamelContext
     //
@@ -804,6 +841,16 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    public ModelReifierFactory getModelReifierFactory() {
+        return model.getModelReifierFactory();
+    }
+
+    @Override
+    public void setModelReifierFactory(ModelReifierFactory modelReifierFactory) {
+        model.setModelReifierFactory(modelReifierFactory);
+    }
+
+    @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
@@ -860,7 +907,7 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
     @Override
     public RouteDefinition adviceWith(RouteDefinition definition, AdviceWithRouteBuilder builder) throws Exception {
-        return RouteReifier.adviceWith(definition, this, builder);
+        return AdviceWith.adviceWith(definition, this, builder);
     }
 
     @SuppressWarnings("unchecked")
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 fd299a8..f266f57 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
@@ -22,5 +22,4 @@ public class FastModel extends BaseModel {
     public FastModel(CamelContext camelContext) {
         super(camelContext);
     }
-
 }
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 6492338..2df9239 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
@@ -25,7 +25,7 @@ public class FastTypeConverter extends DefaultTypeConverter {
     private static final Logger LOG = LoggerFactory.getLogger(FastTypeConverter.class);
 
     public FastTypeConverter() {
-        super(null, null, null, null, false);
+        super(null, null, null, false);
     }
 
     @Override
diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java
index d7ba558..0b3e65c 100644
--- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java
+++ b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java
@@ -42,11 +42,6 @@ public class CamelMainRecorder {
         main.setRoutesCollector(routesCollector.getValue());
         main.addMainListener(new CamelMainEventBridge());
 
-        // autowire only non null values as components may have configured
-        // through CDI or from a Build Item thus those values should not be
-        // overridden
-        main.configure().setAutowireComponentPropertiesNonNullOnly(true);
-
         // properties are loaded through MicroProfile Config so there's
         // no need to look for sources.
         main.setDefaultPropertyPlaceholderLocation("false");
diff --git a/extensions/json-validator/runtime/pom.xml b/extensions/json-validator/runtime/pom.xml
index cb6ee35..d94e66e 100644
--- a/extensions/json-validator/runtime/pom.xml
+++ b/extensions/json-validator/runtime/pom.xml
@@ -56,6 +56,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-json-validator</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.jruby.joni</groupId>
+            <artifactId>joni</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/leveldb/runtime/src/main/doc/limitations.adoc b/extensions/leveldb/runtime/src/main/doc/limitations.adoc
index e7ebff9..9b74c99 100644
--- a/extensions/leveldb/runtime/src/main/doc/limitations.adoc
+++ b/extensions/leveldb/runtime/src/main/doc/limitations.adoc
@@ -2,7 +2,13 @@ In native mode the extension uses a port of LevelDB written in Java (https://git
 which is within 10% of the performance of the C++ original. Please upvote https://github.com/apache/camel-quarkus/issues/1911[this issue]
 if you do not like the present state.
 
-This extension does not support binary payloads in native mode since object serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. To work around this limitation, the extension instead uses Jackson serializaton / deserialization.
+Serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. Extension has to use serializationization based
+on Jackson. Aggregation repository in native has to be constructed in one of the following ways:
+
+* Use class `QuarkusLevelDBAggregationRepository` instead of `LevelDBAggregationRepository`.
+* Configure jackson serializer on `LevelDBAggregationRepository` by calling `repo.setSerializer(new JacksonLevelDBSerializer());`
+
+Jackson serializer has limitation towards binary content. If payload object contains binary data (does not concern payloads which are completely binary), Jackson serialization and deserialization won't work correctly.
+To avoid this, define your own jackson serializer/deserealizer via `Module` and provide it to the aggragation repository
+(you can use for example the constructor of `QuarkusLevelDBAggregationRepository`).
 
-The problem will be solved when the camel-leveldb component is refactored to use Jackson and custom
-serializers (see https://issues.apache.org/jira/browse/CAMEL-15679[issue])
diff --git a/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/ObjectCodecSubstitute.java b/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/ObjectCodecSubstitute.java
deleted file mode 100644
index 8ab38a4..0000000
--- a/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/ObjectCodecSubstitute.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.leveldb;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.oracle.svm.core.annotate.Inject;
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
-import org.apache.camel.support.DefaultExchangeHolder;
-import org.fusesource.hawtbuf.codec.ObjectCodec;
-
-/**
- * This os workaround for serialization of DefaultExchangeHolder.
- * Once serialization is implemented in graalVM (see https://github.com/oracle/graal/issues/460), this substitution
- * could
- * be removed.
- */
-@TargetClass(value = ObjectCodec.class)
-final class ObjectCodecSubstitute {
-
-    @Inject
-    private ObjectMapper objectMapper;
-
-    @Substitute
-    public void encode(Object object, DataOutput dataOut) throws IOException {
-        if (objectMapper == null) {
-            objectMapper = new ObjectMapper();
-            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
-            objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
-        }
-        objectMapper.writeValue(dataOut, object);
-    }
-
-    @Substitute
-    public Object decode(DataInput dataIn) throws IOException {
-        if (objectMapper == null) {
-            objectMapper = new ObjectMapper();
-            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
-            objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
-        }
-        return objectMapper.readValue(dataIn, DefaultExchangeHolder.class);
-    }
-
-}
diff --git a/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/QuarkusLevelDBAggregationRepository.java b/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/QuarkusLevelDBAggregationRepository.java
new file mode 100644
index 0000000..7e930ec
--- /dev/null
+++ b/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/QuarkusLevelDBAggregationRepository.java
@@ -0,0 +1,71 @@
+/*
+ * 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.leveldb;
+
+import com.fasterxml.jackson.databind.Module;
+import org.apache.camel.component.leveldb.LevelDBAggregationRepository;
+import org.apache.camel.component.leveldb.LevelDBFile;
+import org.apache.camel.component.leveldb.serializer.JacksonLevelDBSerializer;
+
+public class QuarkusLevelDBAggregationRepository extends LevelDBAggregationRepository {
+
+    public QuarkusLevelDBAggregationRepository() {
+        initSerializer(null);
+    }
+
+    public QuarkusLevelDBAggregationRepository(String repositoryName) {
+        super(repositoryName);
+        initSerializer(null);
+    }
+
+    public QuarkusLevelDBAggregationRepository(String repositoryName, String persistentFileName) {
+        super(repositoryName, persistentFileName);
+        initSerializer(null);
+    }
+
+    public QuarkusLevelDBAggregationRepository(String repositoryName, LevelDBFile levelDBFile) {
+        super(repositoryName, levelDBFile);
+        initSerializer(null);
+    }
+
+    //constructor with module
+
+    public QuarkusLevelDBAggregationRepository(Module module) {
+        JacksonLevelDBSerializer serializer = new JacksonLevelDBSerializer(module);
+        initSerializer(module);
+    }
+
+    public QuarkusLevelDBAggregationRepository(String repositoryName, Module module) {
+        super(repositoryName);
+        initSerializer(module);
+    }
+
+    public QuarkusLevelDBAggregationRepository(String repositoryName, String persistentFileName, Module module) {
+        super(repositoryName, persistentFileName);
+        initSerializer(module);
+    }
+
+    public QuarkusLevelDBAggregationRepository(String repositoryName, LevelDBFile levelDBFile, Module module) {
+        super(repositoryName, levelDBFile);
+        initSerializer(module);
+    }
+
+    private void initSerializer(Module module) {
+        JacksonLevelDBSerializer serializer = new JacksonLevelDBSerializer(module);
+        setSerializer(serializer);
+    }
+}
diff --git a/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java b/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java
index d5b8b14..05673b1 100644
--- a/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java
+++ b/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java
@@ -18,6 +18,7 @@ package org.apache.camel.quarkus.component.microprofile.fault.tolerance.deployme
 
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 
 class MicroprofileFaultToleranceProcessor {
 
@@ -27,4 +28,11 @@ class MicroprofileFaultToleranceProcessor {
     FeatureBuildItem feature() {
         return new FeatureBuildItem(FEATURE);
     }
+
+    @BuildStep
+    NativeImageResourceBuildItem initResources() {
+        return new NativeImageResourceBuildItem(
+                "META-INF/services/org/apache/camel/model/CircuitBreakerDefinition");
+    }
+
 }
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 95e6cc2..cd93a33 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
@@ -4,8 +4,10 @@ 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.ExtendedPropertyConfigurerGetter;
 import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
 import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.support.component.PropertyConfigurerSupport;
 
@@ -15,16 +17,6 @@ import org.apache.camel.support.component.PropertyConfigurerSupport;
 @SuppressWarnings("unchecked")
 public class QuteComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("allowTemplateFromHeader", boolean.class);
-        map.put("lazyStartProducer", boolean.class);
-        map.put("basicPropertyBinding", boolean.class);
-        map.put("quteEngine", io.quarkus.qute.Engine.class);
-        ALL_OPTIONS = map;
-    }
-
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
         QuteComponent target = (QuteComponent) obj;
@@ -42,8 +34,18 @@ public class QuteComponentConfigurer extends PropertyConfigurerSupport implement
     }
 
     @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": return boolean.class;
+        case "basicpropertybinding":
+        case "basicPropertyBinding": return boolean.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "quteengine":
+        case "quteEngine": return io.quarkus.qute.Engine.class;
+        default: return null;
+        }
     }
 
     @Override
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 983fa1c..ba4acd5 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
@@ -4,8 +4,10 @@ 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.ExtendedPropertyConfigurerGetter;
 import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
 import org.apache.camel.util.CaseInsensitiveMap;
 import org.apache.camel.support.component.PropertyConfigurerSupport;
 
@@ -15,20 +17,6 @@ import org.apache.camel.support.component.PropertyConfigurerSupport;
 @SuppressWarnings("unchecked")
 public class QuteEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("resourceUri", java.lang.String.class);
-        map.put("allowContextMapAll", boolean.class);
-        map.put("allowTemplateFromHeader", boolean.class);
-        map.put("contentCache", boolean.class);
-        map.put("encoding", java.lang.String.class);
-        map.put("lazyStartProducer", boolean.class);
-        map.put("basicPropertyBinding", boolean.class);
-        map.put("synchronous", boolean.class);
-        ALL_OPTIONS = map;
-    }
-
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
         QuteEndpoint target = (QuteEndpoint) obj;
@@ -50,8 +38,22 @@ public class QuteEndpointConfigurer extends PropertyConfigurerSupport implements
     }
 
     @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowcontextmapall":
+        case "allowContextMapAll": return boolean.class;
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": return boolean.class;
+        case "basicpropertybinding":
+        case "basicPropertyBinding": return boolean.class;
+        case "contentcache":
+        case "contentCache": return boolean.class;
+        case "encoding": return java.lang.String.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "synchronous": return boolean.class;
+        default: return null;
+        }
     }
 
     @Override
diff --git a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java
index f24c41f..28b192e 100644
--- a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java
+++ b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java
@@ -39,14 +39,14 @@ public class QuteEndpointUriFactory extends org.apache.camel.support.component.E
     }
 
     @Override
-    public String buildUri(String scheme, Map<String, Object> properties) throws URISyntaxException {
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
         String syntax = scheme + BASE;
         String uri = syntax;
 
         Map<String, Object> copy = new HashMap<>(properties);
 
         uri = buildPathParameter(syntax, uri, "resourceUri", null, true, copy);
-        uri = buildQueryParameters(uri, copy);
+        uri = buildQueryParameters(uri, copy, encode);
         return uri;
     }
 
diff --git a/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java
index 6d0e29c..985a507 100644
--- a/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java
+++ b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java
@@ -26,10 +26,10 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.AdviceWith;
 import org.apache.camel.builder.AdviceWithRouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.reifier.RouteReifier;
 import org.jboss.logging.Logger;
 import org.wildfly.common.Assert;
 
@@ -51,7 +51,7 @@ public class MockResource {
 
         // advice the first route using the inlined AdviceWith route builder
         // which has extended capabilities than the regular route builder
-        RouteReifier.adviceWith(context.adapt(ModelCamelContext.class).getRouteDefinition("forMocking"), context,
+        AdviceWith.adviceWith(context.adapt(ModelCamelContext.class).getRouteDefinition("forMocking"), context,
                 new AdviceWithRouteBuilder() {
                     @Override
                     public void configure() throws Exception {
diff --git a/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java b/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java
index ed9674f..a5f7b8b 100644
--- a/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java
+++ b/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java
@@ -24,6 +24,7 @@ import org.apache.camel.AggregationStrategy;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.leveldb.LevelDBAggregationRepository;
+import org.apache.camel.quarkus.component.leveldb.QuarkusLevelDBAggregationRepository;
 
 public class LeveldbRouteBuilder extends RouteBuilder {
     public static final String DIRECT_START = "direct:start";
@@ -39,21 +40,22 @@ public class LeveldbRouteBuilder extends RouteBuilder {
 
     @Override
     public void configure() throws Exception {
-        LevelDBAggregationRepository repo = new LevelDBAggregationRepository("repo", DATA_FOLDER + "leveldb.dat");
+        LevelDBAggregationRepository repo = new QuarkusLevelDBAggregationRepository("repo", DATA_FOLDER + "leveldb.dat");
 
         from(DIRECT_START)
                 .aggregate(header("id"), new MyAggregationStrategy())
                 .completionSize(7).aggregationRepository(repo)
                 .to(MOCK_RESULT);
 
-        LevelDBAggregationRepository repoBinary = new LevelDBAggregationRepository("repo", DATA_FOLDER + "levelBinarydb.dat");
+        LevelDBAggregationRepository repoBinary = new QuarkusLevelDBAggregationRepository("repo",
+                DATA_FOLDER + "levelBinarydb.dat");
 
         from(DIRECT_BINARY)
                 .aggregate(header("id"), new BinaryAggregationStrategy())
                 .completionSize(3).aggregationRepository(repoBinary)
                 .to(MOCK_RESULT);
 
-        LevelDBAggregationRepository repoWithFailure = new LevelDBAggregationRepository("repoWithFailure",
+        LevelDBAggregationRepository repoWithFailure = new QuarkusLevelDBAggregationRepository("repoWithFailure",
                 DATA_FOLDER + "leveldbWithFailure.dat");
 
         repoWithFailure.setUseRecovery(true);
@@ -72,7 +74,7 @@ public class LeveldbRouteBuilder extends RouteBuilder {
                 .to(MOCK_RESULT)
                 .end();
 
-        LevelDBAggregationRepository repoDeadLetter = new LevelDBAggregationRepository("repoDeadLetter",
+        LevelDBAggregationRepository repoDeadLetter = new QuarkusLevelDBAggregationRepository("repoDeadLetter",
                 DATA_FOLDER + "leveldbDeadLetter.dat");
 
         repoDeadLetter.setUseRecovery(true);
diff --git a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java
index e4fc4ba..743e2ab 100644
--- a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java
+++ b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java
@@ -20,8 +20,4 @@ import io.quarkus.test.junit.NativeImageTest;
 
 @NativeImageTest
 class LeveldbIT extends LeveldbTest {
-    @Override
-    boolean doeasBinaryDataWork() {
-        return false;
-    }
 }
diff --git a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java
index 1ffa037..3d473b8 100644
--- a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java
+++ b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java
@@ -101,19 +101,7 @@ class LeveldbTest {
                 .statusCode(201)
                 .extract().as(Boolean.class);
 
-        if (doeasBinaryDataWork()) {
-            assertTrue(theSame);
-        } else {
-            assertFalse(theSame);
-        }
-    }
-
-    /**
-     * Until binary payload is not supported, in native binary test will fail.
-     * Needs https://issues.apache.org/jira/browse/CAMEL-15679
-     */
-    boolean doeasBinaryDataWork() {
-        return true;
+        assertTrue(theSame);
     }
 
     private Map<String, List<Map<String, Object>>> testAggregate(String path, List<String> messages) {
diff --git a/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java b/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java
index 32dc3cb..6196340 100644
--- a/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java
+++ b/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java
@@ -21,9 +21,9 @@ import javax.inject.Inject;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.saga.InMemorySagaService;
 import org.apache.camel.model.SagaPropagation;
 import org.apache.camel.saga.CamelSagaService;
+import org.apache.camel.saga.InMemorySagaService;
 
 @ApplicationScoped
 public class SagaRoute extends RouteBuilder {
diff --git a/pom.xml b/pom.xml
index 98b7973..7295173 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
         <awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version>
         <awssdk2.version>2.14.3</awssdk2.version>
         <bouncycastle.version>1.66</bouncycastle.version>
-        <camel.version>3.6.0</camel.version>
+        <camel.version>3.7.0-SNAPSHOT</camel.version>
         <commons-beanutils.version>1.9.4</commons-beanutils.version><!-- keep in sync with Camel -->
         <commons-cli.version>1.4</commons-cli.version><!-- keep in sync with Quarkus, via quarkus-bootstrap-core -->
         <commons-collections.version>3.2.2</commons-collections.version><!-- used by hbase, should be pretty stable as commons-collections are not developed actively anymore -->
@@ -72,6 +72,7 @@
         <jackson-asl.version>1.9.13</jackson-asl.version><!-- Mess in the transitive dependencies of spark and hbase-testing-util -->
         <java.xml.ws.version>2.3.1</java.xml.ws.version>
         <jcodings.version>1.0.55</jcodings.version><!-- used by hbase -->
+        <joni.version>2.1.31</joni.version><!-- used by json-validator -->
         <jaxen.version>1.2.0</jaxen.version>
         <javassist.version>3.22.0-CR2</javassist.version><!-- debezium -->
         <jersey-sun.version>1.19.4</jersey-sun.version><!-- Spark -->
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index ab3e1e7..6b7003a 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -656,6 +656,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-core-processor</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-couchbase</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -5602,6 +5607,11 @@
                 <version>${jcodings.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.jruby.joni</groupId>
+                <artifactId>joni</artifactId>
+                <version>${joni.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-aop</artifactId>
                 <version>${spring.version}</version>


[camel-quarkus] 02/02: Temporarily disable failing antora xref check

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fb4a079a945078ba1d92bfc594cabecaeecf15a0
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Nov 5 14:52:19 2020 +0000

    Temporarily disable failing antora xref check
---
 docs/pom.xml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/docs/pom.xml b/docs/pom.xml
index 5e75ce8..66f18e0 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -102,6 +102,7 @@
                                     <commandlineArgs>${project.basedir}/node/yarn/dist/bin/yarn.js install --no-progress --force --non-interactive --frozen-lockfile</commandlineArgs>
                                 </configuration>
                             </execution>
+                            <!-- TODO: Reinstate this - https://github.com/apache/camel-quarkus/issues/1996
                             <execution>
                                 <id>antora-xref-check</id>
                                 <goals>
@@ -110,9 +111,10 @@
                                 <phase>verify</phase>
                                 <configuration>
                                     <executable>${project.basedir}/node/node</executable>
-                                    <commandlineArgs>${project.basedir}/node/yarn/dist/bin/yarn.js --non-interactive antora --generator @antora/xref-validator antora-playbook.yml</commandlineArgs>
+                                    <commandlineArgs>${project.basedir}/node/yarn/dist/bin/yarn.js &#45;&#45;non-interactive antora &#45;&#45;generator @antora/xref-validator antora-playbook.yml</commandlineArgs>
                                 </configuration>
                             </execution>
+                            -->
                         </executions>
                     </plugin>
                 </plugins>