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/25 11:44:06 UTC

[camel-quarkus] branch master updated (f9fb016 -> 173e7af)

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

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


    from f9fb016  Fix servicenow itest to clean resources
     new 6acedc6  Use model.name instead of model.scheme in cq.create templates so that it works for dataformats too
     new 05fb8a1  Crypto (JCE) JVM support
     new 17f43a7  DigitalOcean JVM support
     new e0ce55e  Disruptor JVM support
     new 3ec2595  Deep Java Library JVM support
     new 173e7af  Drill JVM support

The 6 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                                    |  5 ++
 docs/modules/ROOT/nav.adoc                         |  5 ++
 docs/modules/ROOT/pages/reference/components.adoc  | 15 +++++
 docs/modules/ROOT/pages/reference/dataformats.adoc |  6 ++
 .../extensions/{aws2-kinesis.adoc => crypto.adoc}  | 15 +++--
 .../extensions/{atom.adoc => digitalocean.adoc}    | 12 ++--
 .../extensions/{caffeine.adoc => disruptor.adoc}   | 14 ++--
 .../reference/extensions/{atom.adoc => djl.adoc}   | 12 ++--
 .../reference/extensions/{atom.adoc => drill.adoc} | 12 ++--
 docs/modules/ROOT/pages/reference/index.adoc       | 15 +++++
 extensions-jvm/{apns => crypto}/deployment/pom.xml |  8 +--
 .../crypto/deployment/CryptoProcessor.java}        |  8 +--
 .../{atomix => crypto}/integration-test/pom.xml    | 10 +--
 .../component/crypto/it/CryptoResource.java}       | 44 ++++++-------
 .../quarkus/component/crypto/it/CryptoTest.java}   | 16 ++---
 extensions-jvm/{apns => crypto}/pom.xml            |  4 +-
 extensions-jvm/{atomix => crypto}/runtime/pom.xml  | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 .../deployment/pom.xml                             |  8 +--
 .../deployment/DigitaloceanProcessor.java}         |  8 +--
 .../integration-test/pom.xml                       | 10 +--
 .../digitalocean/it/DigitaloceanResource.java}     | 20 +++---
 .../digitalocean/it/DigitaloceanTest.java}         |  8 +--
 extensions-jvm/{apns => digitalocean}/pom.xml      |  4 +-
 .../{atomix => digitalocean}/runtime/pom.xml       | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 .../{apns => disruptor}/deployment/pom.xml         |  8 +--
 .../disruptor/deployment/DisruptorProcessor.java}  |  8 +--
 .../integration-test/pom.xml                       | 10 +--
 .../component/disruptor/it/DisruptorResource.java} | 32 ++++-----
 .../component/disruptor/it/DisruptorTest.java}     | 12 ++--
 extensions-jvm/{apns => disruptor}/pom.xml         |  4 +-
 .../{atomix => disruptor}/runtime/pom.xml          | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 extensions-jvm/{apns => djl}/deployment/pom.xml    |  8 +--
 .../component/djl/deployment/DjlProcessor.java}    |  8 +--
 .../{dns => djl}/integration-test/pom.xml          | 10 +--
 .../quarkus/component/djl/it/DjlResource.java}     | 20 +++---
 .../camel/quarkus/component/djl/it/DjlTest.java}   |  8 +--
 extensions-jvm/{apns => djl}/pom.xml               |  4 +-
 extensions-jvm/{atomix => djl}/runtime/pom.xml     | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 extensions-jvm/{chunk => drill}/deployment/pom.xml |  8 +--
 .../drill/deployment/DrillProcessor.java}          |  8 +--
 .../{chunk => drill}/integration-test/pom.xml      | 10 +--
 .../quarkus/component/drill/it/DrillResource.java} | 20 +++---
 .../quarkus/component/drill/it/DrillTest.java}     |  8 +--
 extensions-jvm/{apns => drill}/pom.xml             |  4 +-
 extensions-jvm/{etcd => drill}/runtime/pom.xml     | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 extensions-jvm/pom.xml                             |  5 ++
 poms/bom/pom.xml                                   | 75 ++++++++++++++++++++++
 tooling/create-extension-templates/Test.java       |  4 +-
 .../create-extension-templates/TestResource.java   | 20 +++---
 54 files changed, 380 insertions(+), 253 deletions(-)
 copy docs/modules/ROOT/pages/reference/extensions/{aws2-kinesis.adoc => crypto.adoc} (51%)
 copy docs/modules/ROOT/pages/reference/extensions/{atom.adoc => digitalocean.adoc} (65%)
 copy docs/modules/ROOT/pages/reference/extensions/{caffeine.adoc => disruptor.adoc} (56%)
 copy docs/modules/ROOT/pages/reference/extensions/{atom.adoc => djl.adoc} (65%)
 copy docs/modules/ROOT/pages/reference/extensions/{atom.adoc => drill.adoc} (70%)
 copy extensions-jvm/{apns => crypto}/deployment/pom.xml (90%)
 copy extensions-jvm/{bonita/deployment/src/main/java/org/apache/camel/quarkus/component/bonita/deployment/BonitaProcessor.java => crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java} (88%)
 copy extensions-jvm/{atomix => crypto}/integration-test/pom.xml (91%)
 copy extensions-jvm/{etcd/integration-test/src/main/java/org/apache/camel/quarkus/component/etcd/it/EtcdResource.java => crypto/integration-test/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java} (58%)
 copy extensions-jvm/{etcd/integration-test/src/test/java/org/apache/camel/quarkus/component/etcd/it/EtcdTest.java => crypto/integration-test/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java} (77%)
 copy extensions-jvm/{apns => crypto}/pom.xml (93%)
 copy extensions-jvm/{atomix => crypto}/runtime/pom.xml (90%)
 copy extensions-jvm/{apns => crypto}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (87%)
 copy extensions-jvm/{aws2-kinesis => digitalocean}/deployment/pom.xml (89%)
 copy extensions-jvm/{aws2-kinesis/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/kinesis/deployment/Aws2KinesisProcessor.java => digitalocean/deployment/src/main/java/org/apache/camel/quarkus/component/digitalocean/deployment/DigitaloceanProcessor.java} (87%)
 copy extensions-jvm/{aws2-kinesis => digitalocean}/integration-test/pom.xml (91%)
 copy extensions-jvm/{aws2-lambda/integration-test/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaResource.java => digitalocean/integration-test/src/main/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanResource.java} (69%)
 copy extensions-jvm/{apns/integration-test/src/test/java/org/apache/camel/quarkus/component/apns/it/ApnsTest.java => digitalocean/integration-test/src/test/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanTest.java} (84%)
 copy extensions-jvm/{apns => digitalocean}/pom.xml (93%)
 copy extensions-jvm/{atomix => digitalocean}/runtime/pom.xml (91%)
 copy extensions-jvm/{apns => digitalocean}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (89%)
 copy extensions-jvm/{apns => disruptor}/deployment/pom.xml (90%)
 copy extensions-jvm/{beanstalk/deployment/src/main/java/org/apache/camel/quarkus/component/beanstalk/deployment/BeanstalkProcessor.java => disruptor/deployment/src/main/java/org/apache/camel/quarkus/component/disruptor/deployment/DisruptorProcessor.java} (88%)
 copy extensions-jvm/{beanstalk => disruptor}/integration-test/pom.xml (91%)
 copy extensions-jvm/{aws2-kinesis/integration-test/src/main/java/org/apache/camel/quarkus/component/aws2/kinesis/it/Aws2KinesisResource.java => disruptor/integration-test/src/main/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorResource.java} (62%)
 copy extensions-jvm/{cometd/integration-test/src/test/java/org/apache/camel/quarkus/component/cometd/it/CometdTest.java => disruptor/integration-test/src/test/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorTest.java} (79%)
 copy extensions-jvm/{apns => disruptor}/pom.xml (93%)
 copy extensions-jvm/{atomix => disruptor}/runtime/pom.xml (91%)
 copy extensions-jvm/{apns => disruptor}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (89%)
 copy extensions-jvm/{apns => djl}/deployment/pom.xml (90%)
 copy extensions-jvm/{dns/deployment/src/main/java/org/apache/camel/quarkus/component/dns/deployment/DnsProcessor.java => djl/deployment/src/main/java/org/apache/camel/quarkus/component/djl/deployment/DjlProcessor.java} (89%)
 copy extensions-jvm/{dns => djl}/integration-test/pom.xml (91%)
 copy extensions-jvm/{dns/integration-test/src/main/java/org/apache/camel/quarkus/component/dns/it/DnsResource.java => djl/integration-test/src/main/java/org/apache/camel/quarkus/component/djl/it/DjlResource.java} (76%)
 copy extensions-jvm/{dns/integration-test/src/test/java/org/apache/camel/quarkus/component/dns/it/DnsTest.java => djl/integration-test/src/test/java/org/apache/camel/quarkus/component/djl/it/DjlTest.java} (87%)
 copy extensions-jvm/{apns => djl}/pom.xml (93%)
 copy extensions-jvm/{atomix => djl}/runtime/pom.xml (91%)
 copy extensions-jvm/{apns => djl}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (87%)
 copy extensions-jvm/{chunk => drill}/deployment/pom.xml (90%)
 copy extensions-jvm/{corda/deployment/src/main/java/org/apache/camel/quarkus/component/corda/deployment/CordaProcessor.java => drill/deployment/src/main/java/org/apache/camel/quarkus/component/drill/deployment/DrillProcessor.java} (88%)
 copy extensions-jvm/{chunk => drill}/integration-test/pom.xml (92%)
 copy extensions-jvm/{atmos/integration-test/src/main/java/org/apache/camel/quarkus/component/atmos/it/AtmosResource.java => drill/integration-test/src/main/java/org/apache/camel/quarkus/component/drill/it/DrillResource.java} (75%)
 copy extensions-jvm/{avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java => drill/integration-test/src/test/java/org/apache/camel/quarkus/component/drill/it/DrillTest.java} (86%)
 copy extensions-jvm/{apns => drill}/pom.xml (94%)
 copy extensions-jvm/{etcd => drill}/runtime/pom.xml (92%)
 copy extensions-jvm/{asterisk => drill}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (91%)


[camel-quarkus] 06/06: Drill JVM support

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

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

commit 173e7af73e7d933c54d778876b272f314d8c0126
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Aug 25 11:37:38 2020 +0200

    Drill JVM support
---
 catalog/pom.xml                                    |  1 +
 docs/modules/ROOT/nav.adoc                         |  1 +
 docs/modules/ROOT/pages/reference/components.adoc  |  3 +
 .../ROOT/pages/reference/extensions/drill.adoc     | 29 +++++++
 docs/modules/ROOT/pages/reference/index.adoc       |  3 +
 extensions-jvm/drill/deployment/pom.xml            | 63 ++++++++++++++
 .../component/drill/deployment/DrillProcessor.java | 46 +++++++++++
 extensions-jvm/drill/integration-test/pom.xml      | 95 ++++++++++++++++++++++
 .../quarkus/component/drill/it/DrillResource.java  | 51 ++++++++++++
 .../quarkus/component/drill/it/DrillTest.java      | 34 ++++++++
 extensions-jvm/drill/pom.xml                       | 40 +++++++++
 extensions-jvm/drill/runtime/pom.xml               | 94 +++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 32 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom/pom.xml                                   | 15 ++++
 15 files changed, 508 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 662ea70..45cad8b 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -123,6 +123,7 @@
             camel-quarkus-djl
             camel-quarkus-dns
             camel-quarkus-dozer
+            camel-quarkus-drill
             camel-quarkus-dropbox
             camel-quarkus-elasticsearch-rest
             camel-quarkus-endpointdsl
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 93aca3b..c9b5206 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -100,6 +100,7 @@
 *** xref:reference/extensions/disruptor.adoc[Disruptor]
 *** xref:reference/extensions/dns.adoc[DNS]
 *** xref:reference/extensions/dozer.adoc[Dozer]
+*** xref:reference/extensions/drill.adoc[Drill]
 *** xref:reference/extensions/dropbox.adoc[Dropbox]
 *** xref:reference/extensions/elasticsearch-rest.adoc[Elasticsearch Rest]
 *** xref:reference/extensions/endpointdsl.adoc[Endpoint DSL]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index e4e3e82..8e84cd0 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -271,6 +271,9 @@ Preview | 1.1.0 | Perform DNS queries using DNSJava.
 | xref:reference/extensions/dozer.adoc[Dozer] | [.camel-element-artifact]##camel-quarkus-dozer## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Map between Java beans using the Dozer mapping library.
 
+| xref:reference/extensions/drill.adoc[Drill] | [.camel-element-artifact]##camel-quarkus-drill## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Perform queries against an Apache Drill cluster.
+
 | xref:reference/extensions/dropbox.adoc[Dropbox] | [.camel-element-artifact]##camel-quarkus-dropbox## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/drill.adoc b/docs/modules/ROOT/pages/reference/extensions/drill.adoc
new file mode 100644
index 0000000..d8dfc1b
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/drill.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[drill]]
+= Drill
+:page-aliases: extensions/drill.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Perform queries against an Apache Drill cluster.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/drill-component.html[Drill component], URI syntax: `drill:host`
+
+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-drill</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 bd9e740..8f28b86 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -278,6 +278,9 @@ Preview | 1.1.0 | Perform DNS queries using DNSJava.
 |  xref:reference/extensions/dozer.adoc[Dozer]  | camel-quarkus-dozer | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Map between Java beans using the Dozer mapping library.
 
+|  xref:reference/extensions/drill.adoc[Drill]  | camel-quarkus-drill | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Perform queries against an Apache Drill cluster.
+
 |  xref:reference/extensions/dropbox.adoc[Dropbox]  | camel-quarkus-dropbox | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox.
 
diff --git a/extensions-jvm/drill/deployment/pom.xml b/extensions-jvm/drill/deployment/pom.xml
new file mode 100644
index 0000000..88b8340
--- /dev/null
+++ b/extensions-jvm/drill/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-drill-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-drill-deployment</artifactId>
+    <name>Camel Quarkus :: Drill :: 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-drill</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-jvm/drill/deployment/src/main/java/org/apache/camel/quarkus/component/drill/deployment/DrillProcessor.java b/extensions-jvm/drill/deployment/src/main/java/org/apache/camel/quarkus/component/drill/deployment/DrillProcessor.java
new file mode 100644
index 0000000..2eb55f5
--- /dev/null
+++ b/extensions-jvm/drill/deployment/src/main/java/org/apache/camel/quarkus/component/drill/deployment/DrillProcessor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.drill.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeBuild;
+import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import org.jboss.logging.Logger;
+
+class DrillProcessor {
+
+    private static final Logger LOG = Logger.getLogger(DrillProcessor.class);
+    private static final String FEATURE = "camel-drill";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    /**
+     * Remove this once this extension starts supporting the native mode.
+     */
+    @BuildStep(onlyIf = NativeBuild.class)
+    @Record(value = ExecutionTime.RUNTIME_INIT)
+    void warnJvmInNative(JvmOnlyRecorder recorder) {
+        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
+        recorder.warnJvmInNative(FEATURE); // warn at runtime
+    }
+}
diff --git a/extensions-jvm/drill/integration-test/pom.xml b/extensions-jvm/drill/integration-test/pom.xml
new file mode 100644
index 0000000..f47022b
--- /dev/null
+++ b/extensions-jvm/drill/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?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-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-drill-integration-test</artifactId>
+    <name>Camel Quarkus :: Drill :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Drill extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/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 the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-drill-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-drill</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/drill/integration-test/src/main/java/org/apache/camel/quarkus/component/drill/it/DrillResource.java b/extensions-jvm/drill/integration-test/src/main/java/org/apache/camel/quarkus/component/drill/it/DrillResource.java
new file mode 100644
index 0000000..e0ddcf4
--- /dev/null
+++ b/extensions-jvm/drill/integration-test/src/main/java/org/apache/camel/quarkus/component/drill/it/DrillResource.java
@@ -0,0 +1,51 @@
+/*
+ * 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.drill.it;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.CamelContext;
+import org.jboss.logging.Logger;
+
+@Path("/drill")
+@ApplicationScoped
+public class DrillResource {
+
+    private static final Logger LOG = Logger.getLogger(DrillResource.class);
+
+    private static final String COMPONENT_DRILL = "drill";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/drill")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentDrill() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_DRILL) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_DRILL);
+        return Response.status(500, COMPONENT_DRILL + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/drill/integration-test/src/test/java/org/apache/camel/quarkus/component/drill/it/DrillTest.java b/extensions-jvm/drill/integration-test/src/test/java/org/apache/camel/quarkus/component/drill/it/DrillTest.java
new file mode 100644
index 0000000..fa60d51
--- /dev/null
+++ b/extensions-jvm/drill/integration-test/src/test/java/org/apache/camel/quarkus/component/drill/it/DrillTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.drill.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class DrillTest {
+
+    @Test
+    public void loadComponentDrill() {
+        /* A simple autogenerated test */
+        RestAssured.get("/drill/load/component/drill")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/drill/pom.xml b/extensions-jvm/drill/pom.xml
new file mode 100644
index 0000000..4c19c4b
--- /dev/null
+++ b/extensions-jvm/drill/pom.xml
@@ -0,0 +1,40 @@
+<?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-drill-parent</artifactId>
+    <name>Camel Quarkus :: Drill</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/drill/runtime/pom.xml b/extensions-jvm/drill/runtime/pom.xml
new file mode 100644
index 0000000..7c86075
--- /dev/null
+++ b/extensions-jvm/drill/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-drill-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-drill</artifactId>
+    <name>Camel Quarkus :: Drill :: Runtime</name>
+    <description>Perform queries against an Apache Drill cluster.</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-drill</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-jvm/drill/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/drill/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..b2b996d
--- /dev/null
+++ b/extensions-jvm/drill/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,32 @@
+#
+# 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 Drill"
+description: "Perform queries against an Apache Drill cluster"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/drill.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 353cfa7..aa5d374 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -63,6 +63,7 @@
         <module>disruptor</module>
         <module>djl</module>
         <module>dns</module>
+        <module>drill</module>
         <module>dropbox</module>
         <module>etcd</module>
         <module>google-bigquery</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index c32994a..ea921f8 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -686,6 +686,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-drill</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-dropbox</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -2270,6 +2275,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-drill</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-drill-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-dropbox</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/06: Use model.name instead of model.scheme in cq.create templates so that it works for dataformats too

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

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

commit 6acedc648147d78b35102cd7c819bbb49eefcaa9
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Aug 25 10:20:22 2020 +0200

    Use model.name instead of model.scheme in cq.create templates so that it
    works for dataformats too
---
 tooling/create-extension-templates/Test.java         |  4 ++--
 tooling/create-extension-templates/TestResource.java | 20 ++++++++++----------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/tooling/create-extension-templates/Test.java b/tooling/create-extension-templates/Test.java
index fabd474..f8d6fa0 100644
--- a/tooling/create-extension-templates/Test.java
+++ b/tooling/create-extension-templates/Test.java
@@ -46,9 +46,9 @@ class [=toCapCamelCase(artifactIdBase)]Test {
 [#else]
 [#list models as model]
     @Test
-    public void load[=toCapCamelCase(model.kind)][=toCapCamelCase(model.scheme)]() {
+    public void load[=toCapCamelCase(model.kind)][=toCapCamelCase(model.name)]() {
         /* A simple autogenerated test */
-        RestAssured.get("/[=artifactIdBase]/load/[=model.kind]/[=model.scheme]")
+        RestAssured.get("/[=artifactIdBase]/load/[=model.kind]/[=model.name]")
                 .then()
                 .statusCode(200);
     }
diff --git a/tooling/create-extension-templates/TestResource.java b/tooling/create-extension-templates/TestResource.java
index 0ddba52..ff71fcb 100644
--- a/tooling/create-extension-templates/TestResource.java
+++ b/tooling/create-extension-templates/TestResource.java
@@ -73,31 +73,31 @@ public class [=toCapCamelCase(artifactIdBase)]Resource {
     }
 [#else]
 [#list models as m]
-    private static final String [=toSnakeCase(m.kind)?upper_case]_[=toSnakeCase(m.scheme)?upper_case] = "[=m.scheme]";
+    private static final String [=toSnakeCase(m.kind)?upper_case]_[=toSnakeCase(m.name)?upper_case] = "[=m.name]";
 [/#list]
     @Inject
     CamelContext context;
 
 [#list models as model]
-    @Path("/load/[=model.kind]/[=model.scheme]")
+    @Path("/load/[=model.kind]/[=model.name]")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
-    public Response load[=toCapCamelCase(model.kind)][=toCapCamelCase(model.scheme)]() throws Exception {
+    public Response load[=toCapCamelCase(model.kind)][=toCapCamelCase(model.name)]() throws Exception {
         /* This is an autogenerated test */
-[#if kind == "other" ]
+[#if model.kind == "other" ]
         /* No way to test a Camel artifact of kind "other" */
         return Response.ok().build();
 [#else]
-[#if kind == "component" ]
+[#if model.kind == "component" ]
 [#assign contextMethod = "getComponent"]
-[#elseif kind == "language" ]
+[#elseif model.kind == "language" ]
 [#assign contextMethod = "resolveLanguage"]
-[#elseif kind == "dataformat" ]
-[#assign contextMethod = "createDataFormat"]
+[#elseif model.kind == "dataformat" ]
+[#assign contextMethod = "resolveDataFormat"]
 [#else]
-[#stop "Unexpected Camel artifact kind " + kind ]
+[#stop "Unexpected Camel artifact kind " + model.kind ]
 [/#if]
-[#assign schemeVarName = "[=toSnakeCase(model.kind)?upper_case]_[=toSnakeCase(model.scheme)?upper_case]"]
+[#assign schemeVarName = "[=toSnakeCase(model.kind)?upper_case]_[=toSnakeCase(model.name)?upper_case]"]
         if (context.[=contextMethod]([=schemeVarName]) != null) {
             return Response.ok().build();
         }


[camel-quarkus] 04/06: Disruptor JVM support

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

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

commit e0ce55e5ab997bf0a9580eadbb752cbc002cb1ec
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Aug 25 11:17:19 2020 +0200

    Disruptor JVM support
---
 catalog/pom.xml                                    |  1 +
 docs/modules/ROOT/nav.adoc                         |  1 +
 docs/modules/ROOT/pages/reference/components.adoc  |  3 +
 .../ROOT/pages/reference/extensions/disruptor.adoc | 30 +++++++
 docs/modules/ROOT/pages/reference/index.adoc       |  3 +
 extensions-jvm/disruptor/deployment/pom.xml        | 63 ++++++++++++++
 .../disruptor/deployment/DisruptorProcessor.java   | 46 +++++++++++
 extensions-jvm/disruptor/integration-test/pom.xml  | 95 ++++++++++++++++++++++
 .../component/disruptor/it/DisruptorResource.java  | 64 +++++++++++++++
 .../component/disruptor/it/DisruptorTest.java      | 42 ++++++++++
 extensions-jvm/disruptor/pom.xml                   | 40 +++++++++
 extensions-jvm/disruptor/runtime/pom.xml           | 94 +++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 32 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom/pom.xml                                   | 15 ++++
 15 files changed, 530 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index b976bbd..be756c6 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -119,6 +119,7 @@
             camel-quarkus-debezium-sqlserver
             camel-quarkus-digitalocean
             camel-quarkus-direct
+            camel-quarkus-disruptor
             camel-quarkus-dns
             camel-quarkus-dozer
             camel-quarkus-dropbox
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 8147ca1..9bf024e 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -96,6 +96,7 @@
 *** xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector]
 *** xref:reference/extensions/digitalocean.adoc[DigitalOcean]
 *** xref:reference/extensions/direct.adoc[Direct]
+*** xref:reference/extensions/disruptor.adoc[Disruptor]
 *** xref:reference/extensions/dns.adoc[DNS]
 *** xref:reference/extensions/dozer.adoc[Dozer]
 *** xref:reference/extensions/dropbox.adoc[Dropbox]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index c71394b..5866650 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -259,6 +259,9 @@ Preview | 1.1.0 | Manage Droplets and resources within the DigitalOcean cloud.
 | xref:reference/extensions/direct.adoc[Direct] | [.camel-element-artifact]##camel-quarkus-direct## | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Call another endpoint from the same Camel Context synchronously.
 
+| xref:reference/extensions/disruptor.adoc[Disruptor] | [.camel-element-artifact]##camel-quarkus-disruptor## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Provides asynchronous SEDA behavior using LMAX Disruptor.
+
 | xref:reference/extensions/dns.adoc[DNS] | [.camel-element-artifact]##camel-quarkus-dns## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Perform DNS queries using DNSJava.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/disruptor.adoc b/docs/modules/ROOT/pages/reference/extensions/disruptor.adoc
new file mode 100644
index 0000000..7d1204a
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/disruptor.adoc
@@ -0,0 +1,30 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[disruptor]]
+= Disruptor
+:page-aliases: extensions/disruptor.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Provides asynchronous SEDA behavior using LMAX Disruptor.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/disruptor-component.html[Disruptor component], URI syntax: `disruptor:name`
+* https://camel.apache.org/components/latest/disruptor-vm-component.html[Disruptor VM component], URI syntax: `disruptor-vm:name`
+
+Please refer to the above links for usage and configuration details.
+
+== Maven coordinates
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel.quarkus</groupId>
+    <artifactId>camel-quarkus-disruptor</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 a05aa15..45e4ec1 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -266,6 +266,9 @@ Preview | 1.1.0 | Manage Droplets and resources within the DigitalOcean cloud.
 |  xref:reference/extensions/direct.adoc[Direct]  | camel-quarkus-direct | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Call another endpoint from the same Camel Context synchronously.
 
+|  xref:reference/extensions/disruptor.adoc[Disruptor]  | camel-quarkus-disruptor | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Provides asynchronous SEDA behavior using LMAX Disruptor.
+
 |  xref:reference/extensions/dns.adoc[DNS]  | camel-quarkus-dns | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Perform DNS queries using DNSJava.
 
diff --git a/extensions-jvm/disruptor/deployment/pom.xml b/extensions-jvm/disruptor/deployment/pom.xml
new file mode 100644
index 0000000..b021135
--- /dev/null
+++ b/extensions-jvm/disruptor/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-disruptor-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-disruptor-deployment</artifactId>
+    <name>Camel Quarkus :: Disruptor :: 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-disruptor</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-jvm/disruptor/deployment/src/main/java/org/apache/camel/quarkus/component/disruptor/deployment/DisruptorProcessor.java b/extensions-jvm/disruptor/deployment/src/main/java/org/apache/camel/quarkus/component/disruptor/deployment/DisruptorProcessor.java
new file mode 100644
index 0000000..626c75b
--- /dev/null
+++ b/extensions-jvm/disruptor/deployment/src/main/java/org/apache/camel/quarkus/component/disruptor/deployment/DisruptorProcessor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.disruptor.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeBuild;
+import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import org.jboss.logging.Logger;
+
+class DisruptorProcessor {
+
+    private static final Logger LOG = Logger.getLogger(DisruptorProcessor.class);
+    private static final String FEATURE = "camel-disruptor";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    /**
+     * Remove this once this extension starts supporting the native mode.
+     */
+    @BuildStep(onlyIf = NativeBuild.class)
+    @Record(value = ExecutionTime.RUNTIME_INIT)
+    void warnJvmInNative(JvmOnlyRecorder recorder) {
+        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
+        recorder.warnJvmInNative(FEATURE); // warn at runtime
+    }
+}
diff --git a/extensions-jvm/disruptor/integration-test/pom.xml b/extensions-jvm/disruptor/integration-test/pom.xml
new file mode 100644
index 0000000..1e1177f
--- /dev/null
+++ b/extensions-jvm/disruptor/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?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-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-disruptor-integration-test</artifactId>
+    <name>Camel Quarkus :: Disruptor :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Disruptor extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/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 the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-disruptor-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-disruptor</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/disruptor/integration-test/src/main/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorResource.java b/extensions-jvm/disruptor/integration-test/src/main/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorResource.java
new file mode 100644
index 0000000..d8636e2
--- /dev/null
+++ b/extensions-jvm/disruptor/integration-test/src/main/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorResource.java
@@ -0,0 +1,64 @@
+/*
+ * 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.disruptor.it;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.CamelContext;
+import org.jboss.logging.Logger;
+
+@Path("/disruptor")
+@ApplicationScoped
+public class DisruptorResource {
+
+    private static final Logger LOG = Logger.getLogger(DisruptorResource.class);
+
+    private static final String COMPONENT_DISRUPTOR = "disruptor";
+    private static final String COMPONENT_DISRUPTOR_VM = "disruptor-vm";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/disruptor")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentDisruptor() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_DISRUPTOR) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_DISRUPTOR);
+        return Response.status(500, COMPONENT_DISRUPTOR + " could not be loaded from the Camel context").build();
+    }
+
+    @Path("/load/component/disruptor-vm")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentDisruptorVm() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_DISRUPTOR_VM) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_DISRUPTOR_VM);
+        return Response.status(500, COMPONENT_DISRUPTOR_VM + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/disruptor/integration-test/src/test/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorTest.java b/extensions-jvm/disruptor/integration-test/src/test/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorTest.java
new file mode 100644
index 0000000..4735ecf
--- /dev/null
+++ b/extensions-jvm/disruptor/integration-test/src/test/java/org/apache/camel/quarkus/component/disruptor/it/DisruptorTest.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.disruptor.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class DisruptorTest {
+
+    @Test
+    public void loadComponentDisruptor() {
+        /* A simple autogenerated test */
+        RestAssured.get("/disruptor/load/component/disruptor")
+                .then()
+                .statusCode(200);
+    }
+
+    @Test
+    public void loadComponentDisruptorVm() {
+        /* A simple autogenerated test */
+        RestAssured.get("/disruptor/load/component/disruptor-vm")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/disruptor/pom.xml b/extensions-jvm/disruptor/pom.xml
new file mode 100644
index 0000000..b755cfa
--- /dev/null
+++ b/extensions-jvm/disruptor/pom.xml
@@ -0,0 +1,40 @@
+<?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-disruptor-parent</artifactId>
+    <name>Camel Quarkus :: Disruptor</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/disruptor/runtime/pom.xml b/extensions-jvm/disruptor/runtime/pom.xml
new file mode 100644
index 0000000..04a4c2f
--- /dev/null
+++ b/extensions-jvm/disruptor/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-disruptor-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-disruptor</artifactId>
+    <name>Camel Quarkus :: Disruptor :: Runtime</name>
+    <description>Provides asynchronous SEDA behavior using LMAX Disruptor.</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-disruptor</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-jvm/disruptor/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/disruptor/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..148c4f2
--- /dev/null
+++ b/extensions-jvm/disruptor/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,32 @@
+#
+# 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 Disruptor"
+description: "Provides asynchronous SEDA behavior using LMAX Disruptor"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/disruptor.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index c9deb84..8ae2c7e 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -60,6 +60,7 @@
         <module>crypto</module>
         <module>debezium-mongodb</module>
         <module>digitalocean</module>
+        <module>disruptor</module>
         <module>dns</module>
         <module>dropbox</module>
         <module>etcd</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 0921684..f3597ec 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -666,6 +666,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-disruptor</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-dns</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -2220,6 +2225,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-disruptor</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-disruptor-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-dns</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 02/06: Crypto (JCE) JVM support

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

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

commit 05fb8a19035e2cbeb7732a1dd72db98f10f47b77
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Aug 25 10:38:22 2020 +0200

    Crypto (JCE) JVM support
---
 catalog/pom.xml                                    |  1 +
 docs/modules/ROOT/nav.adoc                         |  1 +
 docs/modules/ROOT/pages/reference/components.adoc  |  3 +
 docs/modules/ROOT/pages/reference/dataformats.adoc |  6 ++
 .../ROOT/pages/reference/extensions/crypto.adoc    | 31 +++++++
 docs/modules/ROOT/pages/reference/index.adoc       |  3 +
 extensions-jvm/crypto/deployment/pom.xml           | 63 ++++++++++++++
 .../crypto/deployment/CryptoProcessor.java         | 46 +++++++++++
 extensions-jvm/crypto/integration-test/pom.xml     | 95 ++++++++++++++++++++++
 .../component/crypto/it/CryptoResource.java        | 77 ++++++++++++++++++
 .../quarkus/component/crypto/it/CryptoTest.java    | 50 ++++++++++++
 extensions-jvm/crypto/pom.xml                      | 40 +++++++++
 extensions-jvm/crypto/runtime/pom.xml              | 94 +++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 32 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom/pom.xml                                   | 15 ++++
 16 files changed, 558 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index d3bcc7b..80c6bdb 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -110,6 +110,7 @@
             camel-quarkus-couchbase
             camel-quarkus-couchdb
             camel-quarkus-cron
+            camel-quarkus-crypto
             camel-quarkus-csv
             camel-quarkus-dataformat
             camel-quarkus-debezium-mongodb
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 14b1e50..cb270ae 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -87,6 +87,7 @@
 *** xref:reference/extensions/couchbase.adoc[Couchbase]
 *** xref:reference/extensions/couchdb.adoc[CouchDB]
 *** xref:reference/extensions/cron.adoc[Cron]
+*** xref:reference/extensions/crypto.adoc[Crypto (JCE)]
 *** xref:reference/extensions/csv.adoc[CSV]
 *** xref:reference/extensions/dataformat.adoc[Data Format]
 *** xref:reference/extensions/debezium-mongodb.adoc[Debezium MongoDB Connector]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 77f2202..29cb710 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -235,6 +235,9 @@ Stable | 1.0.0 | Consume changesets for inserts, updates and deletes in a CouchD
 | xref:reference/extensions/cron.adoc[Cron] | [.camel-element-artifact]##camel-quarkus-cron## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | A generic interface for triggering events at times specified through the Unix cron syntax.
 
+| xref:reference/extensions/crypto.adoc[Crypto (JCE)] | [.camel-element-artifact]##camel-quarkus-crypto## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE).
+
 | xref:reference/extensions/dataformat.adoc[Data Format] | [.camel-element-artifact]##camel-quarkus-dataformat## | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Use a Camel Data Format as a regular Camel Component.
 
diff --git a/docs/modules/ROOT/pages/reference/dataformats.adoc b/docs/modules/ROOT/pages/reference/dataformats.adoc
index 754a4f4..274cc05 100644
--- a/docs/modules/ROOT/pages/reference/dataformats.adoc
+++ b/docs/modules/ROOT/pages/reference/dataformats.adoc
@@ -25,6 +25,9 @@ Stable | 1.0.0 | Marshal and unmarshal Java beans from and to flat payloads (suc
 | xref:reference/extensions/bindy.adoc[Bindy Key Value Pair] | [.camel-element-artifact]##camel-quarkus-bindy## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Marshal and unmarshal Java beans from and to flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).
 
+| xref:reference/extensions/crypto.adoc[Crypto (Java Cryptographic Extension)] | [.camel-element-artifact]##camel-quarkus-crypto## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Encrypt and decrypt messages using Java Cryptography Extension (JCE).
+
 | xref:reference/extensions/csv.adoc[CSV] | [.camel-element-artifact]##camel-quarkus-csv## | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Handle CSV (Comma Separated Values) payloads.
 
@@ -70,6 +73,9 @@ Stable | 1.0.0 | Compress and decompress streams using LZF deflate algorithm.
 | xref:reference/extensions/mail.adoc[MIME Multipart] | [.camel-element-artifact]##camel-quarkus-mail## | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Marshal Camel messages with attachments into MIME-Multipart messages and back.
 
+| xref:reference/extensions/crypto.adoc[PGP] | [.camel-element-artifact]##camel-quarkus-crypto## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP.
+
 | xref:reference/extensions/protobuf.adoc[Protobuf] | [.camel-element-artifact]##camel-quarkus-protobuf## | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Serialize and deserialize Java objects using Google's Protocol buffers.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/crypto.adoc b/docs/modules/ROOT/pages/reference/extensions/crypto.adoc
new file mode 100644
index 0000000..2b4140a
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/crypto.adoc
@@ -0,0 +1,31 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[crypto]]
+= Crypto (JCE)
+:page-aliases: extensions/crypto.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE).
+
+== What's inside
+
+* https://camel.apache.org/components/latest/dataformats/crypto-dataformat.html[Crypto (Java Cryptographic Extension) data format]
+* https://camel.apache.org/components/latest/crypto-component.html[Crypto (JCE) component], URI syntax: `crypto:cryptoOperation:name`
+* https://camel.apache.org/components/latest/dataformats/pgp-dataformat.html[PGP data format]
+
+Please refer to the above links for usage and configuration details.
+
+== Maven coordinates
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel.quarkus</groupId>
+    <artifactId>camel-quarkus-crypto</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 1b18f37..8c2752a 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -239,6 +239,9 @@ Stable | 1.0.0 | Consume changesets for inserts, updates and deletes in a CouchD
 |  xref:reference/extensions/cron.adoc[Cron]  | camel-quarkus-cron | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | A generic interface for triggering events at times specified through the Unix cron syntax.
 
+|  xref:reference/extensions/crypto.adoc[Crypto (JCE)]  | camel-quarkus-crypto | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE).
+
 |  xref:reference/extensions/csv.adoc[CSV]  | camel-quarkus-csv | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Handle CSV (Comma Separated Values) payloads.
 
diff --git a/extensions-jvm/crypto/deployment/pom.xml b/extensions-jvm/crypto/deployment/pom.xml
new file mode 100644
index 0000000..eaf47ee
--- /dev/null
+++ b/extensions-jvm/crypto/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-crypto-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-crypto-deployment</artifactId>
+    <name>Camel Quarkus :: Crypto (JCE) :: 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-crypto</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-jvm/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java b/extensions-jvm/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java
new file mode 100644
index 0000000..25694e7
--- /dev/null
+++ b/extensions-jvm/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.crypto.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeBuild;
+import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import org.jboss.logging.Logger;
+
+class CryptoProcessor {
+
+    private static final Logger LOG = Logger.getLogger(CryptoProcessor.class);
+    private static final String FEATURE = "camel-crypto";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    /**
+     * Remove this once this extension starts supporting the native mode.
+     */
+    @BuildStep(onlyIf = NativeBuild.class)
+    @Record(value = ExecutionTime.RUNTIME_INIT)
+    void warnJvmInNative(JvmOnlyRecorder recorder) {
+        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
+        recorder.warnJvmInNative(FEATURE); // warn at runtime
+    }
+}
diff --git a/extensions-jvm/crypto/integration-test/pom.xml b/extensions-jvm/crypto/integration-test/pom.xml
new file mode 100644
index 0000000..743da3c
--- /dev/null
+++ b/extensions-jvm/crypto/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?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-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-crypto-integration-test</artifactId>
+    <name>Camel Quarkus :: Crypto (JCE) :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Crypto (JCE) extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/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 the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-crypto-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-crypto</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/crypto/integration-test/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java b/extensions-jvm/crypto/integration-test/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java
new file mode 100644
index 0000000..112b8db
--- /dev/null
+++ b/extensions-jvm/crypto/integration-test/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java
@@ -0,0 +1,77 @@
+/*
+ * 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.crypto.it;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.CamelContext;
+import org.jboss.logging.Logger;
+
+@Path("/crypto")
+@ApplicationScoped
+public class CryptoResource {
+
+    private static final Logger LOG = Logger.getLogger(CryptoResource.class);
+
+    private static final String COMPONENT_CRYPTO = "crypto";
+    private static final String DATAFORMAT_CRYPTO = "crypto";
+    private static final String DATAFORMAT_PGP = "pgp";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/crypto")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentCrypto() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_CRYPTO) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_CRYPTO);
+        return Response.status(500, COMPONENT_CRYPTO + " could not be loaded from the Camel context").build();
+    }
+
+    @Path("/load/dataformat/crypto")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadDataformatCrypto() throws Exception {
+        /* This is an autogenerated test */
+        if (context.resolveDataFormat(DATAFORMAT_CRYPTO) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", DATAFORMAT_CRYPTO);
+        return Response.status(500, DATAFORMAT_CRYPTO + " could not be loaded from the Camel context").build();
+    }
+
+    @Path("/load/dataformat/pgp")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadDataformatPgp() throws Exception {
+        /* This is an autogenerated test */
+        if (context.resolveDataFormat(DATAFORMAT_PGP) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", DATAFORMAT_PGP);
+        return Response.status(500, DATAFORMAT_PGP + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/crypto/integration-test/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java b/extensions-jvm/crypto/integration-test/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java
new file mode 100644
index 0000000..3c17370
--- /dev/null
+++ b/extensions-jvm/crypto/integration-test/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.crypto.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class CryptoTest {
+
+    @Test
+    public void loadComponentCrypto() {
+        /* A simple autogenerated test */
+        RestAssured.get("/crypto/load/component/crypto")
+                .then()
+                .statusCode(200);
+    }
+
+    @Test
+    public void loadDataformatCrypto() {
+        /* A simple autogenerated test */
+        RestAssured.get("/crypto/load/dataformat/crypto")
+                .then()
+                .statusCode(200);
+    }
+
+    @Test
+    public void loadDataformatPgp() {
+        /* A simple autogenerated test */
+        RestAssured.get("/crypto/load/dataformat/pgp")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/crypto/pom.xml b/extensions-jvm/crypto/pom.xml
new file mode 100644
index 0000000..62eda2c
--- /dev/null
+++ b/extensions-jvm/crypto/pom.xml
@@ -0,0 +1,40 @@
+<?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-crypto-parent</artifactId>
+    <name>Camel Quarkus :: Crypto (JCE)</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/crypto/runtime/pom.xml b/extensions-jvm/crypto/runtime/pom.xml
new file mode 100644
index 0000000..534555d
--- /dev/null
+++ b/extensions-jvm/crypto/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-crypto-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-crypto</artifactId>
+    <name>Camel Quarkus :: Crypto (JCE) :: Runtime</name>
+    <description>Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE).</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-crypto</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-jvm/crypto/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/crypto/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..1ec146d
--- /dev/null
+++ b/extensions-jvm/crypto/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,32 @@
+#
+# 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 Crypto (JCE)"
+description: "Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE)"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/crypto.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 8763a74..8de291a 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -57,6 +57,7 @@
         <module>cometd</module>
         <module>corda</module>
         <module>couchbase</module>
+        <module>crypto</module>
         <module>debezium-mongodb</module>
         <module>dns</module>
         <module>dropbox</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 4bfa270..bc9f230 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -610,6 +610,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-crypto</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-csv</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -2120,6 +2125,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-crypto</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-crypto-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-csv</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 05/06: Deep Java Library JVM support

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

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

commit 3ec2595195136b2737a3db1b47be80bb6a67dbdb
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Aug 25 11:26:51 2020 +0200

    Deep Java Library JVM support
---
 catalog/pom.xml                                    |  1 +
 docs/modules/ROOT/nav.adoc                         |  1 +
 docs/modules/ROOT/pages/reference/components.adoc  |  3 +
 .../ROOT/pages/reference/extensions/djl.adoc       | 29 +++++++
 docs/modules/ROOT/pages/reference/index.adoc       |  3 +
 extensions-jvm/djl/deployment/pom.xml              | 63 ++++++++++++++
 .../component/djl/deployment/DjlProcessor.java     | 46 +++++++++++
 extensions-jvm/djl/integration-test/pom.xml        | 95 ++++++++++++++++++++++
 .../quarkus/component/djl/it/DjlResource.java      | 51 ++++++++++++
 .../camel/quarkus/component/djl/it/DjlTest.java    | 34 ++++++++
 extensions-jvm/djl/pom.xml                         | 40 +++++++++
 extensions-jvm/djl/runtime/pom.xml                 | 94 +++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 32 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom/pom.xml                                   | 15 ++++
 15 files changed, 508 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index be756c6..662ea70 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -120,6 +120,7 @@
             camel-quarkus-digitalocean
             camel-quarkus-direct
             camel-quarkus-disruptor
+            camel-quarkus-djl
             camel-quarkus-dns
             camel-quarkus-dozer
             camel-quarkus-dropbox
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 9bf024e..93aca3b 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -94,6 +94,7 @@
 *** xref:reference/extensions/debezium-mysql.adoc[Debezium MySQL Connector]
 *** xref:reference/extensions/debezium-postgres.adoc[Debezium PostgresSQL Connector]
 *** xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector]
+*** xref:reference/extensions/djl.adoc[Deep Java Library]
 *** xref:reference/extensions/digitalocean.adoc[DigitalOcean]
 *** xref:reference/extensions/direct.adoc[Direct]
 *** xref:reference/extensions/disruptor.adoc[Disruptor]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 5866650..e4e3e82 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -253,6 +253,9 @@ Stable | 1.0.0 | Capture changes from a PostgresSQL database.
 | xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector] | [.camel-element-artifact]##camel-quarkus-debezium-sqlserver## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Capture changes from an SQL Server database.
 
+| xref:reference/extensions/djl.adoc[Deep Java Library] | [.camel-element-artifact]##camel-quarkus-djl## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Infer Deep Learning models from message exchanges data using Deep Java Library (DJL).
+
 | xref:reference/extensions/digitalocean.adoc[DigitalOcean] | [.camel-element-artifact]##camel-quarkus-digitalocean## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage Droplets and resources within the DigitalOcean cloud.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/djl.adoc b/docs/modules/ROOT/pages/reference/extensions/djl.adoc
new file mode 100644
index 0000000..8cb4d17
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/djl.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[djl]]
+= Deep Java Library
+:page-aliases: extensions/djl.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Infer Deep Learning models from message exchanges data using Deep Java Library (DJL).
+
+== What's inside
+
+* https://camel.apache.org/components/latest/djl-component.html[Deep Java Library component], URI syntax: `djl:application`
+
+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-djl</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 45e4ec1..bd9e740 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -260,6 +260,9 @@ Stable | 1.0.0 | Capture changes from a PostgresSQL database.
 |  xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector]  | camel-quarkus-debezium-sqlserver | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Capture changes from an SQL Server database.
 
+|  xref:reference/extensions/djl.adoc[Deep Java Library]  | camel-quarkus-djl | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Infer Deep Learning models from message exchanges data using Deep Java Library (DJL).
+
 |  xref:reference/extensions/digitalocean.adoc[DigitalOcean]  | camel-quarkus-digitalocean | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage Droplets and resources within the DigitalOcean cloud.
 
diff --git a/extensions-jvm/djl/deployment/pom.xml b/extensions-jvm/djl/deployment/pom.xml
new file mode 100644
index 0000000..063ded2
--- /dev/null
+++ b/extensions-jvm/djl/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-djl-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-djl-deployment</artifactId>
+    <name>Camel Quarkus :: Deep Java Library :: 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-djl</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-jvm/djl/deployment/src/main/java/org/apache/camel/quarkus/component/djl/deployment/DjlProcessor.java b/extensions-jvm/djl/deployment/src/main/java/org/apache/camel/quarkus/component/djl/deployment/DjlProcessor.java
new file mode 100644
index 0000000..3d90dd9
--- /dev/null
+++ b/extensions-jvm/djl/deployment/src/main/java/org/apache/camel/quarkus/component/djl/deployment/DjlProcessor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.djl.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeBuild;
+import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import org.jboss.logging.Logger;
+
+class DjlProcessor {
+
+    private static final Logger LOG = Logger.getLogger(DjlProcessor.class);
+    private static final String FEATURE = "camel-djl";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    /**
+     * Remove this once this extension starts supporting the native mode.
+     */
+    @BuildStep(onlyIf = NativeBuild.class)
+    @Record(value = ExecutionTime.RUNTIME_INIT)
+    void warnJvmInNative(JvmOnlyRecorder recorder) {
+        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
+        recorder.warnJvmInNative(FEATURE); // warn at runtime
+    }
+}
diff --git a/extensions-jvm/djl/integration-test/pom.xml b/extensions-jvm/djl/integration-test/pom.xml
new file mode 100644
index 0000000..65e876b
--- /dev/null
+++ b/extensions-jvm/djl/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?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-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-djl-integration-test</artifactId>
+    <name>Camel Quarkus :: Deep Java Library :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Deep Java Library extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/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 the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-djl-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-djl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/djl/integration-test/src/main/java/org/apache/camel/quarkus/component/djl/it/DjlResource.java b/extensions-jvm/djl/integration-test/src/main/java/org/apache/camel/quarkus/component/djl/it/DjlResource.java
new file mode 100644
index 0000000..2f9d717
--- /dev/null
+++ b/extensions-jvm/djl/integration-test/src/main/java/org/apache/camel/quarkus/component/djl/it/DjlResource.java
@@ -0,0 +1,51 @@
+/*
+ * 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.djl.it;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.CamelContext;
+import org.jboss.logging.Logger;
+
+@Path("/djl")
+@ApplicationScoped
+public class DjlResource {
+
+    private static final Logger LOG = Logger.getLogger(DjlResource.class);
+
+    private static final String COMPONENT_DJL = "djl";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/djl")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentDjl() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_DJL) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_DJL);
+        return Response.status(500, COMPONENT_DJL + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/djl/integration-test/src/test/java/org/apache/camel/quarkus/component/djl/it/DjlTest.java b/extensions-jvm/djl/integration-test/src/test/java/org/apache/camel/quarkus/component/djl/it/DjlTest.java
new file mode 100644
index 0000000..3c42bbc
--- /dev/null
+++ b/extensions-jvm/djl/integration-test/src/test/java/org/apache/camel/quarkus/component/djl/it/DjlTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.djl.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class DjlTest {
+
+    @Test
+    public void loadComponentDjl() {
+        /* A simple autogenerated test */
+        RestAssured.get("/djl/load/component/djl")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/djl/pom.xml b/extensions-jvm/djl/pom.xml
new file mode 100644
index 0000000..bc5c05b
--- /dev/null
+++ b/extensions-jvm/djl/pom.xml
@@ -0,0 +1,40 @@
+<?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-djl-parent</artifactId>
+    <name>Camel Quarkus :: Deep Java Library</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/djl/runtime/pom.xml b/extensions-jvm/djl/runtime/pom.xml
new file mode 100644
index 0000000..fee8ad4
--- /dev/null
+++ b/extensions-jvm/djl/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-djl-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-djl</artifactId>
+    <name>Camel Quarkus :: Deep Java Library :: Runtime</name>
+    <description>Infer Deep Learning models from message exchanges data using Deep Java Library (DJL).</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-djl</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-jvm/djl/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/djl/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..1764960
--- /dev/null
+++ b/extensions-jvm/djl/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,32 @@
+#
+# 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 Deep Java Library"
+description: "Infer Deep Learning models from message exchanges data using Deep Java Library (DJL)"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/djl.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 8ae2c7e..353cfa7 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -61,6 +61,7 @@
         <module>debezium-mongodb</module>
         <module>digitalocean</module>
         <module>disruptor</module>
+        <module>djl</module>
         <module>dns</module>
         <module>dropbox</module>
         <module>etcd</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index f3597ec..c32994a 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -671,6 +671,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-djl</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-dns</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -2235,6 +2240,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-djl</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-djl-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-dns</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 03/06: DigitalOcean JVM support

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

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

commit 17f43a77602236cfc40722f67a80cc60d64cf91c
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Aug 25 11:15:35 2020 +0200

    DigitalOcean JVM support
---
 catalog/pom.xml                                    |  1 +
 docs/modules/ROOT/nav.adoc                         |  1 +
 docs/modules/ROOT/pages/reference/components.adoc  |  3 +
 .../pages/reference/extensions/digitalocean.adoc   | 29 +++++++
 docs/modules/ROOT/pages/reference/index.adoc       |  3 +
 extensions-jvm/digitalocean/deployment/pom.xml     | 63 ++++++++++++++
 .../deployment/DigitaloceanProcessor.java          | 46 +++++++++++
 .../digitalocean/integration-test/pom.xml          | 95 ++++++++++++++++++++++
 .../digitalocean/it/DigitaloceanResource.java      | 51 ++++++++++++
 .../digitalocean/it/DigitaloceanTest.java          | 34 ++++++++
 extensions-jvm/digitalocean/pom.xml                | 40 +++++++++
 extensions-jvm/digitalocean/runtime/pom.xml        | 94 +++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 32 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom/pom.xml                                   | 15 ++++
 15 files changed, 508 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 80c6bdb..b976bbd 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -117,6 +117,7 @@
             camel-quarkus-debezium-mysql
             camel-quarkus-debezium-postgres
             camel-quarkus-debezium-sqlserver
+            camel-quarkus-digitalocean
             camel-quarkus-direct
             camel-quarkus-dns
             camel-quarkus-dozer
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index cb270ae..8147ca1 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -94,6 +94,7 @@
 *** xref:reference/extensions/debezium-mysql.adoc[Debezium MySQL Connector]
 *** xref:reference/extensions/debezium-postgres.adoc[Debezium PostgresSQL Connector]
 *** xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector]
+*** xref:reference/extensions/digitalocean.adoc[DigitalOcean]
 *** xref:reference/extensions/direct.adoc[Direct]
 *** xref:reference/extensions/dns.adoc[DNS]
 *** xref:reference/extensions/dozer.adoc[Dozer]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 29cb710..c71394b 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -253,6 +253,9 @@ Stable | 1.0.0 | Capture changes from a PostgresSQL database.
 | xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector] | [.camel-element-artifact]##camel-quarkus-debezium-sqlserver## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Capture changes from an SQL Server database.
 
+| xref:reference/extensions/digitalocean.adoc[DigitalOcean] | [.camel-element-artifact]##camel-quarkus-digitalocean## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Manage Droplets and resources within the DigitalOcean cloud.
+
 | xref:reference/extensions/direct.adoc[Direct] | [.camel-element-artifact]##camel-quarkus-direct## | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Call another endpoint from the same Camel Context synchronously.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/digitalocean.adoc b/docs/modules/ROOT/pages/reference/extensions/digitalocean.adoc
new file mode 100644
index 0000000..8aba70b
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/digitalocean.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[digitalocean]]
+= DigitalOcean
+:page-aliases: extensions/digitalocean.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Manage Droplets and resources within the DigitalOcean cloud.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/digitalocean-component.html[DigitalOcean component], URI syntax: `digitalocean:operation`
+
+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-digitalocean</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 8c2752a..a05aa15 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -260,6 +260,9 @@ Stable | 1.0.0 | Capture changes from a PostgresSQL database.
 |  xref:reference/extensions/debezium-sqlserver.adoc[Debezium SQL Server Connector]  | camel-quarkus-debezium-sqlserver | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Capture changes from an SQL Server database.
 
+|  xref:reference/extensions/digitalocean.adoc[DigitalOcean]  | camel-quarkus-digitalocean | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Manage Droplets and resources within the DigitalOcean cloud.
+
 |  xref:reference/extensions/direct.adoc[Direct]  | camel-quarkus-direct | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Call another endpoint from the same Camel Context synchronously.
 
diff --git a/extensions-jvm/digitalocean/deployment/pom.xml b/extensions-jvm/digitalocean/deployment/pom.xml
new file mode 100644
index 0000000..5847f59
--- /dev/null
+++ b/extensions-jvm/digitalocean/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-digitalocean-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-digitalocean-deployment</artifactId>
+    <name>Camel Quarkus :: DigitalOcean :: 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-digitalocean</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-jvm/digitalocean/deployment/src/main/java/org/apache/camel/quarkus/component/digitalocean/deployment/DigitaloceanProcessor.java b/extensions-jvm/digitalocean/deployment/src/main/java/org/apache/camel/quarkus/component/digitalocean/deployment/DigitaloceanProcessor.java
new file mode 100644
index 0000000..f2072ca
--- /dev/null
+++ b/extensions-jvm/digitalocean/deployment/src/main/java/org/apache/camel/quarkus/component/digitalocean/deployment/DigitaloceanProcessor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.digitalocean.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeBuild;
+import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import org.jboss.logging.Logger;
+
+class DigitaloceanProcessor {
+
+    private static final Logger LOG = Logger.getLogger(DigitaloceanProcessor.class);
+    private static final String FEATURE = "camel-digitalocean";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    /**
+     * Remove this once this extension starts supporting the native mode.
+     */
+    @BuildStep(onlyIf = NativeBuild.class)
+    @Record(value = ExecutionTime.RUNTIME_INIT)
+    void warnJvmInNative(JvmOnlyRecorder recorder) {
+        JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
+        recorder.warnJvmInNative(FEATURE); // warn at runtime
+    }
+}
diff --git a/extensions-jvm/digitalocean/integration-test/pom.xml b/extensions-jvm/digitalocean/integration-test/pom.xml
new file mode 100644
index 0000000..7e1949b
--- /dev/null
+++ b/extensions-jvm/digitalocean/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?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-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-digitalocean-integration-test</artifactId>
+    <name>Camel Quarkus :: DigitalOcean :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus DigitalOcean extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/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 the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-digitalocean-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-digitalocean</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/digitalocean/integration-test/src/main/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanResource.java b/extensions-jvm/digitalocean/integration-test/src/main/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanResource.java
new file mode 100644
index 0000000..d8c6886
--- /dev/null
+++ b/extensions-jvm/digitalocean/integration-test/src/main/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanResource.java
@@ -0,0 +1,51 @@
+/*
+ * 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.digitalocean.it;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.CamelContext;
+import org.jboss.logging.Logger;
+
+@Path("/digitalocean")
+@ApplicationScoped
+public class DigitaloceanResource {
+
+    private static final Logger LOG = Logger.getLogger(DigitaloceanResource.class);
+
+    private static final String COMPONENT_DIGITALOCEAN = "digitalocean";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/digitalocean")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentDigitalocean() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_DIGITALOCEAN) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_DIGITALOCEAN);
+        return Response.status(500, COMPONENT_DIGITALOCEAN + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/digitalocean/integration-test/src/test/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanTest.java b/extensions-jvm/digitalocean/integration-test/src/test/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanTest.java
new file mode 100644
index 0000000..4c34b9d
--- /dev/null
+++ b/extensions-jvm/digitalocean/integration-test/src/test/java/org/apache/camel/quarkus/component/digitalocean/it/DigitaloceanTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.digitalocean.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class DigitaloceanTest {
+
+    @Test
+    public void loadComponentDigitalocean() {
+        /* A simple autogenerated test */
+        RestAssured.get("/digitalocean/load/component/digitalocean")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/digitalocean/pom.xml b/extensions-jvm/digitalocean/pom.xml
new file mode 100644
index 0000000..db18f29
--- /dev/null
+++ b/extensions-jvm/digitalocean/pom.xml
@@ -0,0 +1,40 @@
+<?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-digitalocean-parent</artifactId>
+    <name>Camel Quarkus :: DigitalOcean</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/digitalocean/runtime/pom.xml b/extensions-jvm/digitalocean/runtime/pom.xml
new file mode 100644
index 0000000..9f98f99
--- /dev/null
+++ b/extensions-jvm/digitalocean/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-digitalocean-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-digitalocean</artifactId>
+    <name>Camel Quarkus :: DigitalOcean :: Runtime</name>
+    <description>Manage Droplets and resources within the DigitalOcean cloud.</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-digitalocean</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-jvm/digitalocean/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/digitalocean/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..00fdd9c
--- /dev/null
+++ b/extensions-jvm/digitalocean/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,32 @@
+#
+# 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 DigitalOcean"
+description: "Manage Droplets and resources within the DigitalOcean cloud"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/digitalocean.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 8de291a..c9deb84 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -59,6 +59,7 @@
         <module>couchbase</module>
         <module>crypto</module>
         <module>debezium-mongodb</module>
+        <module>digitalocean</module>
         <module>dns</module>
         <module>dropbox</module>
         <module>etcd</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index bc9f230..0921684 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -656,6 +656,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-digitalocean</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-direct</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -2195,6 +2200,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-digitalocean</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-digitalocean-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-direct</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>