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

[camel-quarkus] branch master updated (af1b12d -> b8f670c)

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 af1b12d  Fix JAXB dependency alignment issues
     new 324b1b0  ZooKeeper JVM support
     new a2f8b22  ZooKeeper Master JVM support
     new 0589353  Zendesk JVM support
     new 36d7ca1  Yammer JVM support
     new 79cb432  XSLT Saxon JVM support
     new dee1d4d  XMPP JVM support
     new a6ec1d0  XML Security JVM support
     new b8f670c  XJ JVM support

The 8 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                                    |   8 ++
 docs/modules/ROOT/nav.adoc                         |  10 +-
 docs/modules/ROOT/pages/reference/components.adoc  |  27 +++++
 docs/modules/ROOT/pages/reference/dataformats.adoc |   3 +
 .../ROOT/pages/reference/extensions/xj.adoc        |  29 +++++
 .../pages/reference/extensions/xmlsecurity.adoc    |  31 ++++++
 .../ROOT/pages/reference/extensions/xmpp.adoc      |  29 +++++
 .../pages/reference/extensions/xslt-saxon.adoc     |  29 +++++
 .../ROOT/pages/reference/extensions/yammer.adoc    |  29 +++++
 .../ROOT/pages/reference/extensions/zendesk.adoc   |  29 +++++
 .../reference/extensions/zookeeper-master.adoc     |  29 +++++
 .../ROOT/pages/reference/extensions/zookeeper.adoc |  29 +++++
 docs/modules/ROOT/pages/reference/index.adoc       |  24 +++++
 extensions-jvm/pom.xml                             |   8 ++
 extensions-jvm/xj/deployment/pom.xml               |  63 +++++++++++
 .../component/xj/deployment/XjProcessor.java       |  46 ++++++++
 extensions-jvm/xj/integration-test/pom.xml         |  95 ++++++++++++++++
 .../camel/quarkus/component/xj/it/XjResource.java  |  51 +++++++++
 .../camel/quarkus/component/xj/it/XjTest.java      |  34 ++++++
 extensions-jvm/xj/pom.xml                          |  40 +++++++
 extensions-jvm/xj/runtime/pom.xml                  |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/xmlsecurity/deployment/pom.xml      |  63 +++++++++++
 .../deployment/XmlsecurityProcessor.java           |  46 ++++++++
 .../xmlsecurity/integration-test/pom.xml           |  95 ++++++++++++++++
 .../xmlsecurity/it/XmlsecurityResource.java        |  77 +++++++++++++
 .../component/xmlsecurity/it/XmlsecurityTest.java  |  50 +++++++++
 extensions-jvm/xmlsecurity/pom.xml                 |  40 +++++++
 extensions-jvm/xmlsecurity/runtime/pom.xml         |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/xmpp/deployment/pom.xml             |  63 +++++++++++
 .../component/xmpp/deployment/XmppProcessor.java   |  46 ++++++++
 extensions-jvm/xmpp/integration-test/pom.xml       |  95 ++++++++++++++++
 .../quarkus/component/xmpp/it/XmppResource.java    |  51 +++++++++
 .../camel/quarkus/component/xmpp/it/XmppTest.java  |  34 ++++++
 extensions-jvm/xmpp/pom.xml                        |  40 +++++++
 extensions-jvm/xmpp/runtime/pom.xml                |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/xslt-saxon/deployment/pom.xml       |  63 +++++++++++
 .../xslt/saxon/deployment/XsltSaxonProcessor.java  |  46 ++++++++
 extensions-jvm/xslt-saxon/integration-test/pom.xml |  95 ++++++++++++++++
 .../component/xslt/saxon/it/XsltSaxonResource.java |  51 +++++++++
 .../component/xslt/saxon/it/XsltSaxonTest.java     |  34 ++++++
 extensions-jvm/xslt-saxon/pom.xml                  |  40 +++++++
 extensions-jvm/xslt-saxon/runtime/pom.xml          |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/yammer/deployment/pom.xml           |  63 +++++++++++
 .../yammer/deployment/YammerProcessor.java         |  46 ++++++++
 extensions-jvm/yammer/integration-test/pom.xml     |  95 ++++++++++++++++
 .../component/yammer/it/YammerResource.java        |  51 +++++++++
 .../quarkus/component/yammer/it/YammerTest.java    |  34 ++++++
 extensions-jvm/yammer/pom.xml                      |  40 +++++++
 extensions-jvm/yammer/runtime/pom.xml              |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/zendesk/deployment/pom.xml          |  63 +++++++++++
 .../zendesk/deployment/ZendeskProcessor.java       |  46 ++++++++
 extensions-jvm/zendesk/integration-test/pom.xml    |  95 ++++++++++++++++
 .../component/zendesk/it/ZendeskResource.java      |  51 +++++++++
 .../quarkus/component/zendesk/it/ZendeskTest.java  |  34 ++++++
 extensions-jvm/zendesk/pom.xml                     |  40 +++++++
 extensions-jvm/zendesk/runtime/pom.xml             |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/zookeeper-master/deployment/pom.xml |  63 +++++++++++
 .../deployment/ZookeeperMasterProcessor.java       |  46 ++++++++
 .../zookeeper-master/integration-test/pom.xml      |  95 ++++++++++++++++
 .../master/it/ZookeeperMasterResource.java         |  51 +++++++++
 .../zookeeper/master/it/ZookeeperMasterTest.java   |  34 ++++++
 extensions-jvm/zookeeper-master/pom.xml            |  40 +++++++
 extensions-jvm/zookeeper-master/runtime/pom.xml    |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 extensions-jvm/zookeeper/deployment/pom.xml        |  63 +++++++++++
 .../zookeeper/deployment/ZookeeperProcessor.java   |  46 ++++++++
 extensions-jvm/zookeeper/integration-test/pom.xml  |  95 ++++++++++++++++
 .../component/zookeeper/it/ZookeeperResource.java  |  51 +++++++++
 .../component/zookeeper/it/ZookeeperTest.java      |  34 ++++++
 extensions-jvm/zookeeper/pom.xml                   |  40 +++++++
 extensions-jvm/zookeeper/runtime/pom.xml           |  94 ++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 ++++++
 poms/bom/pom.xml                                   | 120 +++++++++++++++++++++
 79 files changed, 4115 insertions(+), 1 deletion(-)
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/xj.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/xmlsecurity.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/xmpp.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/xslt-saxon.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/yammer.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/zendesk.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/zookeeper-master.adoc
 create mode 100644 docs/modules/ROOT/pages/reference/extensions/zookeeper.adoc
 create mode 100644 extensions-jvm/xj/deployment/pom.xml
 create mode 100644 extensions-jvm/xj/deployment/src/main/java/org/apache/camel/quarkus/component/xj/deployment/XjProcessor.java
 create mode 100644 extensions-jvm/xj/integration-test/pom.xml
 create mode 100644 extensions-jvm/xj/integration-test/src/main/java/org/apache/camel/quarkus/component/xj/it/XjResource.java
 create mode 100644 extensions-jvm/xj/integration-test/src/test/java/org/apache/camel/quarkus/component/xj/it/XjTest.java
 create mode 100644 extensions-jvm/xj/pom.xml
 create mode 100644 extensions-jvm/xj/runtime/pom.xml
 create mode 100644 extensions-jvm/xj/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/xmlsecurity/deployment/pom.xml
 create mode 100644 extensions-jvm/xmlsecurity/deployment/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/deployment/XmlsecurityProcessor.java
 create mode 100644 extensions-jvm/xmlsecurity/integration-test/pom.xml
 create mode 100644 extensions-jvm/xmlsecurity/integration-test/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityResource.java
 create mode 100644 extensions-jvm/xmlsecurity/integration-test/src/test/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityTest.java
 create mode 100644 extensions-jvm/xmlsecurity/pom.xml
 create mode 100644 extensions-jvm/xmlsecurity/runtime/pom.xml
 create mode 100644 extensions-jvm/xmlsecurity/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/xmpp/deployment/pom.xml
 create mode 100644 extensions-jvm/xmpp/deployment/src/main/java/org/apache/camel/quarkus/component/xmpp/deployment/XmppProcessor.java
 create mode 100644 extensions-jvm/xmpp/integration-test/pom.xml
 create mode 100644 extensions-jvm/xmpp/integration-test/src/main/java/org/apache/camel/quarkus/component/xmpp/it/XmppResource.java
 create mode 100644 extensions-jvm/xmpp/integration-test/src/test/java/org/apache/camel/quarkus/component/xmpp/it/XmppTest.java
 create mode 100644 extensions-jvm/xmpp/pom.xml
 create mode 100644 extensions-jvm/xmpp/runtime/pom.xml
 create mode 100644 extensions-jvm/xmpp/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/xslt-saxon/deployment/pom.xml
 create mode 100644 extensions-jvm/xslt-saxon/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/deployment/XsltSaxonProcessor.java
 create mode 100644 extensions-jvm/xslt-saxon/integration-test/pom.xml
 create mode 100644 extensions-jvm/xslt-saxon/integration-test/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonResource.java
 create mode 100644 extensions-jvm/xslt-saxon/integration-test/src/test/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonTest.java
 create mode 100644 extensions-jvm/xslt-saxon/pom.xml
 create mode 100644 extensions-jvm/xslt-saxon/runtime/pom.xml
 create mode 100644 extensions-jvm/xslt-saxon/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/yammer/deployment/pom.xml
 create mode 100644 extensions-jvm/yammer/deployment/src/main/java/org/apache/camel/quarkus/component/yammer/deployment/YammerProcessor.java
 create mode 100644 extensions-jvm/yammer/integration-test/pom.xml
 create mode 100644 extensions-jvm/yammer/integration-test/src/main/java/org/apache/camel/quarkus/component/yammer/it/YammerResource.java
 create mode 100644 extensions-jvm/yammer/integration-test/src/test/java/org/apache/camel/quarkus/component/yammer/it/YammerTest.java
 create mode 100644 extensions-jvm/yammer/pom.xml
 create mode 100644 extensions-jvm/yammer/runtime/pom.xml
 create mode 100644 extensions-jvm/yammer/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/zendesk/deployment/pom.xml
 create mode 100644 extensions-jvm/zendesk/deployment/src/main/java/org/apache/camel/quarkus/component/zendesk/deployment/ZendeskProcessor.java
 create mode 100644 extensions-jvm/zendesk/integration-test/pom.xml
 create mode 100644 extensions-jvm/zendesk/integration-test/src/main/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskResource.java
 create mode 100644 extensions-jvm/zendesk/integration-test/src/test/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskTest.java
 create mode 100644 extensions-jvm/zendesk/pom.xml
 create mode 100644 extensions-jvm/zendesk/runtime/pom.xml
 create mode 100644 extensions-jvm/zendesk/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/zookeeper-master/deployment/pom.xml
 create mode 100644 extensions-jvm/zookeeper-master/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/deployment/ZookeeperMasterProcessor.java
 create mode 100644 extensions-jvm/zookeeper-master/integration-test/pom.xml
 create mode 100644 extensions-jvm/zookeeper-master/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterResource.java
 create mode 100644 extensions-jvm/zookeeper-master/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterTest.java
 create mode 100644 extensions-jvm/zookeeper-master/pom.xml
 create mode 100644 extensions-jvm/zookeeper-master/runtime/pom.xml
 create mode 100644 extensions-jvm/zookeeper-master/runtime/src/main/resources/META-INF/quarkus-extension.yaml
 create mode 100644 extensions-jvm/zookeeper/deployment/pom.xml
 create mode 100644 extensions-jvm/zookeeper/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/deployment/ZookeeperProcessor.java
 create mode 100644 extensions-jvm/zookeeper/integration-test/pom.xml
 create mode 100644 extensions-jvm/zookeeper/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperResource.java
 create mode 100644 extensions-jvm/zookeeper/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperTest.java
 create mode 100644 extensions-jvm/zookeeper/pom.xml
 create mode 100644 extensions-jvm/zookeeper/runtime/pom.xml
 create mode 100644 extensions-jvm/zookeeper/runtime/src/main/resources/META-INF/quarkus-extension.yaml


[camel-quarkus] 05/08: XSLT Saxon 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 79cb4323b5db3619309bbe02d91f2c3ee4e3a887
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:27:30 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 98e3beb..7ff236c 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -258,6 +258,7 @@
             camel-quarkus-xml-jaxp
             camel-quarkus-xpath
             camel-quarkus-xslt
+            camel-quarkus-xslt-saxon
             camel-quarkus-xstream
             camel-quarkus-yammer
             camel-quarkus-zendesk
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 2b33cb5..4887d9c 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -209,6 +209,7 @@
 *** xref:reference/extensions/xml-jaxp.adoc[XML Tokenize]
 *** xref:reference/extensions/xpath.adoc[XPath]
 *** xref:reference/extensions/xslt.adoc[XSLT]
+*** xref:reference/extensions/xslt-saxon.adoc[XSLT Saxon]
 *** xref:reference/extensions/xstream.adoc[XStream]
 *** xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]
 *** xref:reference/extensions/yammer.adoc[Yammer]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 20ff9a5..ddde153 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -604,6 +604,9 @@ Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 | xref:reference/extensions/xslt.adoc[XSLT] | [.camel-element-artifact]##camel-quarkus-xslt## | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Transforms XML payload using an XSLT template.
 
+| xref:reference/extensions/xslt-saxon.adoc[XSLT Saxon] | [.camel-element-artifact]##camel-quarkus-xslt-saxon## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Transform XML payloads using an XSLT template using Saxon.
+
 | xref:reference/extensions/yammer.adoc[Yammer] | [.camel-element-artifact]##camel-quarkus-yammer## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Interact with the Yammer enterprise social network.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/xslt-saxon.adoc b/docs/modules/ROOT/pages/reference/extensions/xslt-saxon.adoc
new file mode 100644
index 0000000..a8d44cc
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/xslt-saxon.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[xslt-saxon]]
+= XSLT Saxon
+:page-aliases: extensions/xslt-saxon.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Transform XML payloads using an XSLT template using Saxon.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/xslt-saxon-component.html[XSLT Saxon component], URI syntax: `xslt-saxon:resourceUri`
+
+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-xslt-saxon</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 98230bc..8013523 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -605,6 +605,9 @@ Stable | 1.0.0 | Evaluate an XPath expression against an XML payload.
 |  xref:reference/extensions/xslt.adoc[XSLT]  | camel-quarkus-xslt | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Transforms XML payload using an XSLT template.
 
+|  xref:reference/extensions/xslt-saxon.adoc[XSLT Saxon]  | camel-quarkus-xslt-saxon | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Transform XML payloads using an XSLT template using Saxon.
+
 |  xref:reference/extensions/xstream.adoc[XStream]  | camel-quarkus-xstream | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Marshal and unmarshal POJOs to/from XML or JSON using XStream library.
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index d8e219c..6561426 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>xslt-saxon</module>
         <module>yammer</module>
         <module>zendesk</module>
         <module>zookeeper</module>
diff --git a/extensions-jvm/xslt-saxon/deployment/pom.xml b/extensions-jvm/xslt-saxon/deployment/pom.xml
new file mode 100644
index 0000000..df2e448
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/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-xslt-saxon-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xslt-saxon-deployment</artifactId>
+    <name>Camel Quarkus :: XSLT Saxon :: 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-xslt-saxon</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/xslt-saxon/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/deployment/XsltSaxonProcessor.java b/extensions-jvm/xslt-saxon/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/deployment/XsltSaxonProcessor.java
new file mode 100644
index 0000000..26a253d
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/deployment/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/deployment/XsltSaxonProcessor.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.xslt.saxon.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 XsltSaxonProcessor {
+
+    private static final Logger LOG = Logger.getLogger(XsltSaxonProcessor.class);
+    private static final String FEATURE = "camel-xslt-saxon";
+
+    @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/xslt-saxon/integration-test/pom.xml b/extensions-jvm/xslt-saxon/integration-test/pom.xml
new file mode 100644
index 0000000..633463e
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xslt-saxon-integration-test</artifactId>
+    <name>Camel Quarkus :: XSLT Saxon :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus XSLT Saxon extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-xslt-saxon-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-xslt-saxon</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/xslt-saxon/integration-test/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonResource.java b/extensions-jvm/xslt-saxon/integration-test/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonResource.java
new file mode 100644
index 0000000..15f0d65
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/integration-test/src/main/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonResource.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.xslt.saxon.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("/xslt-saxon")
+@ApplicationScoped
+public class XsltSaxonResource {
+
+    private static final Logger LOG = Logger.getLogger(XsltSaxonResource.class);
+
+    private static final String COMPONENT_XSLT_SAXON = "xslt-saxon";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/xslt-saxon")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentXsltSaxon() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_XSLT_SAXON) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_XSLT_SAXON);
+        return Response.status(500, COMPONENT_XSLT_SAXON + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/xslt-saxon/integration-test/src/test/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonTest.java b/extensions-jvm/xslt-saxon/integration-test/src/test/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonTest.java
new file mode 100644
index 0000000..0443ef2
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/integration-test/src/test/java/org/apache/camel/quarkus/component/xslt/saxon/it/XsltSaxonTest.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.xslt.saxon.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class XsltSaxonTest {
+
+    @Test
+    public void loadComponentXsltSaxon() {
+        /* A simple autogenerated test */
+        RestAssured.get("/xslt-saxon/load/component/xslt-saxon")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/xslt-saxon/pom.xml b/extensions-jvm/xslt-saxon/pom.xml
new file mode 100644
index 0000000..2877259
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/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-xslt-saxon-parent</artifactId>
+    <name>Camel Quarkus :: XSLT Saxon</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/xslt-saxon/runtime/pom.xml b/extensions-jvm/xslt-saxon/runtime/pom.xml
new file mode 100644
index 0000000..28468d6
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/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-xslt-saxon-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xslt-saxon</artifactId>
+    <name>Camel Quarkus :: XSLT Saxon :: Runtime</name>
+    <description>Transform XML payloads using an XSLT template using Saxon.</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-xslt-saxon</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/xslt-saxon/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/xslt-saxon/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..31cb930
--- /dev/null
+++ b/extensions-jvm/xslt-saxon/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 XSLT Saxon"
+description: "Transform XML payloads using an XSLT template using Saxon"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/xslt-saxon.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index c6e0e6c..7ecee20 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1403,6 +1403,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-xslt-saxon</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xstream</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3595,6 +3600,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xslt-saxon</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xslt-saxon-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-xstream</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 04/08: Yammer 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 36d7ca1631bc109b0eddbf5f0ee1c381c39c2b90
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:25:45 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index e3073ed..98e3beb 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -259,6 +259,7 @@
             camel-quarkus-xpath
             camel-quarkus-xslt
             camel-quarkus-xstream
+            camel-quarkus-yammer
             camel-quarkus-zendesk
             camel-quarkus-zip-deflater
             camel-quarkus-zipfile
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 63509ce..2b33cb5 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -211,6 +211,7 @@
 *** xref:reference/extensions/xslt.adoc[XSLT]
 *** xref:reference/extensions/xstream.adoc[XStream]
 *** xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]
+*** xref:reference/extensions/yammer.adoc[Yammer]
 *** xref:reference/extensions/zendesk.adoc[Zendesk]
 *** xref:reference/extensions/zip-deflater.adoc[Zip Deflate Compression]
 *** xref:reference/extensions/zipfile.adoc[Zip File]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 779829e..20ff9a5 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -604,6 +604,9 @@ Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 | xref:reference/extensions/xslt.adoc[XSLT] | [.camel-element-artifact]##camel-quarkus-xslt## | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Transforms XML payload using an XSLT template.
 
+| xref:reference/extensions/yammer.adoc[Yammer] | [.camel-element-artifact]##camel-quarkus-yammer## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Interact with the Yammer enterprise social network.
+
 | xref:reference/extensions/zendesk.adoc[Zendesk] | [.camel-element-artifact]##camel-quarkus-zendesk## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage Zendesk tickets, users, organizations, etc.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/yammer.adoc b/docs/modules/ROOT/pages/reference/extensions/yammer.adoc
new file mode 100644
index 0000000..c7ed56c
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/yammer.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[yammer]]
+= Yammer
+:page-aliases: extensions/yammer.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Interact with the Yammer enterprise social network.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/yammer-component.html[Yammer component], URI syntax: `yammer:function`
+
+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-yammer</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 b81b41e..98230bc 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -611,6 +611,9 @@ Stable | 1.0.0 | Marshal and unmarshal POJOs to/from XML or JSON using XStream l
 |  xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]  | camel-quarkus-snakeyaml | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Marshal and unmarshal Java objects to and from YAML.
 
+|  xref:reference/extensions/yammer.adoc[Yammer]  | camel-quarkus-yammer | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Interact with the Yammer enterprise social network.
+
 |  xref:reference/extensions/zendesk.adoc[Zendesk]  | camel-quarkus-zendesk | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage Zendesk tickets, users, organizations, etc.
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 95981fb..d8e219c 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>yammer</module>
         <module>zendesk</module>
         <module>zookeeper</module>
         <module>zookeeper-master</module>
diff --git a/extensions-jvm/yammer/deployment/pom.xml b/extensions-jvm/yammer/deployment/pom.xml
new file mode 100644
index 0000000..3bbe276
--- /dev/null
+++ b/extensions-jvm/yammer/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-yammer-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-yammer-deployment</artifactId>
+    <name>Camel Quarkus :: Yammer :: 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-yammer</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/yammer/deployment/src/main/java/org/apache/camel/quarkus/component/yammer/deployment/YammerProcessor.java b/extensions-jvm/yammer/deployment/src/main/java/org/apache/camel/quarkus/component/yammer/deployment/YammerProcessor.java
new file mode 100644
index 0000000..9df5cd8
--- /dev/null
+++ b/extensions-jvm/yammer/deployment/src/main/java/org/apache/camel/quarkus/component/yammer/deployment/YammerProcessor.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.yammer.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 YammerProcessor {
+
+    private static final Logger LOG = Logger.getLogger(YammerProcessor.class);
+    private static final String FEATURE = "camel-yammer";
+
+    @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/yammer/integration-test/pom.xml b/extensions-jvm/yammer/integration-test/pom.xml
new file mode 100644
index 0000000..ad3a775
--- /dev/null
+++ b/extensions-jvm/yammer/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-yammer-integration-test</artifactId>
+    <name>Camel Quarkus :: Yammer :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Yammer extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-yammer-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-yammer</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/yammer/integration-test/src/main/java/org/apache/camel/quarkus/component/yammer/it/YammerResource.java b/extensions-jvm/yammer/integration-test/src/main/java/org/apache/camel/quarkus/component/yammer/it/YammerResource.java
new file mode 100644
index 0000000..6e519c8
--- /dev/null
+++ b/extensions-jvm/yammer/integration-test/src/main/java/org/apache/camel/quarkus/component/yammer/it/YammerResource.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.yammer.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("/yammer")
+@ApplicationScoped
+public class YammerResource {
+
+    private static final Logger LOG = Logger.getLogger(YammerResource.class);
+
+    private static final String COMPONENT_YAMMER = "yammer";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/yammer")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentYammer() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_YAMMER) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_YAMMER);
+        return Response.status(500, COMPONENT_YAMMER + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/yammer/integration-test/src/test/java/org/apache/camel/quarkus/component/yammer/it/YammerTest.java b/extensions-jvm/yammer/integration-test/src/test/java/org/apache/camel/quarkus/component/yammer/it/YammerTest.java
new file mode 100644
index 0000000..53a7999
--- /dev/null
+++ b/extensions-jvm/yammer/integration-test/src/test/java/org/apache/camel/quarkus/component/yammer/it/YammerTest.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.yammer.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class YammerTest {
+
+    @Test
+    public void loadComponentYammer() {
+        /* A simple autogenerated test */
+        RestAssured.get("/yammer/load/component/yammer")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/yammer/pom.xml b/extensions-jvm/yammer/pom.xml
new file mode 100644
index 0000000..e5048e1
--- /dev/null
+++ b/extensions-jvm/yammer/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-yammer-parent</artifactId>
+    <name>Camel Quarkus :: Yammer</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/yammer/runtime/pom.xml b/extensions-jvm/yammer/runtime/pom.xml
new file mode 100644
index 0000000..9d0e441
--- /dev/null
+++ b/extensions-jvm/yammer/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-yammer-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-yammer</artifactId>
+    <name>Camel Quarkus :: Yammer :: Runtime</name>
+    <description>Interact with the Yammer enterprise social network.</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-yammer</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/yammer/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/yammer/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..7fba2d5
--- /dev/null
+++ b/extensions-jvm/yammer/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 Yammer"
+description: "Interact with the Yammer enterprise social network"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/yammer.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 8542216..c6e0e6c 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1408,6 +1408,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-yammer</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-zendesk</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3605,6 +3610,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-yammer</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-yammer-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-zendesk</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 07/08: XML Security 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 a6ec1d0f38306ed3f10552c0814284c71d515616
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:32:59 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index b622359..43a5b4a 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -256,6 +256,7 @@
             camel-quarkus-xml-io
             camel-quarkus-xml-jaxb
             camel-quarkus-xml-jaxp
+            camel-quarkus-xmlsecurity
             camel-quarkus-xmpp
             camel-quarkus-xpath
             camel-quarkus-xslt
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 2e3f1c6..c79e44a 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -206,6 +206,7 @@
 *** xref:reference/extensions/vm.adoc[VM]
 *** xref:reference/extensions/xml-io.adoc[XML IO]
 *** xref:reference/extensions/xml-jaxb.adoc[XML JAXB]
+*** xref:reference/extensions/xmlsecurity.adoc[XML Security Sign]
 *** xref:reference/extensions/xml-jaxp.adoc[XML Tokenize]
 *** xref:reference/extensions/xmpp.adoc[XMPP]
 *** xref:reference/extensions/xpath.adoc[XPath]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index ae2fa32..e4cf730 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -601,6 +601,12 @@ Stable | 1.0.0 | Send and receive messages to/from Vert.x Event Bus.
 | xref:reference/extensions/vm.adoc[VM] | [.camel-element-artifact]##camel-quarkus-vm## | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 
+| xref:reference/extensions/xmlsecurity.adoc[XML Security Sign] | [.camel-element-artifact]##camel-quarkus-xmlsecurity## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Sign XML payloads using the XML signature specification.
+
+| xref:reference/extensions/xmlsecurity.adoc[XML Security Verify] | [.camel-element-artifact]##camel-quarkus-xmlsecurity## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Verify XML payloads using the XML signature specification.
+
 | xref:reference/extensions/xmpp.adoc[XMPP] | [.camel-element-artifact]##camel-quarkus-xmpp## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Send and receive messages to/from an XMPP chat server.
 
diff --git a/docs/modules/ROOT/pages/reference/dataformats.adoc b/docs/modules/ROOT/pages/reference/dataformats.adoc
index 274cc05..9c23018 100644
--- a/docs/modules/ROOT/pages/reference/dataformats.adoc
+++ b/docs/modules/ROOT/pages/reference/dataformats.adoc
@@ -88,6 +88,9 @@ Stable | 0.3.0 | Archive files into tarballs or extract files from tarballs.
 | xref:reference/extensions/tagsoup.adoc[TidyMarkup] | [.camel-element-artifact]##camel-quarkus-tagsoup## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Parse (potentially invalid) HTML into valid HTML or DOM.
 
+| xref:reference/extensions/xmlsecurity.adoc[XML Security] | [.camel-element-artifact]##camel-quarkus-xmlsecurity## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Encrypt and decrypt XML payloads using Apache Santuario.
+
 | xref:reference/extensions/xstream.adoc[XStream] | [.camel-element-artifact]##camel-quarkus-xstream## | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Marshal and unmarshal POJOs to/from XML using XStream library.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/xmlsecurity.adoc b/docs/modules/ROOT/pages/reference/extensions/xmlsecurity.adoc
new file mode 100644
index 0000000..c4dc700
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/xmlsecurity.adoc
@@ -0,0 +1,31 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[xmlsecurity]]
+= XML Security Sign
+:page-aliases: extensions/xmlsecurity.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Sign XML payloads using the XML signature specification.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/dataformats/secureXML-dataformat.html[XML Security data format]
+* https://camel.apache.org/components/latest/xmlsecurity-sign-component.html[XML Security Sign component], URI syntax: `xmlsecurity-sign:name`
+* https://camel.apache.org/components/latest/xmlsecurity-verify-component.html[XML Security Verify component], URI syntax: `xmlsecurity-verify:name`
+
+Please refer to the above links for usage and configuration details.
+
+== Maven coordinates
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel.quarkus</groupId>
+    <artifactId>camel-quarkus-xmlsecurity</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 e9ea3b1..95bbc02 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -596,6 +596,9 @@ Stable | 1.0.0 | An XML stack for parsing XML route definitions. A fast an light
 |  xref:reference/extensions/xml-jaxb.adoc[XML JAXB]  | camel-quarkus-xml-jaxb | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | An XML stack for parsing XML route definitions. A legacy alternative to the fast an light weight camel-quarkus-xml-io
 
+|  xref:reference/extensions/xmlsecurity.adoc[XML Security Sign]  | camel-quarkus-xmlsecurity | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Sign XML payloads using the XML signature specification.
+
 |  xref:reference/extensions/xml-jaxp.adoc[XML Tokenize]  | camel-quarkus-xml-jaxp | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Tokenize XML payloads using the specified path expression.
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 56bbd8c..cba4a9f 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>xmlsecurity</module>
         <module>xmpp</module>
         <module>xslt-saxon</module>
         <module>yammer</module>
diff --git a/extensions-jvm/xmlsecurity/deployment/pom.xml b/extensions-jvm/xmlsecurity/deployment/pom.xml
new file mode 100644
index 0000000..0cfd582
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/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-xmlsecurity-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xmlsecurity-deployment</artifactId>
+    <name>Camel Quarkus :: XML Security Sign :: 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-xmlsecurity</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/xmlsecurity/deployment/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/deployment/XmlsecurityProcessor.java b/extensions-jvm/xmlsecurity/deployment/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/deployment/XmlsecurityProcessor.java
new file mode 100644
index 0000000..a72ab1b
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/deployment/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/deployment/XmlsecurityProcessor.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.xmlsecurity.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 XmlsecurityProcessor {
+
+    private static final Logger LOG = Logger.getLogger(XmlsecurityProcessor.class);
+    private static final String FEATURE = "camel-xmlsecurity";
+
+    @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/xmlsecurity/integration-test/pom.xml b/extensions-jvm/xmlsecurity/integration-test/pom.xml
new file mode 100644
index 0000000..acbdb9f
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xmlsecurity-integration-test</artifactId>
+    <name>Camel Quarkus :: XML Security Sign :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus XML Security Sign extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-xmlsecurity-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-xmlsecurity</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/xmlsecurity/integration-test/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityResource.java b/extensions-jvm/xmlsecurity/integration-test/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityResource.java
new file mode 100644
index 0000000..fc20975
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/integration-test/src/main/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityResource.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.xmlsecurity.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("/xmlsecurity")
+@ApplicationScoped
+public class XmlsecurityResource {
+
+    private static final Logger LOG = Logger.getLogger(XmlsecurityResource.class);
+
+    private static final String COMPONENT_XMLSECURITY_SIGN = "xmlsecurity-sign";
+    private static final String COMPONENT_XMLSECURITY_VERIFY = "xmlsecurity-verify";
+    private static final String DATAFORMAT_SECUREXML = "secureXML";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/xmlsecurity-sign")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentXmlsecuritySign() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_XMLSECURITY_SIGN) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_XMLSECURITY_SIGN);
+        return Response.status(500, COMPONENT_XMLSECURITY_SIGN + " could not be loaded from the Camel context").build();
+    }
+
+    @Path("/load/component/xmlsecurity-verify")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentXmlsecurityVerify() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_XMLSECURITY_VERIFY) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_XMLSECURITY_VERIFY);
+        return Response.status(500, COMPONENT_XMLSECURITY_VERIFY + " could not be loaded from the Camel context").build();
+    }
+
+    @Path("/load/dataformat/securexml")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadDataformatSecureXML() throws Exception {
+        /* This is an autogenerated test */
+        if (context.resolveDataFormat(DATAFORMAT_SECUREXML) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", DATAFORMAT_SECUREXML);
+        return Response.status(500, DATAFORMAT_SECUREXML + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/xmlsecurity/integration-test/src/test/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityTest.java b/extensions-jvm/xmlsecurity/integration-test/src/test/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityTest.java
new file mode 100644
index 0000000..13e7f5c
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/integration-test/src/test/java/org/apache/camel/quarkus/component/xmlsecurity/it/XmlsecurityTest.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.xmlsecurity.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class XmlsecurityTest {
+
+    @Test
+    public void loadComponentXmlsecuritySign() {
+        /* A simple autogenerated test */
+        RestAssured.get("/xmlsecurity/load/component/xmlsecurity-sign")
+                .then()
+                .statusCode(200);
+    }
+
+    @Test
+    public void loadComponentXmlsecurityVerify() {
+        /* A simple autogenerated test */
+        RestAssured.get("/xmlsecurity/load/component/xmlsecurity-verify")
+                .then()
+                .statusCode(200);
+    }
+
+    @Test
+    public void loadDataformatSecureXML() {
+        /* A simple autogenerated test */
+        RestAssured.get("/xmlsecurity/load/dataformat/securexml")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/xmlsecurity/pom.xml b/extensions-jvm/xmlsecurity/pom.xml
new file mode 100644
index 0000000..3cb858a
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/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-xmlsecurity-parent</artifactId>
+    <name>Camel Quarkus :: XML Security Sign</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/xmlsecurity/runtime/pom.xml b/extensions-jvm/xmlsecurity/runtime/pom.xml
new file mode 100644
index 0000000..dc60c69
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/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-xmlsecurity-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xmlsecurity</artifactId>
+    <name>Camel Quarkus :: XML Security Sign :: Runtime</name>
+    <description>Sign XML payloads using the XML signature specification.</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-xmlsecurity</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/xmlsecurity/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/xmlsecurity/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..9fd2015
--- /dev/null
+++ b/extensions-jvm/xmlsecurity/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 XML Security Sign"
+description: "Sign XML payloads using the XML signature specification"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/xmlsecurity.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 2ecc183..ca356ed 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1393,6 +1393,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-xmlsecurity</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xmpp</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3585,6 +3590,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xmlsecurity</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xmlsecurity-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-xmpp</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 02/08: ZooKeeper Master 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 a2f8b22db1d6aac0357d6970070419cb163d8af6
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:21:36 2020 +0200

    ZooKeeper Master JVM support
---
 catalog/pom.xml                                    |  1 +
 docs/modules/ROOT/nav.adoc                         |  3 +-
 docs/modules/ROOT/pages/reference/components.adoc  |  3 +
 .../reference/extensions/zookeeper-master.adoc     | 29 +++++++
 docs/modules/ROOT/pages/reference/index.adoc       |  3 +
 extensions-jvm/pom.xml                             |  1 +
 extensions-jvm/zookeeper-master/deployment/pom.xml | 63 ++++++++++++++
 .../deployment/ZookeeperMasterProcessor.java       | 46 +++++++++++
 .../zookeeper-master/integration-test/pom.xml      | 95 ++++++++++++++++++++++
 .../master/it/ZookeeperMasterResource.java         | 51 ++++++++++++
 .../zookeeper/master/it/ZookeeperMasterTest.java   | 34 ++++++++
 extensions-jvm/zookeeper-master/pom.xml            | 40 +++++++++
 extensions-jvm/zookeeper-master/runtime/pom.xml    | 94 +++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 32 ++++++++
 poms/bom/pom.xml                                   | 15 ++++
 15 files changed, 509 insertions(+), 1 deletion(-)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 070a3ee..a16c364 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -262,6 +262,7 @@
             camel-quarkus-zip-deflater
             camel-quarkus-zipfile
             camel-quarkus-zookeeper
+            camel-quarkus-zookeeper-master
         </mvnd.builder.rule>
     </properties>
 
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index c33fc99..2173f63 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -213,7 +213,8 @@
 *** xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]
 *** xref:reference/extensions/zip-deflater.adoc[Zip Deflate Compression]
 *** xref:reference/extensions/zipfile.adoc[Zip File]
-*** xref:reference/extensions/zookeeper.adoc[ZooKeeper]// extensions: END
+*** xref:reference/extensions/zookeeper.adoc[ZooKeeper]
+*** xref:reference/extensions/zookeeper-master.adoc[ZooKeeper Master]// extensions: END
 ** xref:reference/components.adoc[Components]
 ** xref:reference/dataformats.adoc[Data formats]
 ** xref:reference/languages.adoc[Languages]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 8a9ed74..ead875e 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -606,6 +606,9 @@ Stable | 0.4.0 | Transforms XML payload using an XSLT template.
 
 | xref:reference/extensions/zookeeper.adoc[ZooKeeper] | [.camel-element-artifact]##camel-quarkus-zookeeper## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage ZooKeeper clusters.
+
+| xref:reference/extensions/zookeeper-master.adoc[ZooKeeper Master] | [.camel-element-artifact]##camel-quarkus-zookeeper-master## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies.
 |===
 
 ++++
diff --git a/docs/modules/ROOT/pages/reference/extensions/zookeeper-master.adoc b/docs/modules/ROOT/pages/reference/extensions/zookeeper-master.adoc
new file mode 100644
index 0000000..378e62f
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/zookeeper-master.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[zookeeper-master]]
+= ZooKeeper Master
+:page-aliases: extensions/zookeeper-master.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/zookeeper-master-component.html[ZooKeeper Master component], URI syntax: `zookeeper-master:groupName:consumerEndpointUri`
+
+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-zookeeper-master</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 5567094..801e050 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -619,6 +619,9 @@ Stable | 0.2.0 | Compression and decompress streams using java.util.zip.ZipStrea
 
 |  xref:reference/extensions/zookeeper.adoc[ZooKeeper]  | camel-quarkus-zookeeper | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage ZooKeeper clusters.
+
+|  xref:reference/extensions/zookeeper-master.adoc[ZooKeeper Master]  | camel-quarkus-zookeeper-master | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies.
 |===
 
 ++++
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 3cad5e9..55e6560 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -79,6 +79,7 @@
         <module>pubnub</module>
         <module>pulsar</module>
         <module>zookeeper</module>
+        <module>zookeeper-master</module>
     </modules>
 
 </project>
diff --git a/extensions-jvm/zookeeper-master/deployment/pom.xml b/extensions-jvm/zookeeper-master/deployment/pom.xml
new file mode 100644
index 0000000..35e5180
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/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-zookeeper-master-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zookeeper-master-deployment</artifactId>
+    <name>Camel Quarkus :: ZooKeeper Master :: 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-zookeeper-master</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/zookeeper-master/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/deployment/ZookeeperMasterProcessor.java b/extensions-jvm/zookeeper-master/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/deployment/ZookeeperMasterProcessor.java
new file mode 100644
index 0000000..ab328ba
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/deployment/ZookeeperMasterProcessor.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.zookeeper.master.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 ZookeeperMasterProcessor {
+
+    private static final Logger LOG = Logger.getLogger(ZookeeperMasterProcessor.class);
+    private static final String FEATURE = "camel-zookeeper-master";
+
+    @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/zookeeper-master/integration-test/pom.xml b/extensions-jvm/zookeeper-master/integration-test/pom.xml
new file mode 100644
index 0000000..746f852
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zookeeper-master-integration-test</artifactId>
+    <name>Camel Quarkus :: ZooKeeper Master :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus ZooKeeper Master extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-zookeeper-master-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-zookeeper-master</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/zookeeper-master/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterResource.java b/extensions-jvm/zookeeper-master/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterResource.java
new file mode 100644
index 0000000..612f5c7
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterResource.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.zookeeper.master.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("/zookeeper-master")
+@ApplicationScoped
+public class ZookeeperMasterResource {
+
+    private static final Logger LOG = Logger.getLogger(ZookeeperMasterResource.class);
+
+    private static final String COMPONENT_ZOOKEEPER_MASTER = "zookeeper-master";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/zookeeper-master")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentZookeeperMaster() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_ZOOKEEPER_MASTER) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_ZOOKEEPER_MASTER);
+        return Response.status(500, COMPONENT_ZOOKEEPER_MASTER + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/zookeeper-master/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterTest.java b/extensions-jvm/zookeeper-master/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterTest.java
new file mode 100644
index 0000000..6105561
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/master/it/ZookeeperMasterTest.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.zookeeper.master.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class ZookeeperMasterTest {
+
+    @Test
+    public void loadComponentZookeeperMaster() {
+        /* A simple autogenerated test */
+        RestAssured.get("/zookeeper-master/load/component/zookeeper-master")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/zookeeper-master/pom.xml b/extensions-jvm/zookeeper-master/pom.xml
new file mode 100644
index 0000000..ebca67d
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/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-zookeeper-master-parent</artifactId>
+    <name>Camel Quarkus :: ZooKeeper Master</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/zookeeper-master/runtime/pom.xml b/extensions-jvm/zookeeper-master/runtime/pom.xml
new file mode 100644
index 0000000..0063d2f
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/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-zookeeper-master-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zookeeper-master</artifactId>
+    <name>Camel Quarkus :: ZooKeeper Master :: Runtime</name>
+    <description>Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies.</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-zookeeper-master</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/zookeeper-master/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/zookeeper-master/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..28afe5e
--- /dev/null
+++ b/extensions-jvm/zookeeper-master/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 ZooKeeper Master"
+description: "Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/zookeeper-master.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 17dda91..71566af 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1423,6 +1423,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-zookeeper-master</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>spi-annotations</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3623,6 +3628,16 @@
                 <artifactId>camel-quarkus-zookeeper-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-zookeeper-master</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-zookeeper-master-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
 
             <!--$ Other third party dependencies $-->
             <dependency>


[camel-quarkus] 08/08: XJ 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 b8f670cb2b2adb4b4589d7646387a330fc71ba45
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:34:49 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 43a5b4a..d9ba821 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -253,6 +253,7 @@
             camel-quarkus-vertx
             camel-quarkus-vm
             camel-quarkus-websocket-jsr356
+            camel-quarkus-xj
             camel-quarkus-xml-io
             camel-quarkus-xml-jaxb
             camel-quarkus-xml-jaxp
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index c79e44a..a48dd4c 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -204,6 +204,7 @@
 *** xref:reference/extensions/validator.adoc[Validator]
 *** xref:reference/extensions/vertx.adoc[Vert.x]
 *** xref:reference/extensions/vm.adoc[VM]
+*** xref:reference/extensions/xj.adoc[XJ]
 *** xref:reference/extensions/xml-io.adoc[XML IO]
 *** xref:reference/extensions/xml-jaxb.adoc[XML JAXB]
 *** xref:reference/extensions/xmlsecurity.adoc[XML Security Sign]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index e4cf730..0ad55bd 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -601,6 +601,9 @@ Stable | 1.0.0 | Send and receive messages to/from Vert.x Event Bus.
 | xref:reference/extensions/vm.adoc[VM] | [.camel-element-artifact]##camel-quarkus-vm## | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 
+| xref:reference/extensions/xj.adoc[XJ] | [.camel-element-artifact]##camel-quarkus-xj## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Transform JSON and XML message using a XSLT.
+
 | xref:reference/extensions/xmlsecurity.adoc[XML Security Sign] | [.camel-element-artifact]##camel-quarkus-xmlsecurity## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Sign XML payloads using the XML signature specification.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/xj.adoc b/docs/modules/ROOT/pages/reference/extensions/xj.adoc
new file mode 100644
index 0000000..99efb9b
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/xj.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[xj]]
+= XJ
+:page-aliases: extensions/xj.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Transform JSON and XML message using a XSLT.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/xj-component.html[XJ component], URI syntax: `xj:resourceUri`
+
+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-xj</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 95bbc02..e08b6b2 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -590,6 +590,9 @@ Stable | 1.0.0 | Send and receive messages to/from Vert.x Event Bus.
 |  xref:reference/extensions/vm.adoc[VM]  | camel-quarkus-vm | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 
+|  xref:reference/extensions/xj.adoc[XJ]  | camel-quarkus-xj | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Transform JSON and XML message using a XSLT.
+
 |  xref:reference/extensions/xml-io.adoc[XML IO]  | camel-quarkus-xml-io | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | An XML stack for parsing XML route definitions. A fast an light weight alternative to camel-quarkus-xml-jaxp
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index cba4a9f..790e489 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>xj</module>
         <module>xmlsecurity</module>
         <module>xmpp</module>
         <module>xslt-saxon</module>
diff --git a/extensions-jvm/xj/deployment/pom.xml b/extensions-jvm/xj/deployment/pom.xml
new file mode 100644
index 0000000..e09a2f1
--- /dev/null
+++ b/extensions-jvm/xj/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-xj-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xj-deployment</artifactId>
+    <name>Camel Quarkus :: XJ :: 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-xj</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/xj/deployment/src/main/java/org/apache/camel/quarkus/component/xj/deployment/XjProcessor.java b/extensions-jvm/xj/deployment/src/main/java/org/apache/camel/quarkus/component/xj/deployment/XjProcessor.java
new file mode 100644
index 0000000..5ef8442
--- /dev/null
+++ b/extensions-jvm/xj/deployment/src/main/java/org/apache/camel/quarkus/component/xj/deployment/XjProcessor.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.xj.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 XjProcessor {
+
+    private static final Logger LOG = Logger.getLogger(XjProcessor.class);
+    private static final String FEATURE = "camel-xj";
+
+    @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/xj/integration-test/pom.xml b/extensions-jvm/xj/integration-test/pom.xml
new file mode 100644
index 0000000..ad72c25
--- /dev/null
+++ b/extensions-jvm/xj/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xj-integration-test</artifactId>
+    <name>Camel Quarkus :: XJ :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus XJ extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-xj-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-xj</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/xj/integration-test/src/main/java/org/apache/camel/quarkus/component/xj/it/XjResource.java b/extensions-jvm/xj/integration-test/src/main/java/org/apache/camel/quarkus/component/xj/it/XjResource.java
new file mode 100644
index 0000000..40cd6a0
--- /dev/null
+++ b/extensions-jvm/xj/integration-test/src/main/java/org/apache/camel/quarkus/component/xj/it/XjResource.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.xj.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("/xj")
+@ApplicationScoped
+public class XjResource {
+
+    private static final Logger LOG = Logger.getLogger(XjResource.class);
+
+    private static final String COMPONENT_XJ = "xj";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/xj")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentXj() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_XJ) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_XJ);
+        return Response.status(500, COMPONENT_XJ + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/xj/integration-test/src/test/java/org/apache/camel/quarkus/component/xj/it/XjTest.java b/extensions-jvm/xj/integration-test/src/test/java/org/apache/camel/quarkus/component/xj/it/XjTest.java
new file mode 100644
index 0000000..445bfd6
--- /dev/null
+++ b/extensions-jvm/xj/integration-test/src/test/java/org/apache/camel/quarkus/component/xj/it/XjTest.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.xj.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class XjTest {
+
+    @Test
+    public void loadComponentXj() {
+        /* A simple autogenerated test */
+        RestAssured.get("/xj/load/component/xj")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/xj/pom.xml b/extensions-jvm/xj/pom.xml
new file mode 100644
index 0000000..e87df82
--- /dev/null
+++ b/extensions-jvm/xj/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-xj-parent</artifactId>
+    <name>Camel Quarkus :: XJ</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/xj/runtime/pom.xml b/extensions-jvm/xj/runtime/pom.xml
new file mode 100644
index 0000000..6ddf326
--- /dev/null
+++ b/extensions-jvm/xj/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-xj-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xj</artifactId>
+    <name>Camel Quarkus :: XJ :: Runtime</name>
+    <description>Transform JSON and XML message using a XSLT.</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-xj</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/xj/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/xj/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..3431cbc
--- /dev/null
+++ b/extensions-jvm/xj/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 XJ"
+description: "Transform JSON and XML message using a XSLT"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/xj.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index ca356ed..0957172 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1378,6 +1378,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-xj</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xml-io</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3560,6 +3565,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xj</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xj-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-xml-io</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 03/08: Zendesk 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 0589353ee36b40ab56bee682ea98cc40487ceb55
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:22:59 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index a16c364..e3073ed 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -259,6 +259,7 @@
             camel-quarkus-xpath
             camel-quarkus-xslt
             camel-quarkus-xstream
+            camel-quarkus-zendesk
             camel-quarkus-zip-deflater
             camel-quarkus-zipfile
             camel-quarkus-zookeeper
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 2173f63..63509ce 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -211,6 +211,7 @@
 *** xref:reference/extensions/xslt.adoc[XSLT]
 *** xref:reference/extensions/xstream.adoc[XStream]
 *** xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]
+*** xref:reference/extensions/zendesk.adoc[Zendesk]
 *** xref:reference/extensions/zip-deflater.adoc[Zip Deflate Compression]
 *** xref:reference/extensions/zipfile.adoc[Zip File]
 *** xref:reference/extensions/zookeeper.adoc[ZooKeeper]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index ead875e..779829e 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -604,6 +604,9 @@ Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 | xref:reference/extensions/xslt.adoc[XSLT] | [.camel-element-artifact]##camel-quarkus-xslt## | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Transforms XML payload using an XSLT template.
 
+| xref:reference/extensions/zendesk.adoc[Zendesk] | [.camel-element-artifact]##camel-quarkus-zendesk## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Manage Zendesk tickets, users, organizations, etc.
+
 | xref:reference/extensions/zookeeper.adoc[ZooKeeper] | [.camel-element-artifact]##camel-quarkus-zookeeper## | [.camel-element-JVM]##JVM## +
 Preview | 1.1.0 | Manage ZooKeeper clusters.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/zendesk.adoc b/docs/modules/ROOT/pages/reference/extensions/zendesk.adoc
new file mode 100644
index 0000000..f1b6c18
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/zendesk.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[zendesk]]
+= Zendesk
+:page-aliases: extensions/zendesk.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Manage Zendesk tickets, users, organizations, etc.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/zendesk-component.html[Zendesk component], URI syntax: `zendesk:methodName`
+
+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-zendesk</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 801e050..b81b41e 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -611,6 +611,9 @@ Stable | 1.0.0 | Marshal and unmarshal POJOs to/from XML or JSON using XStream l
 |  xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]  | camel-quarkus-snakeyaml | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Marshal and unmarshal Java objects to and from YAML.
 
+|  xref:reference/extensions/zendesk.adoc[Zendesk]  | camel-quarkus-zendesk | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Manage Zendesk tickets, users, organizations, etc.
+
 |  xref:reference/extensions/zip-deflater.adoc[Zip Deflate Compression]  | camel-quarkus-zip-deflater | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Compress and decompress streams using java.util.zip.Deflater, java.util.zip.Inflater or java.util.zip.GZIPStream.
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 55e6560..95981fb 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>zendesk</module>
         <module>zookeeper</module>
         <module>zookeeper-master</module>
     </modules>
diff --git a/extensions-jvm/zendesk/deployment/pom.xml b/extensions-jvm/zendesk/deployment/pom.xml
new file mode 100644
index 0000000..570cb42
--- /dev/null
+++ b/extensions-jvm/zendesk/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-zendesk-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zendesk-deployment</artifactId>
+    <name>Camel Quarkus :: Zendesk :: 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-zendesk</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/zendesk/deployment/src/main/java/org/apache/camel/quarkus/component/zendesk/deployment/ZendeskProcessor.java b/extensions-jvm/zendesk/deployment/src/main/java/org/apache/camel/quarkus/component/zendesk/deployment/ZendeskProcessor.java
new file mode 100644
index 0000000..c498a4f
--- /dev/null
+++ b/extensions-jvm/zendesk/deployment/src/main/java/org/apache/camel/quarkus/component/zendesk/deployment/ZendeskProcessor.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.zendesk.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 ZendeskProcessor {
+
+    private static final Logger LOG = Logger.getLogger(ZendeskProcessor.class);
+    private static final String FEATURE = "camel-zendesk";
+
+    @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/zendesk/integration-test/pom.xml b/extensions-jvm/zendesk/integration-test/pom.xml
new file mode 100644
index 0000000..f53c14c
--- /dev/null
+++ b/extensions-jvm/zendesk/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zendesk-integration-test</artifactId>
+    <name>Camel Quarkus :: Zendesk :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Zendesk extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-zendesk-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-zendesk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/zendesk/integration-test/src/main/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskResource.java b/extensions-jvm/zendesk/integration-test/src/main/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskResource.java
new file mode 100644
index 0000000..34724c8
--- /dev/null
+++ b/extensions-jvm/zendesk/integration-test/src/main/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskResource.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.zendesk.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("/zendesk")
+@ApplicationScoped
+public class ZendeskResource {
+
+    private static final Logger LOG = Logger.getLogger(ZendeskResource.class);
+
+    private static final String COMPONENT_ZENDESK = "zendesk";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/zendesk")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentZendesk() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_ZENDESK) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_ZENDESK);
+        return Response.status(500, COMPONENT_ZENDESK + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/zendesk/integration-test/src/test/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskTest.java b/extensions-jvm/zendesk/integration-test/src/test/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskTest.java
new file mode 100644
index 0000000..a6a68d7
--- /dev/null
+++ b/extensions-jvm/zendesk/integration-test/src/test/java/org/apache/camel/quarkus/component/zendesk/it/ZendeskTest.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.zendesk.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class ZendeskTest {
+
+    @Test
+    public void loadComponentZendesk() {
+        /* A simple autogenerated test */
+        RestAssured.get("/zendesk/load/component/zendesk")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/zendesk/pom.xml b/extensions-jvm/zendesk/pom.xml
new file mode 100644
index 0000000..220dbc7
--- /dev/null
+++ b/extensions-jvm/zendesk/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-zendesk-parent</artifactId>
+    <name>Camel Quarkus :: Zendesk</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/zendesk/runtime/pom.xml b/extensions-jvm/zendesk/runtime/pom.xml
new file mode 100644
index 0000000..e8f5854
--- /dev/null
+++ b/extensions-jvm/zendesk/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-zendesk-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zendesk</artifactId>
+    <name>Camel Quarkus :: Zendesk :: Runtime</name>
+    <description>Manage Zendesk tickets, users, organizations, etc.</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-zendesk</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/zendesk/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/zendesk/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..8109db1
--- /dev/null
+++ b/extensions-jvm/zendesk/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 Zendesk"
+description: "Manage Zendesk tickets, users, organizations, etc"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/zendesk.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 71566af..8542216 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1408,6 +1408,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-zendesk</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-zip-deflater</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3600,6 +3605,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-zendesk</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-zendesk-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-zip-deflater</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/08: ZooKeeper 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 324b1b064a6097fca42364a82994e8ff20ee7348
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:19:50 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 45cad8b..070a3ee 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -261,6 +261,7 @@
             camel-quarkus-xstream
             camel-quarkus-zip-deflater
             camel-quarkus-zipfile
+            camel-quarkus-zookeeper
         </mvnd.builder.rule>
     </properties>
 
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index c9b5206..c33fc99 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -212,7 +212,8 @@
 *** xref:reference/extensions/xstream.adoc[XStream]
 *** xref:reference/extensions/snakeyaml.adoc[YAML SnakeYAML]
 *** xref:reference/extensions/zip-deflater.adoc[Zip Deflate Compression]
-*** xref:reference/extensions/zipfile.adoc[Zip File]// extensions: END
+*** xref:reference/extensions/zipfile.adoc[Zip File]
+*** xref:reference/extensions/zookeeper.adoc[ZooKeeper]// extensions: END
 ** xref:reference/components.adoc[Components]
 ** xref:reference/dataformats.adoc[Data formats]
 ** xref:reference/languages.adoc[Languages]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index 8e84cd0..8a9ed74 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -603,6 +603,9 @@ Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 
 | xref:reference/extensions/xslt.adoc[XSLT] | [.camel-element-artifact]##camel-quarkus-xslt## | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Transforms XML payload using an XSLT template.
+
+| xref:reference/extensions/zookeeper.adoc[ZooKeeper] | [.camel-element-artifact]##camel-quarkus-zookeeper## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Manage ZooKeeper clusters.
 |===
 
 ++++
diff --git a/docs/modules/ROOT/pages/reference/extensions/zookeeper.adoc b/docs/modules/ROOT/pages/reference/extensions/zookeeper.adoc
new file mode 100644
index 0000000..6421f95
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/zookeeper.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[zookeeper]]
+= ZooKeeper
+:page-aliases: extensions/zookeeper.adoc
+
+[.badges]
+[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Manage ZooKeeper clusters.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/zookeeper-component.html[ZooKeeper component], URI syntax: `zookeeper:serverUrls/path`
+
+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-zookeeper</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 8f28b86..5567094 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -616,6 +616,9 @@ Stable | 1.0.0 | Compress and decompress streams using java.util.zip.Deflater, j
 
 |  xref:reference/extensions/zipfile.adoc[Zip File]  | camel-quarkus-zipfile | [.camel-element-Native]##Native## +
 Stable | 0.2.0 | Compression and decompress streams using java.util.zip.ZipStream.
+
+|  xref:reference/extensions/zookeeper.adoc[ZooKeeper]  | camel-quarkus-zookeeper | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Manage ZooKeeper clusters.
 |===
 
 ++++
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index aa5d374..3cad5e9 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>zookeeper</module>
     </modules>
 
 </project>
diff --git a/extensions-jvm/zookeeper/deployment/pom.xml b/extensions-jvm/zookeeper/deployment/pom.xml
new file mode 100644
index 0000000..cb8b89e
--- /dev/null
+++ b/extensions-jvm/zookeeper/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-zookeeper-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zookeeper-deployment</artifactId>
+    <name>Camel Quarkus :: ZooKeeper :: 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-zookeeper</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/zookeeper/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/deployment/ZookeeperProcessor.java b/extensions-jvm/zookeeper/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/deployment/ZookeeperProcessor.java
new file mode 100644
index 0000000..a383f8b
--- /dev/null
+++ b/extensions-jvm/zookeeper/deployment/src/main/java/org/apache/camel/quarkus/component/zookeeper/deployment/ZookeeperProcessor.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.zookeeper.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 ZookeeperProcessor {
+
+    private static final Logger LOG = Logger.getLogger(ZookeeperProcessor.class);
+    private static final String FEATURE = "camel-zookeeper";
+
+    @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/zookeeper/integration-test/pom.xml b/extensions-jvm/zookeeper/integration-test/pom.xml
new file mode 100644
index 0000000..6c5c5de
--- /dev/null
+++ b/extensions-jvm/zookeeper/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zookeeper-integration-test</artifactId>
+    <name>Camel Quarkus :: ZooKeeper :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus ZooKeeper extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-zookeeper-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/zookeeper/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperResource.java b/extensions-jvm/zookeeper/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperResource.java
new file mode 100644
index 0000000..ec4f249
--- /dev/null
+++ b/extensions-jvm/zookeeper/integration-test/src/main/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperResource.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.zookeeper.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("/zookeeper")
+@ApplicationScoped
+public class ZookeeperResource {
+
+    private static final Logger LOG = Logger.getLogger(ZookeeperResource.class);
+
+    private static final String COMPONENT_ZOOKEEPER = "zookeeper";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/zookeeper")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentZookeeper() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_ZOOKEEPER) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_ZOOKEEPER);
+        return Response.status(500, COMPONENT_ZOOKEEPER + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/zookeeper/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperTest.java b/extensions-jvm/zookeeper/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperTest.java
new file mode 100644
index 0000000..c939679
--- /dev/null
+++ b/extensions-jvm/zookeeper/integration-test/src/test/java/org/apache/camel/quarkus/component/zookeeper/it/ZookeeperTest.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.zookeeper.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class ZookeeperTest {
+
+    @Test
+    public void loadComponentZookeeper() {
+        /* A simple autogenerated test */
+        RestAssured.get("/zookeeper/load/component/zookeeper")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/zookeeper/pom.xml b/extensions-jvm/zookeeper/pom.xml
new file mode 100644
index 0000000..2a4a8c8
--- /dev/null
+++ b/extensions-jvm/zookeeper/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-zookeeper-parent</artifactId>
+    <name>Camel Quarkus :: ZooKeeper</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/zookeeper/runtime/pom.xml b/extensions-jvm/zookeeper/runtime/pom.xml
new file mode 100644
index 0000000..394e65e
--- /dev/null
+++ b/extensions-jvm/zookeeper/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-zookeeper-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-zookeeper</artifactId>
+    <name>Camel Quarkus :: ZooKeeper :: Runtime</name>
+    <description>Manage ZooKeeper clusters.</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-zookeeper</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/zookeeper/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/zookeeper/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..1e8344b
--- /dev/null
+++ b/extensions-jvm/zookeeper/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 ZooKeeper"
+description: "Manage ZooKeeper clusters"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/zookeeper.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index ea921f8..17dda91 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1418,6 +1418,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-zookeeper</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>spi-annotations</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3608,6 +3613,16 @@
                 <artifactId>camel-quarkus-zipfile-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-zookeeper</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-zookeeper-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
 
             <!--$ Other third party dependencies $-->
             <dependency>


[camel-quarkus] 06/08: XMPP 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 dee1d4d2350f40965f477efce14c9d641016cd48
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Aug 26 11:30:55 2020 +0200

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

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 7ff236c..b622359 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -256,6 +256,7 @@
             camel-quarkus-xml-io
             camel-quarkus-xml-jaxb
             camel-quarkus-xml-jaxp
+            camel-quarkus-xmpp
             camel-quarkus-xpath
             camel-quarkus-xslt
             camel-quarkus-xslt-saxon
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 4887d9c..2e3f1c6 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -207,6 +207,7 @@
 *** xref:reference/extensions/xml-io.adoc[XML IO]
 *** xref:reference/extensions/xml-jaxb.adoc[XML JAXB]
 *** xref:reference/extensions/xml-jaxp.adoc[XML Tokenize]
+*** xref:reference/extensions/xmpp.adoc[XMPP]
 *** xref:reference/extensions/xpath.adoc[XPath]
 *** xref:reference/extensions/xslt.adoc[XSLT]
 *** xref:reference/extensions/xslt-saxon.adoc[XSLT Saxon]
diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc
index ddde153..ae2fa32 100644
--- a/docs/modules/ROOT/pages/reference/components.adoc
+++ b/docs/modules/ROOT/pages/reference/components.adoc
@@ -601,6 +601,9 @@ Stable | 1.0.0 | Send and receive messages to/from Vert.x Event Bus.
 | xref:reference/extensions/vm.adoc[VM] | [.camel-element-artifact]##camel-quarkus-vm## | [.camel-element-Native]##Native## +
 Stable | 0.3.0 | Call another endpoint in the same CamelContext asynchronously.
 
+| xref:reference/extensions/xmpp.adoc[XMPP] | [.camel-element-artifact]##camel-quarkus-xmpp## | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send and receive messages to/from an XMPP chat server.
+
 | xref:reference/extensions/xslt.adoc[XSLT] | [.camel-element-artifact]##camel-quarkus-xslt## | [.camel-element-Native]##Native## +
 Stable | 0.4.0 | Transforms XML payload using an XSLT template.
 
diff --git a/docs/modules/ROOT/pages/reference/extensions/xmpp.adoc b/docs/modules/ROOT/pages/reference/extensions/xmpp.adoc
new file mode 100644
index 0000000..5aa0258
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/xmpp.adoc
@@ -0,0 +1,29 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+
+[[xmpp]]
+= XMPP
+:page-aliases: extensions/xmpp.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 to/from an XMPP chat server.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/xmpp-component.html[XMPP component], URI syntax: `xmpp:host:port/participant`
+
+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-xmpp</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 8013523..e9ea3b1 100644
--- a/docs/modules/ROOT/pages/reference/index.adoc
+++ b/docs/modules/ROOT/pages/reference/index.adoc
@@ -599,6 +599,9 @@ Stable | 1.0.0 | An XML stack for parsing XML route definitions. A legacy altern
 |  xref:reference/extensions/xml-jaxp.adoc[XML Tokenize]  | camel-quarkus-xml-jaxp | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Tokenize XML payloads using the specified path expression.
 
+|  xref:reference/extensions/xmpp.adoc[XMPP]  | camel-quarkus-xmpp | [.camel-element-JVM]##JVM## +
+Preview | 1.1.0 | Send and receive messages to/from an XMPP chat server.
+
 |  xref:reference/extensions/xpath.adoc[XPath]  | camel-quarkus-xpath | [.camel-element-Native]##Native## +
 Stable | 1.0.0 | Evaluate an XPath expression against an XML payload.
 
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 6561426..56bbd8c 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -78,6 +78,7 @@
         <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
+        <module>xmpp</module>
         <module>xslt-saxon</module>
         <module>yammer</module>
         <module>zendesk</module>
diff --git a/extensions-jvm/xmpp/deployment/pom.xml b/extensions-jvm/xmpp/deployment/pom.xml
new file mode 100644
index 0000000..115eaed
--- /dev/null
+++ b/extensions-jvm/xmpp/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-xmpp-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xmpp-deployment</artifactId>
+    <name>Camel Quarkus :: XMPP :: 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-xmpp</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/xmpp/deployment/src/main/java/org/apache/camel/quarkus/component/xmpp/deployment/XmppProcessor.java b/extensions-jvm/xmpp/deployment/src/main/java/org/apache/camel/quarkus/component/xmpp/deployment/XmppProcessor.java
new file mode 100644
index 0000000..544eb6f
--- /dev/null
+++ b/extensions-jvm/xmpp/deployment/src/main/java/org/apache/camel/quarkus/component/xmpp/deployment/XmppProcessor.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.xmpp.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 XmppProcessor {
+
+    private static final Logger LOG = Logger.getLogger(XmppProcessor.class);
+    private static final String FEATURE = "camel-xmpp";
+
+    @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/xmpp/integration-test/pom.xml b/extensions-jvm/xmpp/integration-test/pom.xml
new file mode 100644
index 0000000..893d21a
--- /dev/null
+++ b/extensions-jvm/xmpp/integration-test/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xmpp-integration-test</artifactId>
+    <name>Camel Quarkus :: XMPP :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus XMPP extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update the rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-xmpp-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-xmpp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/xmpp/integration-test/src/main/java/org/apache/camel/quarkus/component/xmpp/it/XmppResource.java b/extensions-jvm/xmpp/integration-test/src/main/java/org/apache/camel/quarkus/component/xmpp/it/XmppResource.java
new file mode 100644
index 0000000..9195dc3
--- /dev/null
+++ b/extensions-jvm/xmpp/integration-test/src/main/java/org/apache/camel/quarkus/component/xmpp/it/XmppResource.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.xmpp.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("/xmpp")
+@ApplicationScoped
+public class XmppResource {
+
+    private static final Logger LOG = Logger.getLogger(XmppResource.class);
+
+    private static final String COMPONENT_XMPP = "xmpp";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/xmpp")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentXmpp() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_XMPP) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_XMPP);
+        return Response.status(500, COMPONENT_XMPP + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/xmpp/integration-test/src/test/java/org/apache/camel/quarkus/component/xmpp/it/XmppTest.java b/extensions-jvm/xmpp/integration-test/src/test/java/org/apache/camel/quarkus/component/xmpp/it/XmppTest.java
new file mode 100644
index 0000000..30082d4
--- /dev/null
+++ b/extensions-jvm/xmpp/integration-test/src/test/java/org/apache/camel/quarkus/component/xmpp/it/XmppTest.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.xmpp.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class XmppTest {
+
+    @Test
+    public void loadComponentXmpp() {
+        /* A simple autogenerated test */
+        RestAssured.get("/xmpp/load/component/xmpp")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/xmpp/pom.xml b/extensions-jvm/xmpp/pom.xml
new file mode 100644
index 0000000..24efa24
--- /dev/null
+++ b/extensions-jvm/xmpp/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-xmpp-parent</artifactId>
+    <name>Camel Quarkus :: XMPP</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/xmpp/runtime/pom.xml b/extensions-jvm/xmpp/runtime/pom.xml
new file mode 100644
index 0000000..f4b1784
--- /dev/null
+++ b/extensions-jvm/xmpp/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-xmpp-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-xmpp</artifactId>
+    <name>Camel Quarkus :: XMPP :: Runtime</name>
+    <description>Send and receive messages to/from an XMPP chat server.</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-xmpp</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/xmpp/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/xmpp/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..b908771
--- /dev/null
+++ b/extensions-jvm/xmpp/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 XMPP"
+description: "Send and receive messages to/from an XMPP chat server"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/xmpp.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 7ecee20..2ecc183 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1393,6 +1393,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-xmpp</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xpath</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -3580,6 +3585,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xmpp</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-xmpp-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-xpath</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>