You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2020/08/19 19:44:58 UTC

[camel-quarkus] branch camel-master updated (4dfd14b -> 3f20bf3)

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

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


 discard 4dfd14b  Temporary workaround for CAMEL-15426
 discard ed9c537  Add ArangoDB component extension #1533
 discard 9d2b2e0  Extension for camel-threadpoolfactory-vertx #1430
 discard d99374c  Fixed setter and getter for RouteTemplateDefinition + small optimization
 discard 91870ef  Upgrade to Camel 3.5.0-SNAPSHOT
     add c65c451  Use proper extension page URLs in quarkus-extension.yaml
     new 45bb0d9  Upgrade to Camel 3.5.0-SNAPSHOT
     new fff8008  Fixed setter and getter for RouteTemplateDefinition + small optimization
     new 4f243c5  Extension for camel-threadpoolfactory-vertx #1430
     new 1bca54d  Add ArangoDB component extension #1533
     new 3f20bf3  Temporary workaround for CAMEL-15426

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   (4dfd14b)
            \
             N -- N -- N   refs/heads/camel-master (3f20bf3)

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 5 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:
 catalog/pom.xml                                                | 10 ++++++++++
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  4 +++-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  4 ++--
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  4 ++--
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  4 ++--
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  3 ++-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../runtime/src/main/resources/META-INF/quarkus-extension.yaml |  2 +-
 pom.xml                                                        |  2 +-
 170 files changed, 185 insertions(+), 172 deletions(-)


[camel-quarkus] 02/05: Fixed setter and getter for RouteTemplateDefinition + small optimization

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

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

commit fff8008b0a34652f51d52c8f65c5673db67e0016
Author: JiriOndrusek <on...@gmail.com>
AuthorDate: Mon Aug 17 11:59:12 2020 +0200

    Fixed setter and getter for RouteTemplateDefinition + small optimization
---
 .../src/main/java/org/apache/camel/quarkus/core/BaseModel.java    | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

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 58d93bc..636f6cc 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
@@ -27,6 +27,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.NodeIdFactory;
 import org.apache.camel.util.CollectionStringBuffer;
 
 public abstract class BaseModel implements Model {
@@ -120,8 +121,9 @@ public abstract class BaseModel implements Model {
 
     @Override
     public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+        NodeIdFactory nodeIdFactory = camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory();
         for (RouteTemplateDefinition route : routeTemplateDefinitions) {
-            if (route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+            if (route.idOrCreate(nodeIdFactory).equals(id)) {
                 return route;
             }
         }
@@ -138,12 +140,12 @@ public abstract class BaseModel implements Model {
 
     @Override
     public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
-        this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+        this.routeTemplateDefinitions.add(routeTemplateDefinition);
     }
 
     @Override
     public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
-        routeTemplateDefinitions.removeAll(routeTemplateDefinitions);
+        this.routeTemplateDefinitions.removeAll(routeTemplateDefinitions);
     }
 
     @Override


[camel-quarkus] 04/05: Add ArangoDB component extension #1533

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

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

commit 1bca54db3b0ad2ea1620227db1d4eddba2d5bfc4
Author: Zineb Bendhiba <be...@gmail.com>
AuthorDate: Tue Aug 18 09:41:58 2020 +0200

    Add ArangoDB component extension #1533
---
 docs/modules/ROOT/nav.adoc                         |   1 +
 docs/modules/ROOT/pages/reference/components.adoc  |   5 +-
 .../ROOT/pages/reference/extensions/arangodb.adoc  |  29 ++++
 docs/modules/ROOT/pages/reference/index.adoc       |   5 +-
 extensions/arangodb/deployment/pom.xml             |  63 +++++++++
 .../arangodb/deployment/ArangodbProcessor.java     |  30 ++++
 extensions/arangodb/pom.xml                        |  39 ++++++
 extensions/arangodb/runtime/pom.xml                |  94 +++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  31 +++++
 extensions/pom.xml                                 |   1 +
 integration-tests/arangodb/pom.xml                 | 131 ++++++++++++++++++
 .../component/arangodb/it/ArangodbResource.java    | 148 ++++++++++++++++++++
 .../quarkus/component/arangodb/it/ArangodbIT.java  |  24 ++++
 .../component/arangodb/it/ArangodbTest.java        | 152 +++++++++++++++++++++
 .../arangodb/it/ArangodbTestResource.java          |  71 ++++++++++
 integration-tests/pom.xml                          |   1 +
 poms/bom/pom.xml                                   |  15 ++
 tooling/scripts/test-categories.yaml               |   1 +
 18 files changed, 839 insertions(+), 2 deletions(-)

diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index e1770a5..dd943b4 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -16,6 +16,7 @@
 // extensions: START
 *** xref:reference/extensions/activemq.adoc[ActiveMQ]
 *** xref:reference/extensions/amqp.adoc[AMQP]
+*** xref:reference/extensions/arangodb.adoc[ArangoDb]
 *** xref:reference/extensions/ahc.adoc[Async HTTP Client (AHC)]
 *** xref:reference/extensions/ahc-ws.adoc[Async HTTP Client (AHC) Websocket]
 *** xref:reference/extensions/attachments.adoc[Attachments]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index b612535..66db9ed 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -4,7 +4,7 @@
 [camel-quarkus-components]
 = Camel components supported on Quarkus
 
-157 components in 122 JAR artifacts (2 deprecated, 17 JVM only)
+158 components in 123 JAR artifacts (2 deprecated, 17 JVM only)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -16,6 +16,9 @@ Stable | 1.0.0 | Send messages to (or consume from) Apache ActiveMQ. This compon
 | xref:reference/extensions/amqp.adoc[AMQP] | camel-quarkus-amqp | Native +
 Stable | 1.0.0 | Messaging with AMQP protocol using Apache QPid Client.
 
+| xref:reference/extensions/arangodb.adoc[ArangoDb] | camel-quarkus-arangodb | Native +
+Stable | 1.1.0 | Perform operations on ArangoDb documents, collections and graphs.
+
 | xref:reference/extensions/ahc.adoc[Async HTTP Client (AHC)] | camel-quarkus-ahc | Native +
 Stable | 1.0.0 | Call external HTTP services using Async Http Client.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/arangodb.adoc b/docs/modules/ROOT/pages/reference/extensions/arangodb.adoc
new file mode 100644
index 0000000..16b937c
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/arangodb.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[arangodb]]
+= ArangoDb
+:page-aliases: extensions/arangodb.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported##
+
+Perform operations on ArangoDb documents, collections and graphs.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/arangodb-component.html[ArangoDb component], URI syntax: `arangodb:database`
+
+Please refer to the above link for usage and configuration details.
+
+== Maven coordinates
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel.quarkus</groupId>
+    <artifactId>camel-quarkus-arangodb</artifactId>
+</dependency>
+----
+
+Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications.
diff --git a/docs/modules/ROOT/pages/reference/index.adoc b/docs/modules/ROOT/pages/reference/index.adoc
index 0f05a71..d0430f9 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -17,7 +17,7 @@ In case you are missing some extension in the list:
   https://github.com/apache/camel-quarkus/issues[report] any issues you encounter.
 ====
 
-167 extensions (2 deprecated, 14 JVM only)
+168 extensions (2 deprecated, 14 JVM only)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -29,6 +29,9 @@ Stable | 1.0.0 | Send messages to (or consume from) Apache ActiveMQ. This compon
 |  xref:reference/extensions/amqp.adoc[AMQP]  | camel-quarkus-amqp | Native +
 Stable | 1.0.0 | Messaging with AMQP protocol using Apache QPid Client.
 
+|  xref:reference/extensions/arangodb.adoc[ArangoDb]  | camel-quarkus-arangodb | Native +
+Stable | 1.1.0 | Perform operations on ArangoDb documents, collections and graphs.
+
 |  xref:reference/extensions/ahc.adoc[Async HTTP Client (AHC)]  | camel-quarkus-ahc | Native +
 Stable | 1.0.0 | Call external HTTP services using Async Http Client.
 
diff --git a/extensions/arangodb/deployment/pom.xml b/extensions/arangodb/deployment/pom.xml
new file mode 100644
index 0000000..4bdd196
--- /dev/null
+++ b/extensions/arangodb/deployment/pom.xml
@@ -0,0 +1,63 @@
+<?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-arangodb-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-arangodb-deployment</artifactId>
+    <name>Camel Quarkus :: ArangoDb :: Deployment</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-arangodb</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/extensions/arangodb/deployment/src/main/java/org/apache/camel/quarkus/component/arangodb/deployment/ArangodbProcessor.java b/extensions/arangodb/deployment/src/main/java/org/apache/camel/quarkus/component/arangodb/deployment/ArangodbProcessor.java
new file mode 100644
index 0000000..c98ae1a
--- /dev/null
+++ b/extensions/arangodb/deployment/src/main/java/org/apache/camel/quarkus/component/arangodb/deployment/ArangodbProcessor.java
@@ -0,0 +1,30 @@
+/*
+ * 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.arangodb.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+class ArangodbProcessor {
+
+    private static final String FEATURE = "camel-arangodb";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+}
diff --git a/extensions/arangodb/pom.xml b/extensions/arangodb/pom.xml
new file mode 100644
index 0000000..9c247e7
--- /dev/null
+++ b/extensions/arangodb/pom.xml
@@ -0,0 +1,39 @@
+<?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-build-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-arangodb-parent</artifactId>
+    <name>Camel Quarkus :: ArangoDb</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+    </modules>
+</project>
diff --git a/extensions/arangodb/runtime/pom.xml b/extensions/arangodb/runtime/pom.xml
new file mode 100644
index 0000000..a21eb09
--- /dev/null
+++ b/extensions/arangodb/runtime/pom.xml
@@ -0,0 +1,94 @@
+<?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-arangodb-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-arangodb</artifactId>
+    <name>Camel Quarkus :: ArangoDb :: Runtime</name>
+    <description>Perform operations on ArangoDb documents, collections and graphs.</description>
+
+    <properties>
+        <firstVersion>1.1.0</firstVersion>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-arangodb</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>update-extension-doc-page</id>
+                        <goals><goal>update-extension-doc-page</goal></goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            <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>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions/arangodb/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/arangodb/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..c7b1a0d
--- /dev/null
+++ b/extensions/arangodb/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+# This is a generated file. Do not edit directly!
+# To re-generate, run the following command from the top level directory:
+#
+#   mvn -N cq:update-quarkus-metadata
+#
+---
+name: "Camel ArangoDb"
+description: "Perform operations on ArangoDb documents, collections and graphs"
+metadata:
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/arangodb.html"
+  categories:
+  - "integration"
+  status:
+  - "stable"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 3284d70..3b2218e 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -37,6 +37,7 @@
         <module>ahc</module>
         <module>ahc-ws</module>
         <module>amqp</module>
+        <module>arangodb</module>
         <module>attachments</module>
         <module>avro</module>
         <module>aws-ec2</module>
diff --git a/integration-tests/arangodb/pom.xml b/integration-tests/arangodb/pom.xml
new file mode 100644
index 0000000..43c78bd
--- /dev/null
+++ b/integration-tests/arangodb/pom.xml
@@ -0,0 +1,131 @@
+<?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-integration-tests</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-integration-test-arangodb</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: ArangoDb</name>
+    <description>Integration tests for Camel Quarkus ArangoDb 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-arangodb-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-arangodb</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>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-integration-testcontainers-support</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>
+
+    <profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <properties>
+                <quarkus.package.type>native</quarkus.package.type>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/integration-tests/arangodb/src/main/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbResource.java b/integration-tests/arangodb/src/main/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbResource.java
new file mode 100644
index 0000000..b307fbe
--- /dev/null
+++ b/integration-tests/arangodb/src/main/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbResource.java
@@ -0,0 +1,148 @@
+/*
+ * 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.arangodb.it;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import com.arangodb.ArangoCursor;
+import com.arangodb.entity.DocumentCreateEntity;
+import com.arangodb.entity.DocumentDeleteEntity;
+import com.arangodb.util.MapBuilder;
+import org.apache.camel.ProducerTemplate;
+import org.jboss.logging.Logger;
+
+import static org.apache.camel.component.arangodb.ArangoDbConstants.AQL_QUERY;
+import static org.apache.camel.component.arangodb.ArangoDbConstants.AQL_QUERY_BIND_PARAMETERS;
+import static org.apache.camel.component.arangodb.ArangoDbConstants.AQL_QUERY_OPTIONS;
+import static org.apache.camel.component.arangodb.ArangoDbConstants.ARANGO_KEY;
+import static org.apache.camel.component.arangodb.ArangoDbConstants.RESULT_CLASS_TYPE;
+
+@Path("/arangodb/camel")
+@ApplicationScoped
+public class ArangodbResource {
+
+    private static final Logger LOG = Logger.getLogger(ArangodbResource.class);
+
+    @Inject
+    ProducerTemplate producerTemplate;
+
+    @PUT
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response put(String message) throws Exception {
+        LOG.infof("Saving to arangodb: %s", message);
+        final DocumentCreateEntity response = producerTemplate.requestBody(
+                "arangodb:test?host={{camel.arangodb.host}}&port={{camel.arangodb.port}}&collection=camel&operation=SAVE_DOCUMENT",
+                message, DocumentCreateEntity.class);
+        LOG.infof("Got response from arangodb: %s", response);
+        return Response
+                .created(new URI("https://camel.apache.org/"))
+                .entity(response.getKey())
+                .build();
+    }
+
+    @Path("{key}")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response get(@PathParam("key") String key) throws Exception {
+        LOG.infof("Retrieve document from arangodb with key: %s", key);
+        final String response = producerTemplate.requestBodyAndHeader(
+                "arangodb:test?host={{camel.arangodb.host}}&port={{camel.arangodb.port}}&collection=camel&operation=FIND_DOCUMENT_BY_KEY",
+                key, RESULT_CLASS_TYPE, String.class, String.class);
+        LOG.infof("Got response from arangodb: %s", response);
+        return Response
+                .ok()
+                .entity(response)
+                .build();
+    }
+
+    @Path("{key}")
+    @DELETE
+    public Response delete(@PathParam("key") String key) throws Exception {
+        LOG.infof("Delete document from arangodb with key : %s", key);
+        producerTemplate.requestBody(
+                "arangodb:test?host={{camel.arangodb.host}}&port={{camel.arangodb.port}}&collection=camel&operation=DELETE_DOCUMENT",
+                key, DocumentDeleteEntity.class);
+
+        return Response
+                .ok()
+                .build();
+    }
+
+    @Path("{key}")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    public Response post(@PathParam("key") String key, String msg) throws Exception {
+        LOG.infof("Update document from arangodb with key : %s", key);
+        Map<String, Object> headers = new HashMap<>();
+        headers.put(RESULT_CLASS_TYPE, String.class);
+        headers.put(ARANGO_KEY, key);
+
+        producerTemplate.requestBodyAndHeaders(
+                "arangodb:test?host={{camel.arangodb.host}}&port={{camel.arangodb.port}}&collection=camel&operation=UPDATE_DOCUMENT",
+                msg, headers, String.class);
+        return Response
+                .ok()
+                .build();
+    }
+
+    @Path("/foo/{fooName}")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response getByFooName(@PathParam("fooName") String fooName) throws Exception {
+        LOG.infof("Retrieve document from arangodb with foo: %s", fooName);
+
+        String query = "FOR t IN camel FILTER t.foo == @foo RETURN t";
+        Map<String, Object> bindVars = new MapBuilder().put("foo", fooName)
+                .get();
+
+        Map<String, Object> headers = new HashMap<>();
+        headers.put(AQL_QUERY, query);
+        headers.put(AQL_QUERY_BIND_PARAMETERS, bindVars);
+        headers.put(AQL_QUERY_OPTIONS, null);
+        headers.put(RESULT_CLASS_TYPE, String.class);
+
+        final ArangoCursor<String> responseCursor = producerTemplate.requestBodyAndHeaders(
+                "arangodb:test?host={{camel.arangodb.host}}&port={{camel.arangodb.port}}&operation=AQL_QUERY",
+                fooName, headers, ArangoCursor.class);
+
+        String response = "";
+        if (responseCursor.hasNext()) {
+            response = responseCursor.next();
+        }
+
+        return Response
+                .ok()
+                .entity(response)
+                .build();
+    }
+}
diff --git a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbIT.java b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbIT.java
new file mode 100644
index 0000000..8e86006
--- /dev/null
+++ b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbIT.java
@@ -0,0 +1,24 @@
+/*
+ * 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.arangodb.it;
+
+import io.quarkus.test.junit.NativeImageTest;
+
+@NativeImageTest
+class ArangodbIT extends ArangodbTest {
+
+}
diff --git a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java
new file mode 100644
index 0000000..ed2daa1
--- /dev/null
+++ b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java
@@ -0,0 +1,152 @@
+/*
+ * 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.arangodb.it;
+
+import com.arangodb.ArangoCollection;
+import com.arangodb.ArangoDB;
+import com.arangodb.ArangoDatabase;
+import com.arangodb.entity.BaseDocument;
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import io.restassured.response.Response;
+import io.restassured.specification.RequestSpecification;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@QuarkusTest
+@QuarkusTestResource(ArangodbTestResource.class)
+class ArangodbTest {
+    protected static final String DATABASE_NAME = "test";
+    protected static final String COLLECTION_NAME = "camel";
+    protected static ArangoDB arangoDb;
+    protected static ArangoCollection collection;
+
+    @Test
+    public void testCreateGetDeleteDocument() {
+        // create a new document
+        RequestSpecification request = RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("{\"foo\":\"bar\"}");
+        Response response = request.put("/arangodb/camel");
+
+        int statusCode = response.getStatusCode();
+        assertEquals(201, statusCode);
+        // getting key of the document inserted
+        String key = response.body().asString().trim();
+
+        // get the document by key
+        request = RestAssured.given()
+                .contentType(ContentType.TEXT);
+        response = request.get("/arangodb/camel/" + key);
+        statusCode = response.getStatusCode();
+        assertEquals(200, statusCode);
+        String document = response.body().asString().trim();
+        assertTrue(document.contains("\"foo\":\"bar\""));
+
+        // delete document
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .delete("/arangodb/camel/" + key)
+                .then()
+                .statusCode(200);
+
+        // search for the document deleted
+        BaseDocument documentDeleted = collection.getDocument(key, BaseDocument.class);
+        assertNull(documentDeleted);
+    }
+
+    @Test
+    public void testUpdateDocument() {
+        // insert one Document
+        BaseDocument myObject = new BaseDocument();
+        myObject.setKey("myKey");
+        myObject.addAttribute("foo", "bar");
+        collection.insertDocument(myObject);
+
+        // udpate document
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("{\"key\":\"myKey\",\"foo\":\"hello\", \"gg\":\"42\"}")
+                .post("/arangodb/camel/myKey")
+                .then()
+                .statusCode(200);
+
+        // get document by key
+        RequestSpecification request = RestAssured.given()
+                .contentType(ContentType.TEXT);
+        Response response = request.get("/arangodb/camel/myKey");
+        assertEquals(200, response.getStatusCode());
+        String document = response.body().asString().trim();
+        assertTrue(document.contains("\"foo\":\"hello\""));
+        assertTrue(document.contains("\"gg\":\"42\""));
+    }
+
+    @Test
+    public void testAQLQuery() {
+        // insert first Document
+        BaseDocument myObject1 = new BaseDocument();
+        myObject1.setKey("keyBar1");
+        myObject1.addAttribute("foo", "bar1");
+        collection.insertDocument(myObject1);
+
+        // insert second Document
+        BaseDocument myObject2 = new BaseDocument();
+        myObject2.setKey("keyBar2");
+        myObject2.addAttribute("foo", "bar2");
+        collection.insertDocument(myObject2);
+
+        // get document with foo = bar1
+        RequestSpecification request = RestAssured.given()
+                .contentType(ContentType.TEXT);
+        Response response = request.get("/arangodb/camel/foo/bar1");
+        assertEquals(200, response.getStatusCode());
+        String document = response.body().asString().trim();
+        assertTrue(document.contains("\"_key\":\"keyBar1\""));
+
+        //get document with foo = bar2
+        request = RestAssured.given()
+                .contentType(ContentType.TEXT);
+        response = request.get("/arangodb/camel/foo/bar2");
+        assertEquals(200, response.getStatusCode());
+        document = response.body().asString().trim();
+        assertTrue(document.contains("\"_key\":\"keyBar2\""));
+    }
+
+    @BeforeAll
+    public static void setup() {
+        String host = System.getProperty("camel.arangodb.host");
+        Integer port = Integer.valueOf(System.getProperty("camel.arangodb.port"));
+        arangoDb = new ArangoDB.Builder().host(host, port).build();
+        arangoDb.createDatabase(DATABASE_NAME);
+        ArangoDatabase arangoDatabase = arangoDb.db(DATABASE_NAME);
+        arangoDatabase.createCollection(COLLECTION_NAME);
+        collection = arangoDatabase.collection(COLLECTION_NAME);
+    }
+
+    @AfterAll
+    public static void teardown() {
+        arangoDb.shutdown();
+    }
+
+}
diff --git a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.java b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.java
new file mode 100644
index 0000000..beb6a64
--- /dev/null
+++ b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.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.arangodb.it;
+
+import java.util.Map;
+
+import org.apache.camel.quarkus.testcontainers.ContainerResourceLifecycleManager;
+import org.apache.camel.util.CollectionHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.utility.TestcontainersConfiguration;
+
+public class ArangodbTestResource implements ContainerResourceLifecycleManager {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ArangodbTestResource.class);
+    private GenericContainer container;
+    private static final String CONTAINER_NAME = "arango";
+    private static final String ARANGO_IMAGE = "arangodb:latest";
+    private static final String ARANGO_NO_AUTH = "ARANGO_NO_AUTH";
+    private static final Integer PORT_DEFAULT = 8529;
+
+    @Override
+    public Map<String, String> start() {
+        LOGGER.info(TestcontainersConfiguration.getInstance().toString());
+
+        try {
+            container = new GenericContainer(ARANGO_IMAGE)
+                    .withExposedPorts(PORT_DEFAULT)
+                    .withEnv(ARANGO_NO_AUTH, "1")
+                    .withNetworkAliases(CONTAINER_NAME)
+                    .waitingFor(Wait.forListeningPort());
+
+            container.start();
+
+            return CollectionHelper.mapOf(
+                    "camel.arangodb.port",
+                    container.getMappedPort(PORT_DEFAULT).toString(),
+                    "camel.arangodb.host",
+                    container.getContainerIpAddress());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void stop() {
+        try {
+            if (container != null) {
+                container.stop();
+            }
+        } catch (Exception e) {
+            // ignored
+        }
+    }
+}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 05d91bb..fdf0975 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -66,6 +66,7 @@
         <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
         <module>activemq</module>
         <module>amqp</module>
+        <module>arangodb</module>
         <module>avro</module>
         <module>aws</module>
         <module>aws2</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index be9d98d..2b95823 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -131,6 +131,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-arangodb</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-attachments</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -1286,6 +1291,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-arangodb</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-arangodb-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-attachments</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index a563a20..500a621 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -41,6 +41,7 @@ database:
   - kudu
   - mongodb
   - sql
+  - arangodb
 dataformats:
   - avro
   - base64


[camel-quarkus] 03/05: Extension for camel-threadpoolfactory-vertx #1430

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

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

commit 4f243c597b8b8e4b2f088c1320491828a3d8bb0b
Author: JiriOndrusek <on...@gmail.com>
AuthorDate: Tue Jul 7 15:34:29 2020 +0200

    Extension for camel-threadpoolfactory-vertx #1430
---
 docs/modules/ROOT/nav.adoc                         |   1 +
 .../extensions/threadpoolfactory-vertx.adoc        |  29 ++++++
 docs/modules/ROOT/pages/reference/index.adoc       |   5 +-
 docs/modules/ROOT/pages/reference/others.adoc      |   5 +-
 extensions-core/pom.xml                            |   1 +
 .../threadpoolfactory-vertx/deployment/pom.xml     |  67 ++++++++++++++
 .../ThreadpoolfactoryVertxProcessor.java           |  42 +++++++++
 .../{ => threadpoolfactory-vertx}/pom.xml          |  25 ++----
 .../threadpoolfactory-vertx/runtime/pom.xml        | 100 +++++++++++++++++++++
 .../vertx/ThreadPoolFactoryVertxRecorder.java      |  40 +++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  31 +++++++
 .../cassandraql/integration-test/pom.xml           |  10 +++
 integration-tests/main/pom.xml                     |   4 +
 .../camel/quarkus/main/CoreMainResource.java       |  19 ++++
 .../apache/camel/quarkus/main/CoreMainTest.java    |  14 +++
 poms/bom/pom.xml                                   |  15 ++++
 16 files changed, 390 insertions(+), 18 deletions(-)

diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index a9a50bb..e1770a5 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -164,6 +164,7 @@
 *** xref:reference/extensions/stream.adoc[Stream]
 *** xref:reference/extensions/tarfile.adoc[Tar File]
 *** xref:reference/extensions/telegram.adoc[Telegram]
+*** xref:reference/extensions/threadpoolfactory-vertx.adoc[ThreadPoolFactory Vert.x]
 *** xref:reference/extensions/tagsoup.adoc[TidyMarkup]
 *** xref:reference/extensions/tika.adoc[Tika]
 *** xref:reference/extensions/timer.adoc[Timer]
diff --git a/docs/modules/ROOT/pages/reference/extensions/threadpoolfactory-vertx.adoc b/docs/modules/ROOT/pages/reference/extensions/threadpoolfactory-vertx.adoc
new file mode 100644
index 0000000..315f5e5
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/threadpoolfactory-vertx.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[threadpoolfactory-vertx]]
+= ThreadPoolFactory Vert.x
+:page-aliases: extensions/threadpoolfactory-vertx.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.0.0-CR4## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported##
+
+ThreadPoolFactory for camel-core using Vert.x
+
+== What's inside
+
+* https://camel.apache.org/components/latest/others/threadpoolfactory-vertx.html[ThreadPoolFactory Vert.x]
+
+Please refer to the above link for usage and configuration details.
+
+== Maven coordinates
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel.quarkus</groupId>
+    <artifactId>camel-quarkus-threadpoolfactory-vertx</artifactId>
+</dependency>
+----
+
+Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications.
diff --git a/docs/modules/ROOT/pages/reference/index.adoc b/docs/modules/ROOT/pages/reference/index.adoc
index b4679f5..0f05a71 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -17,7 +17,7 @@ In case you are missing some extension in the list:
   https://github.com/apache/camel-quarkus/issues[report] any issues you encounter.
 ====
 
-166 extensions (2 deprecated, 14 JVM only)
+167 extensions (2 deprecated, 14 JVM only)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -473,6 +473,9 @@ Stable | 0.3.0 | Archive files into tarballs or extract files from tarballs.
 |  xref:reference/extensions/telegram.adoc[Telegram]  | camel-quarkus-telegram | Native +
 Stable | 1.0.0 | Send and receive messages acting as a Telegram Bot Telegram Bot API.
 
+|  xref:reference/extensions/threadpoolfactory-vertx.adoc[ThreadPoolFactory Vert.x]  | camel-quarkus-threadpoolfactory-vertx | Native +
+Stable | 1.0.0-CR4 | ThreadPoolFactory for camel-core using Vert.x
+
 |  xref:reference/extensions/tagsoup.adoc[TidyMarkup]  | camel-quarkus-tagsoup | Native +
 Stable | 1.0.0 | Parse (potentially invalid) HTML into valid HTML or DOM.
 
diff --git a/docs/modules/ROOT/pages/reference/others.adoc b/docs/modules/ROOT/pages/reference/others.adoc
index 277dc5c..016d722 100644
--- a/docs/modules/ROOT/pages/reference/others.adoc
+++ b/docs/modules/ROOT/pages/reference/others.adoc
@@ -4,7 +4,7 @@
 [camel-quarkus-others]
 = Camel misc. components supported on Quarkus
 
-18 misc. components in 18 JAR artifacts (1 deprecated)
+19 misc. components in 19 JAR artifacts (1 deprecated)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -58,6 +58,9 @@ Stable | 0.3.0 | Reactive Executor for camel-core using Vert.x
 | xref:reference/extensions/smallrye-reactive-messaging.adoc[SmallRye Reactive Messaging] | camel-quarkus-smallrye-reactive-messaging | Native +
 Stable | 1.0.0 | Camel integration with SmallRye Reactive Messaging
 
+| xref:reference/extensions/threadpoolfactory-vertx.adoc[ThreadPoolFactory Vert.x] | camel-quarkus-threadpoolfactory-vertx | Native +
+Stable | 1.0.0-CR4 | ThreadPoolFactory for camel-core using Vert.x
+
 | xref:reference/extensions/xml-io.adoc[XML IO] | camel-quarkus-xml-io | Native +
 Stable | 1.0.0 | An XML stack for parsing XML route definitions. A fast an light weight alternative to camel-quarkus-xml-jaxp
 
diff --git a/extensions-core/pom.xml b/extensions-core/pom.xml
index 8d687ce..12a4aa0 100644
--- a/extensions-core/pom.xml
+++ b/extensions-core/pom.xml
@@ -36,6 +36,7 @@
         <module>core-cloud</module>
         <module>http-common</module>
         <module>reactive-executor</module>
+        <module>threadpoolfactory-vertx</module>
         <module>xml-io</module>
         <module>xml-jaxb</module>
         <module>xml-jaxp</module>
diff --git a/extensions-core/threadpoolfactory-vertx/deployment/pom.xml b/extensions-core/threadpoolfactory-vertx/deployment/pom.xml
new file mode 100644
index 0000000..df8bca0
--- /dev/null
+++ b/extensions-core/threadpoolfactory-vertx/deployment/pom.xml
@@ -0,0 +1,67 @@
+<?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-threadpoolfactory-vertx-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-threadpoolfactory-vertx-deployment</artifactId>
+    <name>Camel Quarkus :: ThreadPoolFactory Vert.x :: Deployment</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-threadpoolfactory-vertx</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-vertx-deployment</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/extensions-core/threadpoolfactory-vertx/deployment/src/main/java/org/apache/camel/quarkus/component/threadpoolfactory/vertx/deployment/ThreadpoolfactoryVertxProcessor.java b/extensions-core/threadpoolfactory-vertx/deployment/src/main/java/org/apache/camel/quarkus/component/threadpoolfactory/vertx/deployment/ThreadpoolfactoryVertxProcessor.java
new file mode 100644
index 0000000..669245d
--- /dev/null
+++ b/extensions-core/threadpoolfactory-vertx/deployment/src/main/java/org/apache/camel/quarkus/component/threadpoolfactory/vertx/deployment/ThreadpoolfactoryVertxProcessor.java
@@ -0,0 +1,42 @@
+/*
+ * 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.threadpoolfactory.vertx.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.vertx.deployment.VertxBuildItem;
+import org.apache.camel.quarkus.component.threadpoolfactory.vertx.ThreadPoolFactoryVertxRecorder;
+import org.apache.camel.quarkus.core.deployment.spi.RuntimeCamelContextCustomizerBuildItem;
+
+class ThreadpoolfactoryVertxProcessor {
+
+    private static final String FEATURE = "camel-threadpoolfactory-vertx";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    @Record(value = ExecutionTime.RUNTIME_INIT, optional = true)
+    @BuildStep
+    public RuntimeCamelContextCustomizerBuildItem threadPoolFactoryCustomizer(ThreadPoolFactoryVertxRecorder recorder,
+            VertxBuildItem vertx) {
+        return new RuntimeCamelContextCustomizerBuildItem(recorder.createThreadPoolFactoryCustomizer(vertx.getVertx()));
+    }
+}
diff --git a/extensions-core/pom.xml b/extensions-core/threadpoolfactory-vertx/pom.xml
similarity index 61%
copy from extensions-core/pom.xml
copy to extensions-core/threadpoolfactory-vertx/pom.xml
index 8d687ce..01581ff 100644
--- a/extensions-core/pom.xml
+++ b/extensions-core/threadpoolfactory-vertx/pom.xml
@@ -17,30 +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</artifactId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-extensions-core</artifactId>
+    <artifactId>camel-quarkus-threadpoolfactory-vertx-parent</artifactId>
+    <name>Camel Quarkus :: ThreadPoolFactory Vert.x</name>
     <packaging>pom</packaging>
 
-    <name>Camel Quarkus :: Extensions :: Core</name>
-
     <modules>
-        <module>core</module>
-        <module>core-cloud</module>
-        <module>http-common</module>
-        <module>reactive-executor</module>
-        <module>xml-io</module>
-        <module>xml-jaxb</module>
-        <module>xml-jaxp</module>
-        <module>caffeine-lrucache</module>
-        <module>main</module>
+        <module>deployment</module>
+        <module>runtime</module>
     </modules>
-
 </project>
diff --git a/extensions-core/threadpoolfactory-vertx/runtime/pom.xml b/extensions-core/threadpoolfactory-vertx/runtime/pom.xml
new file mode 100644
index 0000000..168d891
--- /dev/null
+++ b/extensions-core/threadpoolfactory-vertx/runtime/pom.xml
@@ -0,0 +1,100 @@
+<?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-threadpoolfactory-vertx-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-threadpoolfactory-vertx</artifactId>
+    <name>Camel Quarkus :: ThreadPoolFactory Vert.x :: Runtime</name>
+    <description>ThreadPoolFactory for camel-core using Vert.x</description>
+
+    <properties>
+        <firstVersion>1.0.0-CR4</firstVersion>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-threadpoolfactory-vertx</artifactId>
+        </dependency>
+
+        <!-- quarkus -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-vertx</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>update-extension-doc-page</id>
+                        <goals><goal>update-extension-doc-page</goal></goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            <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>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-core/threadpoolfactory-vertx/runtime/src/main/java/org/apache/camel/quarkus/component/threadpoolfactory/vertx/ThreadPoolFactoryVertxRecorder.java b/extensions-core/threadpoolfactory-vertx/runtime/src/main/java/org/apache/camel/quarkus/component/threadpoolfactory/vertx/ThreadPoolFactoryVertxRecorder.java
new file mode 100644
index 0000000..833bd0d
--- /dev/null
+++ b/extensions-core/threadpoolfactory-vertx/runtime/src/main/java/org/apache/camel/quarkus/component/threadpoolfactory/vertx/ThreadPoolFactoryVertxRecorder.java
@@ -0,0 +1,40 @@
+/*
+ * 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.threadpoolfactory.vertx;
+
+import io.quarkus.runtime.RuntimeValue;
+import io.quarkus.runtime.annotations.Recorder;
+import io.vertx.core.Vertx;
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.quarkus.core.CamelContextCustomizer;
+import org.apache.camel.reactive.vertx.VertXThreadPoolFactory;
+
+@Recorder
+public class ThreadPoolFactoryVertxRecorder {
+    public RuntimeValue<CamelContextCustomizer> createThreadPoolFactoryCustomizer(RuntimeValue<Vertx> vertx) {
+        return new RuntimeValue<>(new CamelContextCustomizer() {
+            @Override
+            public void customize(CamelContext context) {
+                VertXThreadPoolFactory threadPoolFactory = new VertXThreadPoolFactory();
+                threadPoolFactory.setVertx(vertx.getValue());
+
+                context.adapt(ExtendedCamelContext.class).getExecutorServiceManager().setThreadPoolFactory(threadPoolFactory);
+            }
+        });
+    }
+}
diff --git a/extensions-core/threadpoolfactory-vertx/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-core/threadpoolfactory-vertx/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..9b28950
--- /dev/null
+++ b/extensions-core/threadpoolfactory-vertx/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+# This is a generated file. Do not edit directly!
+# To re-generate, run the following command from the top level directory:
+#
+#   mvn -N cq:update-quarkus-metadata
+#
+---
+name: "Camel ThreadPoolFactory Vert.x"
+description: "ThreadPoolFactory for camel-core using Vert.x"
+metadata:
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/threadpoolfactory-vertx.html"
+  categories:
+  - "integration"
+  status:
+  - "stable"
diff --git a/extensions-jvm/cassandraql/integration-test/pom.xml b/extensions-jvm/cassandraql/integration-test/pom.xml
index 6ce6199..d02abf9 100644
--- a/extensions-jvm/cassandraql/integration-test/pom.xml
+++ b/extensions-jvm/cassandraql/integration-test/pom.xml
@@ -44,6 +44,16 @@
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-cassandraql</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>groovy</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>groovy-json</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
diff --git a/integration-tests/main/pom.xml b/integration-tests/main/pom.xml
index 4e1189f..d7564ba 100644
--- a/integration-tests/main/pom.xml
+++ b/integration-tests/main/pom.xml
@@ -58,6 +58,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-threadpoolfactory-vertx</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-direct</artifactId>
         </dependency>
         <dependency>
diff --git a/integration-tests/main/src/main/java/org/apache/camel/quarkus/main/CoreMainResource.java b/integration-tests/main/src/main/java/org/apache/camel/quarkus/main/CoreMainResource.java
index 4985754..df1a819 100644
--- a/integration-tests/main/src/main/java/org/apache/camel/quarkus/main/CoreMainResource.java
+++ b/integration-tests/main/src/main/java/org/apache/camel/quarkus/main/CoreMainResource.java
@@ -41,11 +41,13 @@ import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.quarkus.core.FastFactoryFinderResolver;
 import org.apache.camel.quarkus.it.support.typeconverter.MyPair;
 import org.apache.camel.reactive.vertx.VertXReactiveExecutor;
+import org.apache.camel.reactive.vertx.VertXThreadPoolFactory;
 import org.apache.camel.spi.BeanRepository;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.ReactiveExecutor;
+import org.apache.camel.spi.ThreadPoolFactory;
 import org.apache.camel.support.DefaultRegistry;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
@@ -185,6 +187,23 @@ public class CoreMainResource {
         return builder.build();
     }
 
+    @Path("/context/thread-pool-factory")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public JsonObject threadPoolFactory() {
+        ThreadPoolFactory threadPoolFactory = main.getCamelContext().adapt(ExtendedCamelContext.class)
+                .getExecutorServiceManager().getThreadPoolFactory();
+
+        JsonObjectBuilder builder = Json.createObjectBuilder();
+        builder.add("class", threadPoolFactory.getClass().getName());
+
+        if (threadPoolFactory instanceof VertXThreadPoolFactory) {
+            builder.add("configured", ((VertXThreadPoolFactory) threadPoolFactory).getVertx() != null);
+        }
+
+        return builder.build();
+    }
+
     @Path("/converter/my-pair")
     @POST
     @Produces(MediaType.APPLICATION_JSON)
diff --git a/integration-tests/main/src/test/java/org/apache/camel/quarkus/main/CoreMainTest.java b/integration-tests/main/src/test/java/org/apache/camel/quarkus/main/CoreMainTest.java
index 448b22e..1e2aeb0 100644
--- a/integration-tests/main/src/test/java/org/apache/camel/quarkus/main/CoreMainTest.java
+++ b/integration-tests/main/src/test/java/org/apache/camel/quarkus/main/CoreMainTest.java
@@ -32,6 +32,7 @@ import org.apache.camel.quarkus.core.DisabledXMLRoutesDefinitionLoader;
 import org.apache.camel.quarkus.core.RegistryRoutesLoaders;
 import org.apache.camel.quarkus.it.support.mainlistener.CustomMainListener;
 import org.apache.camel.reactive.vertx.VertXReactiveExecutor;
+import org.apache.camel.reactive.vertx.VertXThreadPoolFactory;
 import org.apache.camel.support.DefaultLRUCacheFactory;
 import org.junit.jupiter.api.Test;
 
@@ -167,6 +168,19 @@ public class CoreMainTest {
     }
 
     @Test
+    public void testThreadPoolFactory() {
+        JsonPath executor = RestAssured.when().get("/test/context/thread-pool-factory")
+                .then()
+                .statusCode(200)
+                .extract()
+                .body()
+                .jsonPath();
+
+        assertThat(executor.getString("class")).isEqualTo(VertXThreadPoolFactory.class.getName());
+        assertThat(executor.getBoolean("configured")).isTrue();
+    }
+
+    @Test
     public void testCustomTypeConverter() {
         RestAssured.given()
                 .contentType(ContentType.TEXT).body("a:b")
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 3b77afe..be9d98d 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1154,6 +1154,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-threadpoolfactory-vertx</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-tika</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -2956,6 +2961,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-threadpoolfactory-vertx</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-threadpoolfactory-vertx-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-tika</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/05: Upgrade to Camel 3.5.0-SNAPSHOT

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

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

commit 45bb0d9081ca5a36b19e18e4d0d68ca0d476df90
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jun 18 16:30:49 2020 +0100

    Upgrade to Camel 3.5.0-SNAPSHOT
---
 docs/modules/ROOT/pages/reference/components.adoc  | 16 ++--
 .../ROOT/pages/reference/extensions/aws-s3.adoc    |  2 +-
 .../ROOT/pages/reference/extensions/aws2-s3.adoc   |  2 +-
 .../ROOT/pages/reference/extensions/azure.adoc     |  4 +-
 .../pages/reference/extensions/cassandraql.adoc    |  2 +-
 docs/modules/ROOT/pages/reference/index.adoc       | 10 +--
 .../org/apache/camel/quarkus/core/BaseModel.java   | 98 ++++++++++++++++++++++
 .../core/DisabledXMLRoutesDefinitionLoader.java    |  5 ++
 .../camel/quarkus/core/FastCamelContext.java       | 45 ++++++++++
 .../quarkus/main/CamelMainRoutesCollector.java     | 26 ++++++
 extensions-jvm/cassandraql/runtime/pom.xml         | 16 ++++
 .../main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../deployment/DebeziumSupportProcessor.java       | 14 +++-
 .../main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../main/resources/META-INF/quarkus-extension.yaml |  2 +-
 .../main/resources/META-INF/quarkus-extension.yaml |  1 +
 .../runtime/support/CustomRoutesCollector.java     |  7 ++
 pom.xml                                            | 11 +--
 poms/bom/pom.xml                                   | 10 +++
 19 files changed, 246 insertions(+), 29 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index c686f6a..b612535 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -4,7 +4,7 @@
 [camel-quarkus-components]
 = Camel components supported on Quarkus
 
-157 components in 122 JAR artifacts (0 deprecated, 17 JVM only)
+157 components in 122 JAR artifacts (2 deprecated, 17 JVM only)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -59,7 +59,7 @@ Stable | 1.0.0 | Manage AWS MSK instances using AWS SDK version 2.x.
 Stable | 1.0.0 | Manage AWS MQ instances using AWS SDK version 2.x.
 
 | xref:reference/extensions/aws2-s3.adoc[AWS 2 S3 Storage Service] | camel-quarkus-aws2-s3 | Native +
-Stable | 1.0.0 | Store and retrie objects from AWS S3 Storage Service using AWS SDK version 2.x.
+Stable | 1.0.0 | Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x.
 
 | xref:reference/extensions/aws2-ses.adoc[AWS 2 Simple Email Service (SES)] | camel-quarkus-aws2-ses | Native +
 Stable | 1.0.0 | Send e-mails through AWS SES service using AWS SDK version 2.x.
@@ -98,7 +98,7 @@ Stable | 1.0.0 | Consume data from AWS Kinesis Firehose streams.
 Stable | 1.0.0 | Manage and invoke AWS Lambda functions.
 
 | xref:reference/extensions/aws-s3.adoc[AWS S3 Storage Service] | camel-quarkus-aws-s3 | Native +
-Stable | 0.2.0 | Store and retrie objects from AWS S3 Storage Service.
+Stable | 0.2.0 | Store and retrieve objects from AWS S3 Storage Service.
 
 | xref:reference/extensions/aws-sns.adoc[AWS Simple Notification System (SNS)] | camel-quarkus-aws-sns | Native +
 Stable | 0.2.0 | Send messages to an AWS Simple Notification Topic.
@@ -115,11 +115,11 @@ Stable | 1.0.0 | Store and Retrieve data from/to AWS SDB service.
 | xref:reference/extensions/aws-translate.adoc[AWS Translate] | camel-quarkus-aws-translate | Native +
 Stable | 1.0.0 | Translate texts using AWS Translate.
 
-| xref:reference/extensions/azure.adoc[Azure Storage Blob Service (Legacy)] | camel-quarkus-azure | Native +
-Stable | 1.0.0 | Store and retrieve blobs from Azure Storage Blob Service.
+| xref:reference/extensions/azure.adoc[Azure Storage Blob Service (Deprecated)] | camel-quarkus-azure | Native +
+Stable | 1.0.0 | *deprecated* Store and retrieve blobs from Azure Storage Blob Service.
 
-| xref:reference/extensions/azure.adoc[Azure Storage Queue Service (Legacy)] | camel-quarkus-azure | Native +
-Stable | 1.0.0 | Store and retrieve messages from Azure Storage Queue Service.
+| xref:reference/extensions/azure.adoc[Azure Storage Queue Service (Deprecated)] | camel-quarkus-azure | Native +
+Stable | 1.0.0 | *deprecated* Store and retrieve messages from Azure Storage Queue Service.
 
 | xref:reference/extensions/bean.adoc[Bean] | camel-quarkus-bean | Native +
 Stable | 0.2.0 | Invoke methods of Java beans stored in Camel registry.
@@ -134,7 +134,7 @@ Stable | 1.0.0 | Upload, download and manage files, folders, groups, collaborati
 Stable | 1.2.0 | Process payments using Braintree Payments.
 
 | xref:reference/extensions/cassandraql.adoc[Cassandra CQL] | camel-quarkus-cassandraql | JVM +
-Preview | 1.0.0 | Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API).
+Preview | 1.0.0 | Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API). Based on Cassandra Java Driver provided by DataStax.
 
 | xref:reference/extensions/bean.adoc[Class] | camel-quarkus-bean | Native +
 Stable | 0.2.0 | Invoke methods of Java beans specified by class name.
diff --git a/docs/modules/ROOT/pages/reference/extensions/aws-s3.adoc b/docs/modules/ROOT/pages/reference/extensions/aws-s3.adoc
index 70e597c..1c65c20 100644
--- a/docs/modules/ROOT/pages/reference/extensions/aws-s3.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/aws-s3.adoc
@@ -8,7 +8,7 @@
 [.badges]
 [.badge-key]##Since Camel Quarkus##[.badge-version]##0.2.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported##
 
-Store and retrie objects from AWS S3 Storage Service.
+Store and retrieve objects from AWS S3 Storage Service.
 
 == What's inside
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/aws2-s3.adoc b/docs/modules/ROOT/pages/reference/extensions/aws2-s3.adoc
index ee5d5bb..596ae49 100644
--- a/docs/modules/ROOT/pages/reference/extensions/aws2-s3.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/aws2-s3.adoc
@@ -8,7 +8,7 @@
 [.badges]
 [.badge-key]##Since Camel Quarkus##[.badge-version]##1.0.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported##
 
-Store and retrie objects from AWS S3 Storage Service using AWS SDK version 2.x.
+Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x.
 
 == What's inside
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/azure.adoc b/docs/modules/ROOT/pages/reference/extensions/azure.adoc
index 6a86f80..fff8dd7 100644
--- a/docs/modules/ROOT/pages/reference/extensions/azure.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/azure.adoc
@@ -12,8 +12,8 @@ Store and retrieve blobs from Azure Storage Blob Service or store and retrieve m
 
 == What's inside
 
-* https://camel.apache.org/components/latest/azure-blob-component.html[Azure Storage Blob Service (Legacy) component], URI syntax: `azure-blob:containerOrBlobUri`
-* https://camel.apache.org/components/latest/azure-queue-component.html[Azure Storage Queue Service (Legacy) component], URI syntax: `azure-queue:containerAndQueueUri`
+* https://camel.apache.org/components/latest/azure-blob-component.html[Azure Storage Blob Service (Deprecated) component], URI syntax: `azure-blob:containerOrBlobUri`
+* https://camel.apache.org/components/latest/azure-queue-component.html[Azure Storage Queue Service (Deprecated) component], URI syntax: `azure-queue:containerAndQueueUri`
 
 Please refer to the above links for usage and configuration details.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/cassandraql.adoc b/docs/modules/ROOT/pages/reference/extensions/cassandraql.adoc
index ebc0f07..70508a1 100644
--- a/docs/modules/ROOT/pages/reference/extensions/cassandraql.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/cassandraql.adoc
@@ -8,7 +8,7 @@
 [.badges]
 [.badge-key]##Since Camel Quarkus##[.badge-version]##1.0.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
 
-Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API).
+Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API). Based on Cassandra Java Driver provided by DataStax.
 
 == What's inside
 
diff --git a/docs/modules/ROOT/pages/reference/index.adoc b/docs/modules/ROOT/pages/reference/index.adoc
index e477ede..b4679f5 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -17,7 +17,7 @@ In case you are missing some extension in the list:
   https://github.com/apache/camel-quarkus/issues[report] any issues you encounter.
 ====
 
-166 extensions (1 deprecated, 14 JVM only)
+166 extensions (2 deprecated, 14 JVM only)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -75,7 +75,7 @@ Stable | 1.0.0 | Manage AWS MSK instances using AWS SDK version 2.x.
 Stable | 1.0.0 | Manage AWS MQ instances using AWS SDK version 2.x.
 
 |  xref:reference/extensions/aws2-s3.adoc[AWS 2 S3 Storage Service]  | camel-quarkus-aws2-s3 | Native +
-Stable | 1.0.0 | Store and retrie objects from AWS S3 Storage Service using AWS SDK version 2.x.
+Stable | 1.0.0 | Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x.
 
 |  xref:reference/extensions/aws2-ses.adoc[AWS 2 Simple Email Service (SES)]  | camel-quarkus-aws2-ses | Native +
 Stable | 1.0.0 | Send e-mails through AWS SES service using AWS SDK version 2.x.
@@ -111,7 +111,7 @@ Stable | 1.0.0 | Consume and produce records from AWS Kinesis Streams and AWS Ki
 Stable | 1.0.0 | Manage and invoke AWS Lambda functions.
 
 |  xref:reference/extensions/aws-s3.adoc[AWS S3 Storage Service]  | camel-quarkus-aws-s3 | Native +
-Stable | 0.2.0 | Store and retrie objects from AWS S3 Storage Service.
+Stable | 0.2.0 | Store and retrieve objects from AWS S3 Storage Service.
 
 |  xref:reference/extensions/aws-sns.adoc[AWS Simple Notification System (SNS)]  | camel-quarkus-aws-sns | Native +
 Stable | 0.2.0 | Send messages to an AWS Simple Notification Topic.
@@ -129,7 +129,7 @@ Stable | 1.0.0 | Store and Retrieve data from/to AWS SDB service.
 Stable | 1.0.0 | Translate texts using AWS Translate.
 
 |  xref:reference/extensions/azure.adoc[Azure]  | camel-quarkus-azure | Native +
-Stable | 1.0.0 | Store and retrieve blobs from Azure Storage Blob Service or store and retrieve messages from Azure Storage Queue Service
+Stable | 1.0.0 | *deprecated* Store and retrieve blobs from Azure Storage Blob Service or store and retrieve messages from Azure Storage Queue Service
 
 |  xref:reference/extensions/base64.adoc[Base64]  | camel-quarkus-base64 | Native +
 Stable | 1.0.0 | Encode and decode data using Base64.
@@ -153,7 +153,7 @@ Stable | 1.2.0 | Process payments using Braintree Payments.
 Stable | 1.0.0 | An LRUCacheFactory implementation based on Caffeine
 
 |  xref:reference/extensions/cassandraql.adoc[Cassandra CQL]  | camel-quarkus-cassandraql | JVM +
-Preview | 1.0.0 | Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API).
+Preview | 1.0.0 | Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API). Based on Cassandra Java Driver provided by DataStax.
 
 |  xref:reference/extensions/core-cloud.adoc[Cloud]  | camel-quarkus-core-cloud | Native +
 Stable | 0.2.0 | The Camel Quarkus core cloud module
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 9bd3b06..58d93bc 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
@@ -27,12 +27,14 @@ 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.util.CollectionStringBuffer;
 
 public abstract class BaseModel implements Model {
 
     private final CamelContext camelContext;
 
     private final List<RouteDefinition> routeDefinitions = new ArrayList<>();
+    private final List<RouteTemplateDefinition> routeTemplateDefinitions = new ArrayList<>();
     private final List<RestDefinition> restDefinitions = new ArrayList<>();
     private Map<String, DataFormatDefinition> dataFormats = new HashMap<>();
     private List<TransformerDefinition> transformers = new ArrayList<>();
@@ -42,6 +44,7 @@ public abstract class BaseModel implements Model {
     private Map<String, Resilience4jConfigurationDefinition> resilience4jConfigurations = new ConcurrentHashMap<>();
     private Map<String, FaultToleranceConfigurationDefinition> faultToleranceConfigurations = new ConcurrentHashMap<>();
     private Function<RouteDefinition, Boolean> routeFilter;
+    private final List<ModelLifecycleStrategy> modelLifecycleStrategies = new ArrayList<>();
 
     public BaseModel(CamelContext camelContext) {
         this.camelContext = camelContext;
@@ -111,6 +114,91 @@ public abstract class BaseModel implements Model {
     }
 
     @Override
+    public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
+        return routeTemplateDefinitions;
+    }
+
+    @Override
+    public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+        for (RouteTemplateDefinition route : routeTemplateDefinitions) {
+            if (route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+                return route;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        if (routeTemplateDefinitions == null || routeTemplateDefinitions.isEmpty()) {
+            return;
+        }
+        this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        routeTemplateDefinitions.removeAll(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        routeTemplateDefinitions.remove(routeTemplateDefinition);
+    }
+
+    @Override
+    public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+            throws Exception {
+        RouteTemplateDefinition target = null;
+        for (RouteTemplateDefinition def : routeTemplateDefinitions) {
+            if (routeTemplateId.equals(def.getId())) {
+                target = def;
+                break;
+            }
+        }
+        if (target == null) {
+            throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
+        }
+
+        CollectionStringBuffer cbs = new CollectionStringBuffer();
+        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) {
+            for (RouteTemplateParameterDefinition temp : target.getTemplateParameters()) {
+                if (temp.getDefaultValue() != null) {
+                    prop.put(temp.getName(), temp.getDefaultValue());
+                } else {
+                    // this is a required parameter do we have that as input
+                    if (!parameters.containsKey(temp.getName())) {
+                        cbs.append(temp.getName());
+                    }
+                }
+            }
+        }
+        if (!cbs.isEmpty()) {
+            throw new IllegalArgumentException("Route template " + routeTemplateId
+                    + " the following mandatory parameters must be provided: " + cbs.toString());
+        }
+        // then override with user parameters
+        if (parameters != null) {
+            prop.putAll(parameters);
+        }
+
+        RouteDefinition def = target.asRouteDefinition();
+        if (routeId != null) {
+            def.setId(routeId);
+        }
+        def.setTemplateParameters(prop);
+        addRouteDefinition(def);
+        return def.getId();
+    }
+
+    @Override
     public synchronized List<RestDefinition> getRestDefinitions() {
         return restDefinitions;
     }
@@ -323,6 +411,16 @@ public abstract class BaseModel implements Model {
         this.routeFilter = routeFilter;
     }
 
+    @Override
+    public void addModelLifecycleStrategy(ModelLifecycleStrategy modelLifecycleStrategy) {
+        this.modelLifecycleStrategies.add(modelLifecycleStrategy);
+    }
+
+    @Override
+    public List<ModelLifecycleStrategy> getModelLifecycleStrategies() {
+        return modelLifecycleStrategies;
+    }
+
     /**
      * Should we start newly added routes?
      */
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
index 904d50d..a50befb 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
@@ -29,6 +29,11 @@ public class DisabledXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoa
     }
 
     @Override
+    public Object loadRouteTemplatesDefinition(CamelContext context, InputStream inputStream) throws Exception {
+        throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
+    }
+
+    @Override
     public Object loadRestsDefinition(CamelContext context, InputStream inputStream) throws Exception {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
     }
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 5066702..a41d181 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
@@ -87,6 +87,12 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+            throws Exception {
+        return model.addRouteFromTemplate(routeId, routeTemplateId, parameters);
+    }
+
+    @Override
     protected Registry createRegistry() {
         throw new UnsupportedOperationException();
     }
@@ -512,6 +518,36 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
+        return model.getRouteTemplateDefinitions();
+    }
+
+    @Override
+    public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+        return model.getRouteTemplateDefinition(id);
+    }
+
+    @Override
+    public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        model.addRouteTemplateDefinitions(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        model.addRouteTemplateDefinition(routeTemplateDefinition);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        model.removeRouteTemplateDefinitions(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        model.removeRouteTemplateDefinition(routeTemplateDefinition);
+    }
+
+    @Override
     public List<RestDefinition> getRestDefinitions() {
         return model.getRestDefinitions();
     }
@@ -736,4 +772,13 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
                 : new TransformerKey(new DataType(def.getFromType()), new DataType(def.getToType()));
     }
 
+    @Override
+    public void addModelLifecycleStrategy(ModelLifecycleStrategy modelLifecycleStrategy) {
+        model.addModelLifecycleStrategy(modelLifecycleStrategy);
+    }
+
+    @Override
+    public List<ModelLifecycleStrategy> getModelLifecycleStrategies() {
+        return model.getModelLifecycleStrategies();
+    }
 }
diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
index da9350b..9498cc1 100644
--- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
+++ b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
@@ -26,6 +26,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RouteTemplatesDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.quarkus.core.RegistryRoutesLoader;
@@ -87,6 +88,31 @@ public class CamelMainRoutesCollector implements RoutesCollector {
     }
 
     @Override
+    public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory)
+            throws Exception {
+        List<RouteTemplatesDefinition> answer = new ArrayList<>();
+        PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
+
+        for (String part : directory.split(",")) {
+            LOGGER.info("Loading additional Camel XML route templates from: {}", part);
+            try {
+                for (InputStream is : resolver.findResources(part)) {
+                    Object definition = xmlRoutesLoader.loadRouteTemplatesDefinition(camelContext, is);
+                    if (definition instanceof RestsDefinition) {
+                        answer.add((RouteTemplatesDefinition) definition);
+                    }
+                }
+            } catch (FileNotFoundException e) {
+                LOGGER.debug("No XML route templates found in {}. Skipping XML route templates detection.", part);
+            } catch (Exception e) {
+                throw RuntimeCamelException.wrapRuntimeException(e);
+            }
+        }
+
+        return answer;
+    }
+
+    @Override
     public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) {
         List<RestsDefinition> answer = new ArrayList<>();
         PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
diff --git a/extensions-jvm/cassandraql/runtime/pom.xml b/extensions-jvm/cassandraql/runtime/pom.xml
index 04cff31..86d66ef 100644
--- a/extensions-jvm/cassandraql/runtime/pom.xml
+++ b/extensions-jvm/cassandraql/runtime/pom.xml
@@ -58,8 +58,24 @@
                     <groupId>org.ow2.asm</groupId>
                     <artifactId>asm-util</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>groovy</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>groovy-json</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-json</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions-jvm/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index a0f9ec4..5f5467a 100644
--- a/extensions-jvm/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions-jvm/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -22,7 +22,7 @@
 #
 ---
 name: "Camel Cassandra CQL"
-description: "Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API)"
+description: "Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API). Based on Cassandra Java Driver provided by DataStax"
 metadata:
   unlisted: true
   guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/cassandraql.html"
diff --git a/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java b/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
index 7810d88..7fcda1a 100644
--- a/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
+++ b/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
@@ -21,6 +21,7 @@ import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import org.jboss.jandex.IndexView;
 
@@ -38,7 +39,7 @@ public class DebeziumSupportProcessor {
 
         String[] dtos = index.getKnownClasses().stream().map(ci -> ci.name().toString())
                 .filter(n -> n.startsWith("org.apache.kafka.connect.json")
-                        || n.startsWith("io.debezium.embedded.spi"))
+                        || n.startsWith("io.debezium.engine.spi"))
                 .sorted()
                 .toArray(String[]::new);
 
@@ -50,12 +51,19 @@ public class DebeziumSupportProcessor {
         return new ReflectiveClassBuildItem(false, false,
                 new String[] { "org.apache.kafka.connect.storage.FileOffsetBackingStore",
                         "org.apache.kafka.connect.storage.MemoryOffsetBackingStore",
-                        "io.debezium.relational.history.FileDatabaseHistory" });
+                        "io.debezium.relational.history.FileDatabaseHistory",
+                        "io.debezium.embedded.ConvertingEngineBuilderFactory" });
     }
 
     @BuildStep
     void addDependencies(BuildProducer<IndexDependencyBuildItem> indexDependency) {
         indexDependency.produce(new IndexDependencyBuildItem("org.apache.kafka", "connect-json"));
-        indexDependency.produce(new IndexDependencyBuildItem("io.debezium", "debezium-embedded"));
+        indexDependency.produce(new IndexDependencyBuildItem("io.debezium", "debezium-api"));
+    }
+
+    @BuildStep
+    void registerServiceProviders(BuildProducer<NativeImageResourceBuildItem> nativeImage) {
+        nativeImage.produce(
+                new NativeImageResourceBuildItem("META-INF/services/io.debezium.engine.DebeziumEngine$BuilderFactory"));
     }
 }
diff --git a/extensions/aws-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/aws-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index d9e3947..0f0a4a6 100644
--- a/extensions/aws-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions/aws-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -22,7 +22,7 @@
 #
 ---
 name: "Camel AWS S3 Storage Service"
-description: "Store and retrie objects from AWS S3 Storage Service"
+description: "Store and retrieve objects from AWS S3 Storage Service"
 metadata:
   keywords:
   - "Amazon"
diff --git a/extensions/aws2-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/aws2-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index ff8d18f..bfedec6 100644
--- a/extensions/aws2-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions/aws2-s3/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -22,7 +22,7 @@
 #
 ---
 name: "Camel AWS 2 S3 Storage Service"
-description: "Store and retrie objects from AWS S3 Storage Service using AWS SDK version 2.x"
+description: "Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x"
 metadata:
   keywords:
   - "Amazon"
diff --git a/extensions/azure/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/azure/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index 1f6ddde..38a099a 100644
--- a/extensions/azure/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions/azure/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -29,3 +29,4 @@ metadata:
   - "integration"
   status:
   - "stable"
+  - "deprecated"
\ No newline at end of file
diff --git a/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java b/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
index 84029bc..34f58be 100644
--- a/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
+++ b/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
@@ -22,6 +22,7 @@ import java.util.List;
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RouteTemplatesDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 
@@ -40,6 +41,12 @@ public class CustomRoutesCollector implements RoutesCollector {
     }
 
     @Override
+    public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory)
+            throws Exception {
+        return Collections.emptyList();
+    }
+
+    @Override
     public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) throws Exception {
         return Collections.emptyList();
     }
diff --git a/pom.xml b/pom.xml
index 7be611a..1ae93ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,9 +45,10 @@
         <animal-sniffer.version>1.18</animal-sniffer.version>
         <awssdk1.version>1.11.714</awssdk1.version>
         <awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version>
-        <awssdk2.version>2.13.33</awssdk2.version>
-        <camel.version>3.4.3</camel.version>
-        <debezium.version>1.2.0.Final</debezium.version>
+        <awssdk2.version>2.13.58</awssdk2.version>
+        <camel.version>3.5.0-SNAPSHOT</camel.version>
+        <debezium.version>1.2.1.Final</debezium.version>
+        <elasticsearch.version>7.6.1</elasticsearch.version>
         <freemarker.version>2.3.30</freemarker.version>
         <github-api.version>1.111</github-api.version>
         <google-http-client.version>1.22.0</google-http-client.version>
@@ -72,7 +73,7 @@
         <retrofit.version>2.5.0</retrofit.version>
         <smallrye.reactive.messaging.camel.version>2.2.1</smallrye.reactive.messaging.camel.version>
         <!-- Keep spring.version aligned with the version used by Camel -->
-        <spring.version>5.2.7.RELEASE</spring.version>
+        <spring.version>5.2.8.RELEASE</spring.version>
         <snakeyaml.version>1.26</snakeyaml.version>
         <threetenbp.version>1.4.0</threetenbp.version>
         <xalan.version>2.7.2</xalan.version>
@@ -104,7 +105,7 @@
         <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.4</groovy.version>
+        <groovy.version>3.0.5</groovy.version>
         <jandex-maven-plugin.version>1.0.8</jandex-maven-plugin.version>
         <os-maven-plugin.version>1.6.2</os-maven-plugin.version>
         <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 93adef3..3b77afe 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -3276,6 +3276,16 @@
                 <version>${ahc.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.codehaus.groovy</groupId>
+                <artifactId>groovy</artifactId>
+                <version>${groovy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.groovy</groupId>
+                <artifactId>groovy-json</artifactId>
+                <version>${groovy.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>animal-sniffer-annotations</artifactId>
                 <version>${animal-sniffer.version}</version>


[camel-quarkus] 05/05: Temporary workaround for CAMEL-15426

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

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

commit 3f20bf381ec565f5423d5d7fd50413d5b9bafbf3
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 19 15:55:38 2020 +0200

    Temporary workaround for CAMEL-15426
---
 .../camel/quarkus/core/deployment/CamelProcessor.java     | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

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 728812d..d7a37d3 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
@@ -288,12 +288,15 @@ class CamelProcessor {
 
         RuntimeValue<Builder> builder = recorder.factoryFinderResolverBuilder();
 
-        camelServices.forEach(service -> {
-            recorder.factoryFinderResolverEntry(
-                    builder,
-                    service.path.toString(),
-                    recorderContext.classProxy(service.type));
-        });
+        camelServices
+                // FIXME: Remove the following line after CAMEL-15426 is fixed
+                .stream().filter(s -> !s.name.equals("MySecondBar") && !s.name.equals("MySecondFoo"))
+                .forEach(service -> {
+                    recorder.factoryFinderResolverEntry(
+                            builder,
+                            service.path.toString(),
+                            recorderContext.classProxy(service.type));
+                });
 
         return new CamelFactoryFinderResolverBuildItem(recorder.factoryFinderResolver(builder));
     }