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/09/07 15:21:59 UTC

[camel-quarkus] branch master updated (408abee -> 1156c5d)

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 408abee  QuickFix JVM support
     new 24b2d7a  Printer JVM support
     new d6f80e7  PostgresSQL Event JVM support
     new 625d6f2  PostgresSQL Replication Slot JVM support
     new 6f95060  OptaPlanner JVM support
     new 1156c5d  NSQ JVM support

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


Summary of changes:
 catalog/pom.xml                                    | 65 +++++++++++++++++++
 docs/modules/ROOT/nav.adoc                         |  5 ++
 docs/modules/ROOT/pages/reference/components.adoc  | 15 +++++
 .../reference/extensions/{chunk.adoc => nsq.adoc}  | 12 ++--
 .../extensions/{atmos.adoc => optaplanner.adoc}    | 12 ++--
 .../{apns.adoc => pg-replication-slot.adoc}        | 12 ++--
 .../extensions/{atmos.adoc => pgevent.adoc}        | 12 ++--
 .../extensions/{dns.adoc => printer.adoc}          | 12 ++--
 docs/modules/ROOT/pages/reference/index.adoc       | 15 +++++
 extensions-jvm/{irc => nsq}/deployment/pom.xml     |  8 +--
 .../component/nsq/deployment/NsqProcessor.java}    |  8 +--
 .../{rss => nsq}/integration-test/pom.xml          | 10 +--
 .../quarkus/component/nsq/it/NsqResource.java}     | 20 +++---
 .../camel/quarkus/component/nsq/it/NsqTest.java}   |  8 +--
 extensions-jvm/{dns => nsq}/pom.xml                |  4 +-
 extensions-jvm/{atomix => nsq}/runtime/pom.xml     | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 .../deployment/pom.xml                             |  8 +--
 .../deployment/OptaplannerProcessor.java}          |  8 +--
 .../{sip => optaplanner}/integration-test/pom.xml  | 10 +--
 .../optaplanner/it/OptaplannerResource.java}       | 20 +++---
 .../component/optaplanner/it/OptaplannerTest.java} |  8 +--
 extensions-jvm/{atom => optaplanner}/pom.xml       |  4 +-
 .../{workday => optaplanner}/runtime/pom.xml       | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 .../deployment/pom.xml                             |  8 +--
 .../deployment/PgReplicationSlotProcessor.java}    |  8 +--
 .../integration-test/pom.xml                       | 10 +--
 .../slot/it/PgReplicationSlotResource.java}        | 20 +++---
 .../slot/it/PgReplicationSlotTest.java}            |  8 +--
 .../pom.xml                                        |  4 +-
 .../{apns => pg-replication-slot}/runtime/pom.xml  | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 extensions-jvm/{djl => pgevent}/deployment/pom.xml |  8 +--
 .../pgevent/deployment/PgeventProcessor.java}      |  8 +--
 .../{saxon => pgevent}/integration-test/pom.xml    | 10 +--
 .../component/pgevent/it/PgeventResource.java}     | 20 +++---
 .../quarkus/component/pgevent/it/PgeventTest.java} |  8 +--
 extensions-jvm/{atom => pgevent}/pom.xml           |  4 +-
 extensions-jvm/{atomix => pgevent}/runtime/pom.xml | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 extensions-jvm/pom.xml                             |  5 ++
 .../{bonita => printer}/deployment/pom.xml         |  8 +--
 .../printer/deployment/PrinterProcessor.java}      |  8 +--
 .../{saxon => printer}/integration-test/pom.xml    | 10 +--
 .../component/printer/it/PrinterResource.java}     | 20 +++---
 .../quarkus/component/printer/it/PrinterTest.java} |  8 +--
 extensions-jvm/{atom => printer}/pom.xml           |  4 +-
 extensions-jvm/{rss => printer}/runtime/pom.xml    | 10 +--
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +-
 poms/bom/pom.xml                                   | 75 ++++++++++++++++++++++
 51 files changed, 395 insertions(+), 215 deletions(-)
 copy docs/modules/ROOT/pages/reference/extensions/{chunk.adoc => nsq.adoc} (68%)
 copy docs/modules/ROOT/pages/reference/extensions/{atmos.adoc => optaplanner.adoc} (66%)
 copy docs/modules/ROOT/pages/reference/extensions/{apns.adoc => pg-replication-slot.adoc} (57%)
 copy docs/modules/ROOT/pages/reference/extensions/{atmos.adoc => pgevent.adoc} (64%)
 copy docs/modules/ROOT/pages/reference/extensions/{dns.adoc => printer.adoc} (69%)
 copy extensions-jvm/{irc => nsq}/deployment/pom.xml (91%)
 copy extensions-jvm/{djl/deployment/src/main/java/org/apache/camel/quarkus/component/djl/deployment/DjlProcessor.java => nsq/deployment/src/main/java/org/apache/camel/quarkus/component/nsq/deployment/NsqProcessor.java} (89%)
 copy extensions-jvm/{rss => nsq}/integration-test/pom.xml (92%)
 copy extensions-jvm/{irc/integration-test/src/main/java/org/apache/camel/quarkus/component/irc/it/IrcResource.java => nsq/integration-test/src/main/java/org/apache/camel/quarkus/component/nsq/it/NsqResource.java} (76%)
 copy extensions-jvm/{djl/integration-test/src/test/java/org/apache/camel/quarkus/component/djl/it/DjlTest.java => nsq/integration-test/src/test/java/org/apache/camel/quarkus/component/nsq/it/NsqTest.java} (87%)
 copy extensions-jvm/{dns => nsq}/pom.xml (94%)
 copy extensions-jvm/{atomix => nsq}/runtime/pom.xml (91%)
 copy extensions-jvm/{apns => nsq}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (89%)
 copy extensions-jvm/{aws2-lambda => optaplanner}/deployment/pom.xml (89%)
 copy extensions-jvm/{aws2-lambda/deployment/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/deployment/Aws2LambdaProcessor.java => optaplanner/deployment/src/main/java/org/apache/camel/quarkus/component/optaplanner/deployment/OptaplannerProcessor.java} (87%)
 copy extensions-jvm/{sip => optaplanner}/integration-test/pom.xml (90%)
 copy extensions-jvm/{aws2-lambda/integration-test/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaResource.java => optaplanner/integration-test/src/main/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerResource.java} (73%)
 copy extensions-jvm/{aws2-lambda/integration-test/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaTest.java => optaplanner/integration-test/src/test/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerTest.java} (84%)
 copy extensions-jvm/{atom => optaplanner}/pom.xml (93%)
 copy extensions-jvm/{workday => optaplanner}/runtime/pom.xml (91%)
 copy extensions-jvm/{asterisk => optaplanner}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (90%)
 copy extensions-jvm/{azure-storage-queue => pg-replication-slot}/deployment/pom.xml (89%)
 copy extensions-jvm/{azure-storage-queue/deployment/src/main/java/org/apache/camel/quarkus/component/azure/storage/queue/deployment/AzureStorageQueueProcessor.java => pg-replication-slot/deployment/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/deployment/PgReplicationSlotProcessor.java} (86%)
 copy extensions-jvm/{schematron => pg-replication-slot}/integration-test/pom.xml (89%)
 copy extensions-jvm/{azure-storage-queue/integration-test/src/main/java/org/apache/camel/quarkus/component/azure/storage/queue/it/AzureStorageQueueResource.java => pg-replication-slot/integration-test/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotResource.java} (68%)
 copy extensions-jvm/{azure-storage-queue/integration-test/src/test/java/org/apache/camel/quarkus/component/azure/storage/queue/it/AzureStorageQueueTest.java => pg-replication-slot/integration-test/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java} (82%)
 copy extensions-jvm/{azure-storage-queue => pg-replication-slot}/pom.xml (92%)
 copy extensions-jvm/{apns => pg-replication-slot}/runtime/pom.xml (89%)
 copy extensions-jvm/{apns => pg-replication-slot}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (85%)
 copy extensions-jvm/{djl => pgevent}/deployment/pom.xml (90%)
 copy extensions-jvm/{ehcache/deployment/src/main/java/org/apache/camel/quarkus/component/ehcache/deployment/EhcacheProcessor.java => pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java} (88%)
 copy extensions-jvm/{saxon => pgevent}/integration-test/pom.xml (90%)
 copy extensions-jvm/{ehcache/integration-test/src/main/java/org/apache/camel/quarkus/component/ehcache/it/EhcacheResource.java => pgevent/integration-test/src/main/java/org/apache/camel/quarkus/component/pgevent/it/PgeventResource.java} (75%)
 copy extensions-jvm/{apns/integration-test/src/test/java/org/apache/camel/quarkus/component/apns/it/ApnsTest.java => pgevent/integration-test/src/test/java/org/apache/camel/quarkus/component/pgevent/it/PgeventTest.java} (85%)
 copy extensions-jvm/{atom => pgevent}/pom.xml (93%)
 copy extensions-jvm/{atomix => pgevent}/runtime/pom.xml (91%)
 copy extensions-jvm/{apns => pgevent}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (88%)
 copy extensions-jvm/{bonita => printer}/deployment/pom.xml (90%)
 copy extensions-jvm/{ehcache/deployment/src/main/java/org/apache/camel/quarkus/component/ehcache/deployment/EhcacheProcessor.java => printer/deployment/src/main/java/org/apache/camel/quarkus/component/printer/deployment/PrinterProcessor.java} (88%)
 copy extensions-jvm/{saxon => printer}/integration-test/pom.xml (91%)
 copy extensions-jvm/{irc/integration-test/src/main/java/org/apache/camel/quarkus/component/irc/it/IrcResource.java => printer/integration-test/src/main/java/org/apache/camel/quarkus/component/printer/it/PrinterResource.java} (75%)
 copy extensions-jvm/{avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java => printer/integration-test/src/test/java/org/apache/camel/quarkus/component/printer/it/PrinterTest.java} (86%)
 copy extensions-jvm/{atom => printer}/pom.xml (93%)
 copy extensions-jvm/{rss => printer}/runtime/pom.xml (92%)
 copy extensions-jvm/{groovy => printer}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (92%)


[camel-quarkus] 02/05: PostgresSQL Event 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 d6f80e770827aea6ac14ff1e7d1d4b8a19e552ba
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Sep 7 15:58:57 2020 +0200

    PostgresSQL Event JVM support
---
 catalog/pom.xml                                    |  13 +++
 docs/modules/ROOT/nav.adoc                         |   1 +
 docs/modules/ROOT/pages/reference/components.adoc  |   3 +
 .../ROOT/pages/reference/extensions/pgevent.adoc   |  29 ++++++
 docs/modules/ROOT/pages/reference/index.adoc       |   3 +
 extensions-jvm/pgevent/deployment/pom.xml          |  63 +++++++++++++
 .../pgevent/deployment/PgeventProcessor.java       |  46 ++++++++++
 extensions-jvm/pgevent/integration-test/pom.xml    | 100 +++++++++++++++++++++
 .../component/pgevent/it/PgeventResource.java      |  51 +++++++++++
 .../quarkus/component/pgevent/it/PgeventTest.java  |  34 +++++++
 extensions-jvm/pgevent/pom.xml                     |  40 +++++++++
 extensions-jvm/pgevent/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, 525 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 7554189..52ba6d1 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -2324,6 +2324,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-pgevent</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-platform-http</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 3cadeca..0baacf9 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -190,6 +190,7 @@
 *** xref:reference/extensions/paho.adoc[Paho]
 *** xref:reference/extensions/pdf.adoc[PDF]
 *** xref:reference/extensions/platform-http.adoc[Platform HTTP]
+*** xref:reference/extensions/pgevent.adoc[PostgresSQL Event]
 *** xref:reference/extensions/printer.adoc[Printer]
 *** xref:reference/extensions/protobuf.adoc[Protobuf]
 *** xref:reference/extensions/pubnub.adoc[PubNub]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index a6b4744..e803caa 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -613,6 +613,9 @@ Stable | 0.3.1 | Create, modify or extract content from PDF documents.
 | xref:reference/extensions/platform-http.adoc[Platform HTTP] | [.camel-element-artifact]##camel-quarkus-platform-http## | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Expose HTTP endpoints using the HTTP server available in the current platform.
 
+| xref:reference/extensions/pgevent.adoc[PostgresSQL Event] | [.camel-element-artifact]##camel-quarkus-pgevent## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send and receive PostgreSQL events via LISTEN and NOTIFY commands.
+
 | xref:reference/extensions/printer.adoc[Printer] | [.camel-element-artifact]##camel-quarkus-printer## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send print jobs to printers.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/pgevent.adoc b/docs/modules/ROOT/pages/reference/extensions/pgevent.adoc
new file mode 100644
index 0000000..a88fe34
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/pgevent.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[pgevent]]
+= PostgresSQL Event
+:page-aliases: extensions/pgevent.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Send and receive PostgreSQL events via LISTEN and NOTIFY commands.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/pgevent-component.html[PostgresSQL Event component], URI syntax: `pgevent:host:port/database/channel`
+
+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-pgevent</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 8836bdb..9947d8d 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -548,6 +548,9 @@ Stable | 0.3.1 | Create, modify or extract content from PDF documents.
 |  xref:reference/extensions/platform-http.adoc[Platform HTTP]  | camel-quarkus-platform-http | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Expose HTTP endpoints using the HTTP server available in the current platform.
 
+|  xref:reference/extensions/pgevent.adoc[PostgresSQL Event]  | camel-quarkus-pgevent | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send and receive PostgreSQL events via LISTEN and NOTIFY commands.
+
 |  xref:reference/extensions/printer.adoc[Printer]  | camel-quarkus-printer | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send print jobs to printers.
 
diff --git a/extensions-jvm/pgevent/deployment/pom.xml b/extensions-jvm/pgevent/deployment/pom.xml
new file mode 100644
index 0000000..e120381
--- /dev/null
+++ b/extensions-jvm/pgevent/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-pgevent-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-pgevent-deployment</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Event :: 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-pgevent</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/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java b/extensions-jvm/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java
new file mode 100644
index 0000000..042e49f
--- /dev/null
+++ b/extensions-jvm/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.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.pgevent.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 PgeventProcessor {
+
+    private static final Logger LOG = Logger.getLogger(PgeventProcessor.class);
+    private static final String FEATURE = "camel-pgevent";
+
+    @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/pgevent/integration-test/pom.xml b/extensions-jvm/pgevent/integration-test/pom.xml
new file mode 100644
index 0000000..77a21b5
--- /dev/null
+++ b/extensions-jvm/pgevent/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-pgevent-integration-test</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Event :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus PostgresSQL Event extension</description>
+
+    <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-pgevent</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>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-pgevent-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </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/pgevent/integration-test/src/main/java/org/apache/camel/quarkus/component/pgevent/it/PgeventResource.java b/extensions-jvm/pgevent/integration-test/src/main/java/org/apache/camel/quarkus/component/pgevent/it/PgeventResource.java
new file mode 100644
index 0000000..d61425a
--- /dev/null
+++ b/extensions-jvm/pgevent/integration-test/src/main/java/org/apache/camel/quarkus/component/pgevent/it/PgeventResource.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.pgevent.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("/pgevent")
+@ApplicationScoped
+public class PgeventResource {
+
+    private static final Logger LOG = Logger.getLogger(PgeventResource.class);
+
+    private static final String COMPONENT_PGEVENT = "pgevent";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/pgevent")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentPgevent() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_PGEVENT) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_PGEVENT);
+        return Response.status(500, COMPONENT_PGEVENT + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/pgevent/integration-test/src/test/java/org/apache/camel/quarkus/component/pgevent/it/PgeventTest.java b/extensions-jvm/pgevent/integration-test/src/test/java/org/apache/camel/quarkus/component/pgevent/it/PgeventTest.java
new file mode 100644
index 0000000..71c010b
--- /dev/null
+++ b/extensions-jvm/pgevent/integration-test/src/test/java/org/apache/camel/quarkus/component/pgevent/it/PgeventTest.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.pgevent.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class PgeventTest {
+
+    @Test
+    public void loadComponentPgevent() {
+        /* A simple autogenerated test */
+        RestAssured.get("/pgevent/load/component/pgevent")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/pgevent/pom.xml b/extensions-jvm/pgevent/pom.xml
new file mode 100644
index 0000000..4ce28e7
--- /dev/null
+++ b/extensions-jvm/pgevent/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-pgevent-parent</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Event</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/pgevent/runtime/pom.xml b/extensions-jvm/pgevent/runtime/pom.xml
new file mode 100644
index 0000000..cfb6678
--- /dev/null
+++ b/extensions-jvm/pgevent/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-pgevent-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-pgevent</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Event :: Runtime</name>
+    <description>Send and receive PostgreSQL events via LISTEN and NOTIFY commands.</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-pgevent</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/pgevent/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/pgevent/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..2111454
--- /dev/null
+++ b/extensions-jvm/pgevent/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 PostgresSQL Event"
+description: "Send and receive PostgreSQL events via LISTEN and NOTIFY commands"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/pgevent.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 45e2eda..c858365 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -91,6 +91,7 @@
         <module>nitrite</module>
         <module>ognl</module>
         <module>openstack</module>
+        <module>pgevent</module>
         <module>printer</module>
         <module>protobuf</module>
         <module>pubnub</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index def17aa..4c3c02e 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1292,6 +1292,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-pgevent</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-platform-http</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3486,6 +3491,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-pgevent</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-pgevent-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-platform-http</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 04/05: OptaPlanner 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 6f95060cd6d52a8d89f05c30d0e2bcdac54f005c
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Sep 7 16:07:21 2020 +0200

    OptaPlanner JVM support
---
 catalog/pom.xml                                    |  13 +++
 docs/modules/ROOT/nav.adoc                         |   1 +
 docs/modules/ROOT/pages/reference/components.adoc  |   3 +
 .../pages/reference/extensions/optaplanner.adoc    |  29 ++++++
 docs/modules/ROOT/pages/reference/index.adoc       |   3 +
 extensions-jvm/optaplanner/deployment/pom.xml      |  63 +++++++++++++
 .../deployment/OptaplannerProcessor.java           |  46 ++++++++++
 .../optaplanner/integration-test/pom.xml           | 100 +++++++++++++++++++++
 .../optaplanner/it/OptaplannerResource.java        |  51 +++++++++++
 .../component/optaplanner/it/OptaplannerTest.java  |  34 +++++++
 extensions-jvm/optaplanner/pom.xml                 |  40 +++++++++
 extensions-jvm/optaplanner/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, 525 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 44e8d3b..302c2a7 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -2298,6 +2298,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-optaplanner</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-paho</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 87736e9..9d6870d 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -187,6 +187,7 @@
 *** xref:reference/extensions/openapi-java.adoc[Openapi Java]
 *** xref:reference/extensions/openstack.adoc[OpenStack]
 *** xref:reference/extensions/opentracing.adoc[OpenTracing]
+*** xref:reference/extensions/optaplanner.adoc[OptaPlanner]
 *** xref:reference/extensions/paho.adoc[Paho]
 *** xref:reference/extensions/pdf.adoc[PDF]
 *** xref:reference/extensions/platform-http.adoc[Platform HTTP]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 656602f..c0920f3 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -604,6 +604,9 @@ Preview | 1.0.0 | Access OpenStack to manage compute resources.
 | xref:reference/extensions/openstack.adoc[OpenStack Swift] | [.camel-element-artifact]##camel-quarkus-openstack## | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Access OpenStack Swift object/blob store.
 
+| xref:reference/extensions/optaplanner.adoc[OptaPlanner] | [.camel-element-artifact]##camel-quarkus-optaplanner## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Solve planning problems with OptaPlanner.
+
 | xref:reference/extensions/paho.adoc[Paho] | [.camel-element-artifact]##camel-quarkus-paho## | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Communicate with MQTT message brokers using Eclipse Paho MQTT Client.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/optaplanner.adoc b/docs/modules/ROOT/pages/reference/extensions/optaplanner.adoc
new file mode 100644
index 0000000..2ac462e
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/optaplanner.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[optaplanner]]
+= OptaPlanner
+:page-aliases: extensions/optaplanner.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Solve planning problems with OptaPlanner.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/optaplanner-component.html[OptaPlanner component], URI syntax: `optaplanner:configFile`
+
+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-optaplanner</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 a802b32..b12f321 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -539,6 +539,9 @@ Preview | 1.0.0 | Interact with OpenStack APIs
 |  xref:reference/extensions/opentracing.adoc[OpenTracing]  | camel-quarkus-opentracing | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Distributed tracing using OpenTracing
 
+|  xref:reference/extensions/optaplanner.adoc[OptaPlanner]  | camel-quarkus-optaplanner | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Solve planning problems with OptaPlanner.
+
 |  xref:reference/extensions/paho.adoc[Paho]  | camel-quarkus-paho | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Communicate with MQTT message brokers using Eclipse Paho MQTT Client.
 
diff --git a/extensions-jvm/optaplanner/deployment/pom.xml b/extensions-jvm/optaplanner/deployment/pom.xml
new file mode 100644
index 0000000..7360e75
--- /dev/null
+++ b/extensions-jvm/optaplanner/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-optaplanner-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-optaplanner-deployment</artifactId>
+    <name>Camel Quarkus :: OptaPlanner :: 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-optaplanner</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/optaplanner/deployment/src/main/java/org/apache/camel/quarkus/component/optaplanner/deployment/OptaplannerProcessor.java b/extensions-jvm/optaplanner/deployment/src/main/java/org/apache/camel/quarkus/component/optaplanner/deployment/OptaplannerProcessor.java
new file mode 100644
index 0000000..d07ab81
--- /dev/null
+++ b/extensions-jvm/optaplanner/deployment/src/main/java/org/apache/camel/quarkus/component/optaplanner/deployment/OptaplannerProcessor.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.optaplanner.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 OptaplannerProcessor {
+
+    private static final Logger LOG = Logger.getLogger(OptaplannerProcessor.class);
+    private static final String FEATURE = "camel-optaplanner";
+
+    @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/optaplanner/integration-test/pom.xml b/extensions-jvm/optaplanner/integration-test/pom.xml
new file mode 100644
index 0000000..4e6f896
--- /dev/null
+++ b/extensions-jvm/optaplanner/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-optaplanner-integration-test</artifactId>
+    <name>Camel Quarkus :: OptaPlanner :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus OptaPlanner extension</description>
+
+    <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-optaplanner</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>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-optaplanner-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </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/optaplanner/integration-test/src/main/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerResource.java b/extensions-jvm/optaplanner/integration-test/src/main/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerResource.java
new file mode 100644
index 0000000..8c7ae86
--- /dev/null
+++ b/extensions-jvm/optaplanner/integration-test/src/main/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerResource.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.optaplanner.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("/optaplanner")
+@ApplicationScoped
+public class OptaplannerResource {
+
+    private static final Logger LOG = Logger.getLogger(OptaplannerResource.class);
+
+    private static final String COMPONENT_OPTAPLANNER = "optaplanner";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/optaplanner")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentOptaplanner() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_OPTAPLANNER) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_OPTAPLANNER);
+        return Response.status(500, COMPONENT_OPTAPLANNER + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/optaplanner/integration-test/src/test/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerTest.java b/extensions-jvm/optaplanner/integration-test/src/test/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerTest.java
new file mode 100644
index 0000000..ff99e1e
--- /dev/null
+++ b/extensions-jvm/optaplanner/integration-test/src/test/java/org/apache/camel/quarkus/component/optaplanner/it/OptaplannerTest.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.optaplanner.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class OptaplannerTest {
+
+    @Test
+    public void loadComponentOptaplanner() {
+        /* A simple autogenerated test */
+        RestAssured.get("/optaplanner/load/component/optaplanner")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/optaplanner/pom.xml b/extensions-jvm/optaplanner/pom.xml
new file mode 100644
index 0000000..e8f5a69
--- /dev/null
+++ b/extensions-jvm/optaplanner/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-optaplanner-parent</artifactId>
+    <name>Camel Quarkus :: OptaPlanner</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/optaplanner/runtime/pom.xml b/extensions-jvm/optaplanner/runtime/pom.xml
new file mode 100644
index 0000000..9a7573b
--- /dev/null
+++ b/extensions-jvm/optaplanner/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-optaplanner-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-optaplanner</artifactId>
+    <name>Camel Quarkus :: OptaPlanner :: Runtime</name>
+    <description>Solve planning problems with OptaPlanner.</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-optaplanner</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/optaplanner/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/optaplanner/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..343577a
--- /dev/null
+++ b/extensions-jvm/optaplanner/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 OptaPlanner"
+description: "Solve planning problems with OptaPlanner"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/optaplanner.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index d22173a..06074c7 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -91,6 +91,7 @@
         <module>nitrite</module>
         <module>ognl</module>
         <module>openstack</module>
+        <module>optaplanner</module>
         <module>pg-replication-slot</module>
         <module>pgevent</module>
         <module>printer</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 79fb270..dd18299 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1282,6 +1282,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-optaplanner</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-paho</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3476,6 +3481,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-optaplanner</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-optaplanner-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-paho</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 05/05: NSQ 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 1156c5db78a39061dba7863538bf6175f4097376
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Sep 7 16:08:59 2020 +0200

    NSQ JVM support
---
 catalog/pom.xml                                    |  13 +++
 docs/modules/ROOT/nav.adoc                         |   1 +
 docs/modules/ROOT/pages/reference/components.adoc  |   3 +
 .../ROOT/pages/reference/extensions/nsq.adoc       |  29 ++++++
 docs/modules/ROOT/pages/reference/index.adoc       |   3 +
 extensions-jvm/nsq/deployment/pom.xml              |  63 +++++++++++++
 .../component/nsq/deployment/NsqProcessor.java     |  46 ++++++++++
 extensions-jvm/nsq/integration-test/pom.xml        | 100 +++++++++++++++++++++
 .../quarkus/component/nsq/it/NsqResource.java      |  51 +++++++++++
 .../camel/quarkus/component/nsq/it/NsqTest.java    |  34 +++++++
 extensions-jvm/nsq/pom.xml                         |  40 +++++++++
 extensions-jvm/nsq/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, 525 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 302c2a7..eaa4910 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -2233,6 +2233,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-nsq</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-ognl</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 9d6870d..d430993 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -182,6 +182,7 @@
 *** xref:reference/extensions/netty.adoc[Netty]
 *** xref:reference/extensions/netty-http.adoc[Netty HTTP]
 *** xref:reference/extensions/nitrite.adoc[Nitrite]
+*** xref:reference/extensions/nsq.adoc[NSQ]
 *** xref:reference/extensions/ognl.adoc[OGNL]
 *** xref:reference/extensions/olingo4.adoc[Olingo4]
 *** xref:reference/extensions/openapi-java.adoc[Openapi Java]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index c0920f3..3a9e71a 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -577,6 +577,9 @@ Stable | 0.2.0 | Netty HTTP server and client using the Netty 4.x.
 | xref:reference/extensions/nitrite.adoc[Nitrite] | [.camel-element-artifact]##camel-quarkus-nitrite## | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Access Nitrite databases.
 
+| xref:reference/extensions/nsq.adoc[NSQ] | [.camel-element-artifact]##camel-quarkus-nsq## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send and receive messages from NSQ realtime distributed messaging platform.
+
 | xref:reference/extensions/olingo4.adoc[Olingo4] | [.camel-element-artifact]##camel-quarkus-olingo4## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Communicate with OData 4.0 services using Apache Olingo OData API.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/nsq.adoc b/docs/modules/ROOT/pages/reference/extensions/nsq.adoc
new file mode 100644
index 0000000..b0a3e50
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/nsq.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[nsq]]
+= NSQ
+:page-aliases: extensions/nsq.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Send and receive messages from NSQ realtime distributed messaging platform.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/nsq-component.html[NSQ component], URI syntax: `nsq:topic`
+
+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-nsq</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 b12f321..0355b32 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -524,6 +524,9 @@ Stable | 0.2.0 | Netty HTTP server and client using the Netty 4.x.
 |  xref:reference/extensions/nitrite.adoc[Nitrite]  | camel-quarkus-nitrite | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Access Nitrite databases.
 
+|  xref:reference/extensions/nsq.adoc[NSQ]  | camel-quarkus-nsq | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send and receive messages from NSQ realtime distributed messaging platform.
+
 |  xref:reference/extensions/ognl.adoc[OGNL]  | camel-quarkus-ognl | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Evaluate an Apache Commons Object Graph Navigation Library (OGNL) expression against the Camel Exchange.
 
diff --git a/extensions-jvm/nsq/deployment/pom.xml b/extensions-jvm/nsq/deployment/pom.xml
new file mode 100644
index 0000000..b5ba85c
--- /dev/null
+++ b/extensions-jvm/nsq/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-nsq-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-nsq-deployment</artifactId>
+    <name>Camel Quarkus :: NSQ :: 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-nsq</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/nsq/deployment/src/main/java/org/apache/camel/quarkus/component/nsq/deployment/NsqProcessor.java b/extensions-jvm/nsq/deployment/src/main/java/org/apache/camel/quarkus/component/nsq/deployment/NsqProcessor.java
new file mode 100644
index 0000000..6ca3923
--- /dev/null
+++ b/extensions-jvm/nsq/deployment/src/main/java/org/apache/camel/quarkus/component/nsq/deployment/NsqProcessor.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.nsq.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 NsqProcessor {
+
+    private static final Logger LOG = Logger.getLogger(NsqProcessor.class);
+    private static final String FEATURE = "camel-nsq";
+
+    @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/nsq/integration-test/pom.xml b/extensions-jvm/nsq/integration-test/pom.xml
new file mode 100644
index 0000000..b6fd683
--- /dev/null
+++ b/extensions-jvm/nsq/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-nsq-integration-test</artifactId>
+    <name>Camel Quarkus :: NSQ :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus NSQ extension</description>
+
+    <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-nsq</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>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-nsq-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </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/nsq/integration-test/src/main/java/org/apache/camel/quarkus/component/nsq/it/NsqResource.java b/extensions-jvm/nsq/integration-test/src/main/java/org/apache/camel/quarkus/component/nsq/it/NsqResource.java
new file mode 100644
index 0000000..536bbc8
--- /dev/null
+++ b/extensions-jvm/nsq/integration-test/src/main/java/org/apache/camel/quarkus/component/nsq/it/NsqResource.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.nsq.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("/nsq")
+@ApplicationScoped
+public class NsqResource {
+
+    private static final Logger LOG = Logger.getLogger(NsqResource.class);
+
+    private static final String COMPONENT_NSQ = "nsq";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/nsq")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentNsq() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_NSQ) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_NSQ);
+        return Response.status(500, COMPONENT_NSQ + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/nsq/integration-test/src/test/java/org/apache/camel/quarkus/component/nsq/it/NsqTest.java b/extensions-jvm/nsq/integration-test/src/test/java/org/apache/camel/quarkus/component/nsq/it/NsqTest.java
new file mode 100644
index 0000000..0d5c893
--- /dev/null
+++ b/extensions-jvm/nsq/integration-test/src/test/java/org/apache/camel/quarkus/component/nsq/it/NsqTest.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.nsq.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class NsqTest {
+
+    @Test
+    public void loadComponentNsq() {
+        /* A simple autogenerated test */
+        RestAssured.get("/nsq/load/component/nsq")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/nsq/pom.xml b/extensions-jvm/nsq/pom.xml
new file mode 100644
index 0000000..d67b042
--- /dev/null
+++ b/extensions-jvm/nsq/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-nsq-parent</artifactId>
+    <name>Camel Quarkus :: NSQ</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/nsq/runtime/pom.xml b/extensions-jvm/nsq/runtime/pom.xml
new file mode 100644
index 0000000..60b9a43
--- /dev/null
+++ b/extensions-jvm/nsq/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-nsq-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-nsq</artifactId>
+    <name>Camel Quarkus :: NSQ :: Runtime</name>
+    <description>Send and receive messages from NSQ realtime distributed messaging platform.</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-nsq</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/nsq/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/nsq/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..85ade51
--- /dev/null
+++ b/extensions-jvm/nsq/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 NSQ"
+description: "Send and receive messages from NSQ realtime distributed messaging platform"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/nsq.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 06074c7..9ec384b 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -89,6 +89,7 @@
         <module>jooq</module>
         <module>jsch</module>
         <module>nitrite</module>
+        <module>nsq</module>
         <module>ognl</module>
         <module>openstack</module>
         <module>optaplanner</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index dd18299..8a3281d 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1245,6 +1245,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-nsq</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-ognl</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3431,6 +3436,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-nsq</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-nsq-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-ognl</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 03/05: PostgresSQL Replication Slot 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 625d6f253bfcd671ce1b7659af51405e66605eb1
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Sep 7 16:01:56 2020 +0200

    PostgresSQL Replication Slot JVM support
---
 catalog/pom.xml                                    |  13 +++
 docs/modules/ROOT/nav.adoc                         |   1 +
 docs/modules/ROOT/pages/reference/components.adoc  |   3 +
 .../reference/extensions/pg-replication-slot.adoc  |  29 ++++++
 docs/modules/ROOT/pages/reference/index.adoc       |   3 +
 .../pg-replication-slot/deployment/pom.xml         |  63 +++++++++++++
 .../deployment/PgReplicationSlotProcessor.java     |  46 ++++++++++
 .../pg-replication-slot/integration-test/pom.xml   | 100 +++++++++++++++++++++
 .../slot/it/PgReplicationSlotResource.java         |  51 +++++++++++
 .../replication/slot/it/PgReplicationSlotTest.java |  34 +++++++
 extensions-jvm/pg-replication-slot/pom.xml         |  40 +++++++++
 extensions-jvm/pg-replication-slot/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, 525 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 52ba6d1..44e8d3b 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -2324,6 +2324,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-pg-replication-slot</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-pgevent</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 0baacf9..87736e9 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -191,6 +191,7 @@
 *** xref:reference/extensions/pdf.adoc[PDF]
 *** xref:reference/extensions/platform-http.adoc[Platform HTTP]
 *** xref:reference/extensions/pgevent.adoc[PostgresSQL Event]
+*** xref:reference/extensions/pg-replication-slot.adoc[PostgresSQL Replication Slot]
 *** xref:reference/extensions/printer.adoc[Printer]
 *** xref:reference/extensions/protobuf.adoc[Protobuf]
 *** xref:reference/extensions/pubnub.adoc[PubNub]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index e803caa..656602f 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -616,6 +616,9 @@ Stable | 0.3.0 | Expose HTTP endpoints using the HTTP server available in the cu
 | xref:reference/extensions/pgevent.adoc[PostgresSQL Event] | [.camel-element-artifact]##camel-quarkus-pgevent## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send and receive PostgreSQL events via LISTEN and NOTIFY commands.
 
+| xref:reference/extensions/pg-replication-slot.adoc[PostgresSQL Replication Slot] | [.camel-element-artifact]##camel-quarkus-pg-replication-slot## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots.
+
 | xref:reference/extensions/printer.adoc[Printer] | [.camel-element-artifact]##camel-quarkus-printer## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send print jobs to printers.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/pg-replication-slot.adoc b/docs/modules/ROOT/pages/reference/extensions/pg-replication-slot.adoc
new file mode 100644
index 0000000..77955dc
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/pg-replication-slot.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[pg-replication-slot]]
+= PostgresSQL Replication Slot
+:page-aliases: extensions/pg-replication-slot.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/pg-replication-slot-component.html[PostgresSQL Replication Slot component], URI syntax: `pg-replication-slot:host:port/database/slot:outputPlugin`
+
+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-pg-replication-slot</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 9947d8d..a802b32 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -551,6 +551,9 @@ Stable | 0.3.0 | Expose HTTP endpoints using the HTTP server available in the cu
 |  xref:reference/extensions/pgevent.adoc[PostgresSQL Event]  | camel-quarkus-pgevent | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send and receive PostgreSQL events via LISTEN and NOTIFY commands.
 
+|  xref:reference/extensions/pg-replication-slot.adoc[PostgresSQL Replication Slot]  | camel-quarkus-pg-replication-slot | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots.
+
 |  xref:reference/extensions/printer.adoc[Printer]  | camel-quarkus-printer | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send print jobs to printers.
 
diff --git a/extensions-jvm/pg-replication-slot/deployment/pom.xml b/extensions-jvm/pg-replication-slot/deployment/pom.xml
new file mode 100644
index 0000000..ef8423b
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/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-pg-replication-slot-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-pg-replication-slot-deployment</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Replication Slot :: 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-pg-replication-slot</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/pg-replication-slot/deployment/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/deployment/PgReplicationSlotProcessor.java b/extensions-jvm/pg-replication-slot/deployment/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/deployment/PgReplicationSlotProcessor.java
new file mode 100644
index 0000000..d2253c0
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/deployment/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/deployment/PgReplicationSlotProcessor.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.pg.replication.slot.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 PgReplicationSlotProcessor {
+
+    private static final Logger LOG = Logger.getLogger(PgReplicationSlotProcessor.class);
+    private static final String FEATURE = "camel-pg-replication-slot";
+
+    @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/pg-replication-slot/integration-test/pom.xml b/extensions-jvm/pg-replication-slot/integration-test/pom.xml
new file mode 100644
index 0000000..74948b1
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-pg-replication-slot-integration-test</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Replication Slot :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus PostgresSQL Replication Slot extension</description>
+
+    <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-pg-replication-slot</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>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-pg-replication-slot-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </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/pg-replication-slot/integration-test/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotResource.java b/extensions-jvm/pg-replication-slot/integration-test/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotResource.java
new file mode 100644
index 0000000..d484c0c
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/integration-test/src/main/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotResource.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.pg.replication.slot.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("/pg-replication-slot")
+@ApplicationScoped
+public class PgReplicationSlotResource {
+
+    private static final Logger LOG = Logger.getLogger(PgReplicationSlotResource.class);
+
+    private static final String COMPONENT_PG_REPLICATION_SLOT = "pg-replication-slot";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/pg-replication-slot")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentPgReplicationSlot() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_PG_REPLICATION_SLOT) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_PG_REPLICATION_SLOT);
+        return Response.status(500, COMPONENT_PG_REPLICATION_SLOT + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/pg-replication-slot/integration-test/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java b/extensions-jvm/pg-replication-slot/integration-test/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java
new file mode 100644
index 0000000..292d87e
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/integration-test/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.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.pg.replication.slot.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class PgReplicationSlotTest {
+
+    @Test
+    public void loadComponentPgReplicationSlot() {
+        /* A simple autogenerated test */
+        RestAssured.get("/pg-replication-slot/load/component/pg-replication-slot")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/pg-replication-slot/pom.xml b/extensions-jvm/pg-replication-slot/pom.xml
new file mode 100644
index 0000000..d84fc6c
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/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-pg-replication-slot-parent</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Replication Slot</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/pg-replication-slot/runtime/pom.xml b/extensions-jvm/pg-replication-slot/runtime/pom.xml
new file mode 100644
index 0000000..ea77e3c
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/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-pg-replication-slot-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-pg-replication-slot</artifactId>
+    <name>Camel Quarkus :: PostgresSQL Replication Slot :: Runtime</name>
+    <description>Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots.</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-pg-replication-slot</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/pg-replication-slot/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/pg-replication-slot/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..9d48377
--- /dev/null
+++ b/extensions-jvm/pg-replication-slot/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 PostgresSQL Replication Slot"
+description: "Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/pg-replication-slot.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index c858365..d22173a 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -91,6 +91,7 @@
         <module>nitrite</module>
         <module>ognl</module>
         <module>openstack</module>
+        <module>pg-replication-slot</module>
         <module>pgevent</module>
         <module>printer</module>
         <module>protobuf</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 4c3c02e..79fb270 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1292,6 +1292,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-pg-replication-slot</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-pgevent</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3491,6 +3496,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-pg-replication-slot</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-pg-replication-slot-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-pgevent</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/05: Printer 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 24b2d7a96af68c8deff98cf79f809bce3ba01676
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Sep 7 15:56:13 2020 +0200

    Printer JVM support
---
 catalog/pom.xml                                    |  13 +++
 docs/modules/ROOT/nav.adoc                         |   1 +
 docs/modules/ROOT/pages/reference/components.adoc  |   3 +
 .../ROOT/pages/reference/extensions/printer.adoc   |  29 ++++++
 docs/modules/ROOT/pages/reference/index.adoc       |   3 +
 extensions-jvm/pom.xml                             |   1 +
 extensions-jvm/printer/deployment/pom.xml          |  63 +++++++++++++
 .../printer/deployment/PrinterProcessor.java       |  46 ++++++++++
 extensions-jvm/printer/integration-test/pom.xml    | 100 +++++++++++++++++++++
 .../component/printer/it/PrinterResource.java      |  51 +++++++++++
 .../quarkus/component/printer/it/PrinterTest.java  |  34 +++++++
 extensions-jvm/printer/pom.xml                     |  40 +++++++++
 extensions-jvm/printer/runtime/pom.xml             |  94 +++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 +++++++
 poms/bom/pom.xml                                   |  15 ++++
 15 files changed, 525 insertions(+)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 688b273..7554189 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -2337,6 +2337,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-printer</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-protobuf</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 2d7f41c..3cadeca 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -190,6 +190,7 @@
 *** xref:reference/extensions/paho.adoc[Paho]
 *** xref:reference/extensions/pdf.adoc[PDF]
 *** xref:reference/extensions/platform-http.adoc[Platform HTTP]
+*** xref:reference/extensions/printer.adoc[Printer]
 *** xref:reference/extensions/protobuf.adoc[Protobuf]
 *** xref:reference/extensions/pubnub.adoc[PubNub]
 *** xref:reference/extensions/pulsar.adoc[Pulsar]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index e190d3c..a6b4744 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -613,6 +613,9 @@ Stable | 0.3.1 | Create, modify or extract content from PDF documents.
 | xref:reference/extensions/platform-http.adoc[Platform HTTP] | [.camel-element-artifact]##camel-quarkus-platform-http## | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Expose HTTP endpoints using the HTTP server available in the current platform.
 
+| xref:reference/extensions/printer.adoc[Printer] | [.camel-element-artifact]##camel-quarkus-printer## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send print jobs to printers.
+
 | xref:reference/extensions/pubnub.adoc[PubNub] | [.camel-element-artifact]##camel-quarkus-pubnub## | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Send and receive messages to/from PubNub data stream network for connected devices.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/printer.adoc b/docs/modules/ROOT/pages/reference/extensions/printer.adoc
new file mode 100644
index 0000000..f2c78ca
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/printer.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[printer]]
+= Printer
+:page-aliases: extensions/printer.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Send print jobs to printers.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/lpr-component.html[Printer component], URI syntax: `lpr:hostname:port/printername`
+
+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-printer</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 0cc95c5..8836bdb 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -548,6 +548,9 @@ Stable | 0.3.1 | Create, modify or extract content from PDF documents.
 |  xref:reference/extensions/platform-http.adoc[Platform HTTP]  | camel-quarkus-platform-http | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Expose HTTP endpoints using the HTTP server available in the current platform.
 
+|  xref:reference/extensions/printer.adoc[Printer]  | camel-quarkus-printer | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send print jobs to printers.
+
 |  xref:reference/extensions/protobuf.adoc[Protobuf]  | camel-quarkus-protobuf | [.camel-element-JVM]##JVM## +
 Preview | 1.0.0 | Serialize and deserialize Java objects using Google's Protocol buffers.
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index c8f5887..45e2eda 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -91,6 +91,7 @@
         <module>nitrite</module>
         <module>ognl</module>
         <module>openstack</module>
+        <module>printer</module>
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
diff --git a/extensions-jvm/printer/deployment/pom.xml b/extensions-jvm/printer/deployment/pom.xml
new file mode 100644
index 0000000..6beba2d
--- /dev/null
+++ b/extensions-jvm/printer/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-printer-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-printer-deployment</artifactId>
+    <name>Camel Quarkus :: Printer :: 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-printer</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/printer/deployment/src/main/java/org/apache/camel/quarkus/component/printer/deployment/PrinterProcessor.java b/extensions-jvm/printer/deployment/src/main/java/org/apache/camel/quarkus/component/printer/deployment/PrinterProcessor.java
new file mode 100644
index 0000000..cd89e4c
--- /dev/null
+++ b/extensions-jvm/printer/deployment/src/main/java/org/apache/camel/quarkus/component/printer/deployment/PrinterProcessor.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.printer.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 PrinterProcessor {
+
+    private static final Logger LOG = Logger.getLogger(PrinterProcessor.class);
+    private static final String FEATURE = "camel-printer";
+
+    @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/printer/integration-test/pom.xml b/extensions-jvm/printer/integration-test/pom.xml
new file mode 100644
index 0000000..73a2d27
--- /dev/null
+++ b/extensions-jvm/printer/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-printer-integration-test</artifactId>
+    <name>Camel Quarkus :: Printer :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Printer extension</description>
+
+    <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-printer</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>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-printer-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </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/printer/integration-test/src/main/java/org/apache/camel/quarkus/component/printer/it/PrinterResource.java b/extensions-jvm/printer/integration-test/src/main/java/org/apache/camel/quarkus/component/printer/it/PrinterResource.java
new file mode 100644
index 0000000..e691c92
--- /dev/null
+++ b/extensions-jvm/printer/integration-test/src/main/java/org/apache/camel/quarkus/component/printer/it/PrinterResource.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.printer.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("/printer")
+@ApplicationScoped
+public class PrinterResource {
+
+    private static final Logger LOG = Logger.getLogger(PrinterResource.class);
+
+    private static final String COMPONENT_LPR = "lpr";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/lpr")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentLpr() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_LPR) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_LPR);
+        return Response.status(500, COMPONENT_LPR + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/printer/integration-test/src/test/java/org/apache/camel/quarkus/component/printer/it/PrinterTest.java b/extensions-jvm/printer/integration-test/src/test/java/org/apache/camel/quarkus/component/printer/it/PrinterTest.java
new file mode 100644
index 0000000..4c3af0f
--- /dev/null
+++ b/extensions-jvm/printer/integration-test/src/test/java/org/apache/camel/quarkus/component/printer/it/PrinterTest.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.printer.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class PrinterTest {
+
+    @Test
+    public void loadComponentLpr() {
+        /* A simple autogenerated test */
+        RestAssured.get("/printer/load/component/lpr")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/printer/pom.xml b/extensions-jvm/printer/pom.xml
new file mode 100644
index 0000000..6bd72c3
--- /dev/null
+++ b/extensions-jvm/printer/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-printer-parent</artifactId>
+    <name>Camel Quarkus :: Printer</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/printer/runtime/pom.xml b/extensions-jvm/printer/runtime/pom.xml
new file mode 100644
index 0000000..cf35da0
--- /dev/null
+++ b/extensions-jvm/printer/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-printer-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-printer</artifactId>
+    <name>Camel Quarkus :: Printer :: Runtime</name>
+    <description>Send print jobs to printers.</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-printer</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/printer/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/printer/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..9eeae01
--- /dev/null
+++ b/extensions-jvm/printer/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 Printer"
+description: "Send print jobs to printers"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/printer.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 995cf44..def17aa 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1297,6 +1297,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-printer</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-protobuf</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3491,6 +3496,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-printer</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-printer-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-protobuf</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>