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/03/19 07:41:58 UTC

[camel-quarkus] branch master updated (107102b -> d8295ce)

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 107102b  Upgrade to cq-maven-plugin 0.2.0
     new 481e6ae  Fix #908 Cassandra CQL support (JVM only)
     new 6fedae9  Fix #910 Couchbase support (JVM only)
     new d8295ce  Fix #910 CouchDB support (JVM only)

The 3 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:
 .../pages/list-of-camel-quarkus-extensions.adoc    | 14 +++++++++-
 .../deployment/pom.xml                             |  8 +++---
 .../deployment/CassandraqlProcessor.java           |  6 ++---
 .../integration-test/pom.xml                       | 12 ++++-----
 .../cassandraql/it/CassandraqlResource.java}       | 20 +++++++--------
 .../component/cassandraql/it/CassandraqlTest.java} |  8 +++---
 .../{elasticsearch-rest => cassandraql}/pom.xml    |  4 +--
 .../runtime/pom.xml                                | 16 ++++++++----
 .../main/resources/META-INF/quarkus-extension.yaml | 10 ++++----
 .../deployment/pom.xml                             |  8 +++---
 .../couchbase/deployment/CouchbaseProcessor.java   |  6 ++---
 .../integration-test/pom.xml                       | 12 ++++-----
 .../component/couchbase/it/CouchbaseResource.java} | 20 +++++++--------
 .../component/couchbase/it/CouchbaseTest.java}     |  8 +++---
 .../{elasticsearch-rest => couchbase}/pom.xml      |  4 +--
 .../runtime/pom.xml                                | 10 ++++----
 .../main/resources/META-INF/quarkus-extension.yaml | 10 ++++----
 .../deployment/pom.xml                             |  8 +++---
 .../couchdb/deployment/CouchdbProcessor.java       |  6 ++---
 .../integration-test/pom.xml                       | 12 ++++-----
 .../component/couchdb/it/CouchdbResource.java}     | 20 +++++++--------
 .../quarkus/component/couchdb/it/CouchdbTest.java} |  8 +++---
 .../{elasticsearch-rest => couchdb}/pom.xml        |  4 +--
 .../runtime/pom.xml                                | 10 ++++----
 .../main/resources/META-INF/quarkus-extension.yaml | 12 ++++-----
 extensions-jvm/pom.xml                             |  3 +++
 poms/bom-deployment/pom.xml                        | 15 +++++++++++
 poms/bom/pom.xml                                   | 30 ++++++++++++++++++++++
 28 files changed, 185 insertions(+), 119 deletions(-)
 copy extensions-jvm/{elasticsearch-rest => cassandraql}/deployment/pom.xml (90%)
 copy extensions/ahc-ws/deployment/src/main/java/org/apache/camel/quarkus/component/ahc/ws/deployment/AhcWsProcessor.java => extensions-jvm/cassandraql/deployment/src/main/java/org/apache/camel/quarkus/component/cassandraql/deployment/CassandraqlProcessor.java (86%)
 copy extensions-jvm/{elasticsearch-rest => cassandraql}/integration-test/pom.xml (85%)
 copy extensions-jvm/{elasticsearch-rest/integration-test/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/it/ElasticsearchRestResource.java => cassandraql/integration-test/src/main/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlResource.java} (67%)
 copy extensions-jvm/{elasticsearch-rest/integration-test/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/it/ElasticsearchRestTest.java => cassandraql/integration-test/src/test/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlTest.java} (82%)
 copy extensions-jvm/{elasticsearch-rest => cassandraql}/pom.xml (92%)
 copy extensions-jvm/{elasticsearch-rest => cassandraql}/runtime/pom.xml (82%)
 copy extensions-jvm/{elasticsearch-rest => cassandraql}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (74%)
 copy extensions-jvm/{elasticsearch-rest => couchbase}/deployment/pom.xml (90%)
 copy extensions/scheduler/deployment/src/main/java/org/apache/camel/quarkus/component/scheduler/deployment/SchedulerProcessor.java => extensions-jvm/couchbase/deployment/src/main/java/org/apache/camel/quarkus/component/couchbase/deployment/CouchbaseProcessor.java (87%)
 copy extensions-jvm/{elasticsearch-rest => couchbase}/integration-test/pom.xml (85%)
 copy extensions-jvm/{elasticsearch-rest/integration-test/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/it/ElasticsearchRestResource.java => couchbase/integration-test/src/main/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseResource.java} (67%)
 copy extensions-jvm/{elasticsearch-rest/integration-test/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/it/ElasticsearchRestTest.java => couchbase/integration-test/src/test/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseTest.java} (82%)
 copy extensions-jvm/{elasticsearch-rest => couchbase}/pom.xml (92%)
 copy extensions-jvm/{elasticsearch-rest => couchbase}/runtime/pom.xml (88%)
 copy extensions-jvm/{elasticsearch-rest => couchbase}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (77%)
 copy extensions-jvm/{elasticsearch-rest => couchdb}/deployment/pom.xml (90%)
 copy extensions/base64/deployment/src/main/java/org/apache/camel/quarkus/component/base64/deployment/Base64Processor.java => extensions-jvm/couchdb/deployment/src/main/java/org/apache/camel/quarkus/component/couchdb/deployment/CouchdbProcessor.java (87%)
 copy extensions-jvm/{elasticsearch-rest => couchdb}/integration-test/pom.xml (85%)
 copy extensions-jvm/{elasticsearch-rest/integration-test/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/it/ElasticsearchRestResource.java => couchdb/integration-test/src/main/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbResource.java} (67%)
 copy extensions-jvm/{elasticsearch-rest/integration-test/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/it/ElasticsearchRestTest.java => couchdb/integration-test/src/test/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbTest.java} (82%)
 copy extensions-jvm/{elasticsearch-rest => couchdb}/pom.xml (92%)
 copy extensions-jvm/{elasticsearch-rest => couchdb}/runtime/pom.xml (88%)
 copy {extensions/kotlin => extensions-jvm/couchdb}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (79%)


[camel-quarkus] 02/03: Fix #910 Couchbase support (JVM only)

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 6fedae9a8d5b8a68eaf63217c731e510a56eb3cc
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Mar 18 22:53:37 2020 +0100

    Fix #910 Couchbase support (JVM only)
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |  6 +-
 extensions-jvm/couchbase/deployment/pom.xml        | 75 +++++++++++++++++++
 .../couchbase/deployment/CouchbaseProcessor.java   | 31 ++++++++
 extensions-jvm/couchbase/integration-test/pom.xml  | 82 +++++++++++++++++++++
 .../component/couchbase/it/CouchbaseResource.java  | 51 +++++++++++++
 .../component/couchbase/it/CouchbaseTest.java      | 34 +++++++++
 extensions-jvm/{ => couchbase}/pom.xml             | 21 +++---
 extensions-jvm/couchbase/runtime/pom.xml           | 83 ++++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 29 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom-deployment/pom.xml                        |  5 ++
 poms/bom/pom.xml                                   | 10 +++
 12 files changed, 416 insertions(+), 12 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index ebc0ac3..d735732 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -18,7 +18,7 @@ In case you are missing some Camel feature in the list:
 == Camel Components
 
 // components: START
-Number of Camel components: 81 in 70 JAR artifacts (0 deprecated)
+Number of Camel components: 82 in 71 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,1,5",options="header"]
 |===
@@ -125,6 +125,10 @@ Level | Since | Description
 `controlbus:command:language` | Native +
  Stable | 0.4.0 | The controlbus component provides easy management of Camel applications based on the Control Bus EIP pattern.
 
+| link:https://camel.apache.org/components/latest/couchbase-component.html[Couchbase] (camel-quarkus-couchbase) +
+`couchbase:protocol:hostname:port` | JVM +
+ Preview | 1.0.0-M6 | Represents a Couchbase endpoint that can query Views with a Poll strategy and/or produce various type of operations.
+
 | link:https://camel.apache.org/components/latest/dataformat-component.html[Data Format] (camel-quarkus-dataformat) +
 `dataformat:name:operation` | Native +
  Stable | 0.4.0 | The dataformat component is used for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.
diff --git a/extensions-jvm/couchbase/deployment/pom.xml b/extensions-jvm/couchbase/deployment/pom.xml
new file mode 100644
index 0000000..be06b18
--- /dev/null
+++ b/extensions-jvm/couchbase/deployment/pom.xml
@@ -0,0 +1,75 @@
+<?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-couchbase-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-couchbase-deployment</artifactId>
+    <name>Camel Quarkus :: Couchbase :: Deployment</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-deployment</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-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-couchbase</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/couchbase/deployment/src/main/java/org/apache/camel/quarkus/component/couchbase/deployment/CouchbaseProcessor.java b/extensions-jvm/couchbase/deployment/src/main/java/org/apache/camel/quarkus/component/couchbase/deployment/CouchbaseProcessor.java
new file mode 100644
index 0000000..d47dc4b
--- /dev/null
+++ b/extensions-jvm/couchbase/deployment/src/main/java/org/apache/camel/quarkus/component/couchbase/deployment/CouchbaseProcessor.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.couchbase.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+class CouchbaseProcessor {
+
+    private static final String FEATURE = "camel-couchbase";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+}
diff --git a/extensions-jvm/couchbase/integration-test/pom.xml b/extensions-jvm/couchbase/integration-test/pom.xml
new file mode 100644
index 0000000..70e5844
--- /dev/null
+++ b/extensions-jvm/couchbase/integration-test/pom.xml
@@ -0,0 +1,82 @@
+<?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-couchbase-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-couchbase-integration-test</artifactId>
+    <name>Camel Quarkus :: Couchbase :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Couchbase extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-couchbase-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-couchbase</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/couchbase/integration-test/src/main/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseResource.java b/extensions-jvm/couchbase/integration-test/src/main/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseResource.java
new file mode 100644
index 0000000..15fd254
--- /dev/null
+++ b/extensions-jvm/couchbase/integration-test/src/main/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseResource.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.couchbase.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("/couchbase")
+@ApplicationScoped
+public class CouchbaseResource {
+
+    private static final Logger LOG = Logger.getLogger(CouchbaseResource.class);
+
+    private static final String COMPONENT_COUCHBASE = "couchbase";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/couchbase")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentCouchbase() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_COUCHBASE) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_COUCHBASE);
+        return Response.status(500, COMPONENT_COUCHBASE + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/couchbase/integration-test/src/test/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseTest.java b/extensions-jvm/couchbase/integration-test/src/test/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseTest.java
new file mode 100644
index 0000000..c98dadb
--- /dev/null
+++ b/extensions-jvm/couchbase/integration-test/src/test/java/org/apache/camel/quarkus/component/couchbase/it/CouchbaseTest.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.couchbase.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class CouchbaseTest {
+
+    @Test
+    public void loadComponentCouchbase() {
+        /* A simple autogenerated test */
+        RestAssured.get("/couchbase/load/component/couchbase")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/couchbase/pom.xml
similarity index 61%
copy from extensions-jvm/pom.xml
copy to extensions-jvm/couchbase/pom.xml
index 7021415..61dc337 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/couchbase/pom.xml
@@ -17,25 +17,24 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-parent</artifactId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-extensions-jvm</artifactId>
+    <artifactId>camel-quarkus-couchbase-parent</artifactId>
+    <name>Camel Quarkus :: Couchbase</name>
     <packaging>pom</packaging>
 
-    <name>Camel Quarkus :: Extensions JVM</name>
-    <description>Autogenerated extensions not yet tested in the native mode</description>
-
     <modules>
-        <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
-        <module>cassandraql</module>
-        <module>elasticsearch-rest</module>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
     </modules>
-
 </project>
diff --git a/extensions-jvm/couchbase/runtime/pom.xml b/extensions-jvm/couchbase/runtime/pom.xml
new file mode 100644
index 0000000..2caa301
--- /dev/null
+++ b/extensions-jvm/couchbase/runtime/pom.xml
@@ -0,0 +1,83 @@
+<?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-couchbase-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-couchbase</artifactId>
+    <name>Camel Quarkus :: Couchbase :: Runtime</name>
+    <description>Represents a Couchbase endpoint that can query Views with a Poll strategy and/or produce various type of operations.</description>
+
+    <properties>
+        <firstVersion>1.0.0-M6</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-couchbase</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <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/couchbase/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/couchbase/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..cb40c80
--- /dev/null
+++ b/extensions-jvm/couchbase/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+---
+name: "Couchbase"
+description: "Represents a Couchbase endpoint that can query Views with a Poll strategy and/or produce various type of operations."
+metadata:
+  unlisted: true
+  keywords:
+  - "database"
+  - "nosql"
+  guide: "https://camel.apache.org/components/latest/couchbase-component.html"
+  categories:
+  - "integration"
+  status: "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 7021415..c7d2420 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -35,6 +35,7 @@
     <modules>
         <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
         <module>cassandraql</module>
+        <module>couchbase</module>
         <module>elasticsearch-rest</module>
     </modules>
 
diff --git a/poms/bom-deployment/pom.xml b/poms/bom-deployment/pom.xml
index 0aaff2c..cbc3bf8 100644
--- a/poms/bom-deployment/pom.xml
+++ b/poms/bom-deployment/pom.xml
@@ -206,6 +206,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-couchbase-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-csv-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index fef47ab..d003244 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -239,6 +239,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-couchbase</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-csv</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -882,6 +887,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-couchbase</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-csv</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/03: Fix #908 Cassandra CQL support (JVM only)

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 481e6ae0abc03c7356843570be07f2488b0683cd
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Mar 18 22:50:35 2020 +0100

    Fix #908 Cassandra CQL support (JVM only)
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |  6 +-
 extensions-jvm/cassandraql/deployment/pom.xml      | 75 ++++++++++++++++++
 .../deployment/CassandraqlProcessor.java           | 31 ++++++++
 .../cassandraql/integration-test/pom.xml           | 82 ++++++++++++++++++++
 .../cassandraql/it/CassandraqlResource.java        | 51 +++++++++++++
 .../component/cassandraql/it/CassandraqlTest.java  | 34 +++++++++
 extensions-jvm/{ => cassandraql}/pom.xml           | 20 ++---
 extensions-jvm/cassandraql/runtime/pom.xml         | 89 ++++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 29 +++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom-deployment/pom.xml                        |  5 ++
 poms/bom/pom.xml                                   | 10 +++
 12 files changed, 422 insertions(+), 11 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index c0cfc38..ebc0ac3 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -18,7 +18,7 @@ In case you are missing some Camel feature in the list:
 == Camel Components
 
 // components: START
-Number of Camel components: 80 in 69 JAR artifacts (0 deprecated)
+Number of Camel components: 81 in 70 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,1,5",options="header"]
 |===
@@ -109,6 +109,10 @@ Level | Since | Description
 `braintree:apiName/methodName` | Native +
  Stable | 1.2.0 | The braintree component is used for integrating with the Braintree Payment System.
 
+| link:https://camel.apache.org/components/latest/cql-component.html[Cassandra CQL] (camel-quarkus-cassandraql) +
+`cql:beanRef:hosts:port/keyspace` | JVM +
+ Preview | 1.0.0-M6 | The cql component aims at integrating Cassandra 2.0 using the CQL3 API (not the Thrift API). It's based on Cassandra Java Driver provided by DataStax.
+
 | link:https://camel.apache.org/components/latest/class-component.html[Class] (camel-quarkus-bean) +
 `class:beanName` | Native +
  Stable | 0.2.0 | The Class component is for invoking Java classes (Java beans) from Camel.
diff --git a/extensions-jvm/cassandraql/deployment/pom.xml b/extensions-jvm/cassandraql/deployment/pom.xml
new file mode 100644
index 0000000..bb3913c
--- /dev/null
+++ b/extensions-jvm/cassandraql/deployment/pom.xml
@@ -0,0 +1,75 @@
+<?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-cassandraql-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-cassandraql-deployment</artifactId>
+    <name>Camel Quarkus :: Cassandra CQL :: Deployment</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-deployment</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-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-cassandraql</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/cassandraql/deployment/src/main/java/org/apache/camel/quarkus/component/cassandraql/deployment/CassandraqlProcessor.java b/extensions-jvm/cassandraql/deployment/src/main/java/org/apache/camel/quarkus/component/cassandraql/deployment/CassandraqlProcessor.java
new file mode 100644
index 0000000..7f8ef12
--- /dev/null
+++ b/extensions-jvm/cassandraql/deployment/src/main/java/org/apache/camel/quarkus/component/cassandraql/deployment/CassandraqlProcessor.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.cassandraql.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+class CassandraqlProcessor {
+
+    private static final String FEATURE = "camel-cassandraql";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+}
diff --git a/extensions-jvm/cassandraql/integration-test/pom.xml b/extensions-jvm/cassandraql/integration-test/pom.xml
new file mode 100644
index 0000000..0314080
--- /dev/null
+++ b/extensions-jvm/cassandraql/integration-test/pom.xml
@@ -0,0 +1,82 @@
+<?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-cassandraql-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-cassandraql-integration-test</artifactId>
+    <name>Camel Quarkus :: Cassandra CQL :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Cassandra CQL extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-cassandraql-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-cassandraql</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/cassandraql/integration-test/src/main/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlResource.java b/extensions-jvm/cassandraql/integration-test/src/main/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlResource.java
new file mode 100644
index 0000000..4c25230
--- /dev/null
+++ b/extensions-jvm/cassandraql/integration-test/src/main/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlResource.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.cassandraql.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("/cassandraql")
+@ApplicationScoped
+public class CassandraqlResource {
+
+    private static final Logger LOG = Logger.getLogger(CassandraqlResource.class);
+
+    private static final String COMPONENT_CQL = "cql";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/cql")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentCql() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_CQL) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_CQL);
+        return Response.status(500, COMPONENT_CQL + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/cassandraql/integration-test/src/test/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlTest.java b/extensions-jvm/cassandraql/integration-test/src/test/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlTest.java
new file mode 100644
index 0000000..28fafdd
--- /dev/null
+++ b/extensions-jvm/cassandraql/integration-test/src/test/java/org/apache/camel/quarkus/component/cassandraql/it/CassandraqlTest.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.cassandraql.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class CassandraqlTest {
+
+    @Test
+    public void loadComponentCql() {
+        /* A simple autogenerated test */
+        RestAssured.get("/cassandraql/load/component/cql")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/cassandraql/pom.xml
similarity index 63%
copy from extensions-jvm/pom.xml
copy to extensions-jvm/cassandraql/pom.xml
index 3e755ff..7c102b0 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/cassandraql/pom.xml
@@ -17,24 +17,24 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-parent</artifactId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-extensions-jvm</artifactId>
+    <artifactId>camel-quarkus-cassandraql-parent</artifactId>
+    <name>Camel Quarkus :: Cassandra CQL</name>
     <packaging>pom</packaging>
 
-    <name>Camel Quarkus :: Extensions JVM</name>
-    <description>Autogenerated extensions not yet tested in the native mode</description>
-
     <modules>
-        <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
-        <module>elasticsearch-rest</module>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
     </modules>
-
 </project>
diff --git a/extensions-jvm/cassandraql/runtime/pom.xml b/extensions-jvm/cassandraql/runtime/pom.xml
new file mode 100644
index 0000000..0e1bfcd
--- /dev/null
+++ b/extensions-jvm/cassandraql/runtime/pom.xml
@@ -0,0 +1,89 @@
+<?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-cassandraql-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-cassandraql</artifactId>
+    <name>Camel Quarkus :: Cassandra CQL :: Runtime</name>
+    <description>The cql component aims at integrating Cassandra 2.0 using the CQL3 API (not the Thrift API). It's based on Cassandra Java Driver provided by DataStax.</description>
+
+    <properties>
+        <firstVersion>1.0.0-M6</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-cassandraql</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.ow2.asm</groupId>
+                    <artifactId>asm-util</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <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/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..f711883
--- /dev/null
+++ b/extensions-jvm/cassandraql/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+---
+name: "Cassandra CQL"
+description: "The cql component aims at integrating Cassandra 2.0 using the CQL3 API (not the Thrift API). It's based on Cassandra Java Driver provided by DataStax."
+metadata:
+  unlisted: true
+  keywords:
+  - "database"
+  - "nosql"
+  guide: "https://camel.apache.org/components/latest/cassandraql-component.html"
+  categories:
+  - "integration"
+  status: "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 3e755ff..7021415 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -34,6 +34,7 @@
 
     <modules>
         <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
+        <module>cassandraql</module>
         <module>elasticsearch-rest</module>
     </modules>
 
diff --git a/poms/bom-deployment/pom.xml b/poms/bom-deployment/pom.xml
index bd79ed4..0aaff2c 100644
--- a/poms/bom-deployment/pom.xml
+++ b/poms/bom-deployment/pom.xml
@@ -181,6 +181,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-cassandraql-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-consul-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index c8abe47..fef47ab 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -199,6 +199,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-cassandraql</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-catalog</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -852,6 +857,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-cassandraql</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-consul</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 03/03: Fix #910 CouchDB support (JVM only)

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 d8295ce9fd4a5d9523414a298cd5c28dc130e11d
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Mar 18 22:55:32 2020 +0100

    Fix #910 CouchDB support (JVM only)
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |  6 +-
 extensions-jvm/couchdb/deployment/pom.xml          | 75 +++++++++++++++++++
 .../couchdb/deployment/CouchdbProcessor.java       | 31 ++++++++
 extensions-jvm/couchdb/integration-test/pom.xml    | 82 +++++++++++++++++++++
 .../component/couchdb/it/CouchdbResource.java      | 51 +++++++++++++
 .../quarkus/component/couchdb/it/CouchdbTest.java  | 34 +++++++++
 extensions-jvm/{ => couchdb}/pom.xml               | 22 +++---
 extensions-jvm/couchdb/runtime/pom.xml             | 83 ++++++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml | 29 ++++++++
 extensions-jvm/pom.xml                             |  1 +
 poms/bom-deployment/pom.xml                        |  5 ++
 poms/bom/pom.xml                                   | 10 +++
 12 files changed, 416 insertions(+), 13 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index d735732..495fb83 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -18,7 +18,7 @@ In case you are missing some Camel feature in the list:
 == Camel Components
 
 // components: START
-Number of Camel components: 82 in 71 JAR artifacts (0 deprecated)
+Number of Camel components: 83 in 72 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,1,5",options="header"]
 |===
@@ -129,6 +129,10 @@ Level | Since | Description
 `couchbase:protocol:hostname:port` | JVM +
  Preview | 1.0.0-M6 | Represents a Couchbase endpoint that can query Views with a Poll strategy and/or produce various type of operations.
 
+| link:https://camel.apache.org/components/latest/couchdb-component.html[CouchDB] (camel-quarkus-couchdb) +
+`couchdb:protocol:hostname:port/database` | JVM +
+ Preview | 1.0.0-M6 | The couchdb component is used for integrate with CouchDB databases.
+
 | link:https://camel.apache.org/components/latest/dataformat-component.html[Data Format] (camel-quarkus-dataformat) +
 `dataformat:name:operation` | Native +
  Stable | 0.4.0 | The dataformat component is used for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.
diff --git a/extensions-jvm/couchdb/deployment/pom.xml b/extensions-jvm/couchdb/deployment/pom.xml
new file mode 100644
index 0000000..857daf2
--- /dev/null
+++ b/extensions-jvm/couchdb/deployment/pom.xml
@@ -0,0 +1,75 @@
+<?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-couchdb-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-couchdb-deployment</artifactId>
+    <name>Camel Quarkus :: CouchDB :: Deployment</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-deployment</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-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-couchdb</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/couchdb/deployment/src/main/java/org/apache/camel/quarkus/component/couchdb/deployment/CouchdbProcessor.java b/extensions-jvm/couchdb/deployment/src/main/java/org/apache/camel/quarkus/component/couchdb/deployment/CouchdbProcessor.java
new file mode 100644
index 0000000..3e505ee
--- /dev/null
+++ b/extensions-jvm/couchdb/deployment/src/main/java/org/apache/camel/quarkus/component/couchdb/deployment/CouchdbProcessor.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.couchdb.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+class CouchdbProcessor {
+
+    private static final String FEATURE = "camel-couchdb";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+}
diff --git a/extensions-jvm/couchdb/integration-test/pom.xml b/extensions-jvm/couchdb/integration-test/pom.xml
new file mode 100644
index 0000000..60636b0
--- /dev/null
+++ b/extensions-jvm/couchdb/integration-test/pom.xml
@@ -0,0 +1,82 @@
+<?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-couchdb-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-couchdb-integration-test</artifactId>
+    <name>Camel Quarkus :: CouchDB :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus CouchDB extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-couchdb-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-couchdb</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/couchdb/integration-test/src/main/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbResource.java b/extensions-jvm/couchdb/integration-test/src/main/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbResource.java
new file mode 100644
index 0000000..b2dd298
--- /dev/null
+++ b/extensions-jvm/couchdb/integration-test/src/main/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbResource.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.couchdb.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("/couchdb")
+@ApplicationScoped
+public class CouchdbResource {
+
+    private static final Logger LOG = Logger.getLogger(CouchdbResource.class);
+
+    private static final String COMPONENT_COUCHDB = "couchdb";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/couchdb")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentCouchdb() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_COUCHDB) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_COUCHDB);
+        return Response.status(500, COMPONENT_COUCHDB + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/couchdb/integration-test/src/test/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbTest.java b/extensions-jvm/couchdb/integration-test/src/test/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbTest.java
new file mode 100644
index 0000000..f92d6ad
--- /dev/null
+++ b/extensions-jvm/couchdb/integration-test/src/test/java/org/apache/camel/quarkus/component/couchdb/it/CouchdbTest.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.couchdb.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class CouchdbTest {
+
+    @Test
+    public void loadComponentCouchdb() {
+        /* A simple autogenerated test */
+        RestAssured.get("/couchdb/load/component/couchdb")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/couchdb/pom.xml
similarity index 60%
copy from extensions-jvm/pom.xml
copy to extensions-jvm/couchdb/pom.xml
index c7d2420..5e3577e 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/couchdb/pom.xml
@@ -17,26 +17,24 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-parent</artifactId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-extensions-jvm</artifactId>
+    <artifactId>camel-quarkus-couchdb-parent</artifactId>
+    <name>Camel Quarkus :: CouchDB</name>
     <packaging>pom</packaging>
 
-    <name>Camel Quarkus :: Extensions JVM</name>
-    <description>Autogenerated extensions not yet tested in the native mode</description>
-
     <modules>
-        <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
-        <module>cassandraql</module>
-        <module>couchbase</module>
-        <module>elasticsearch-rest</module>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
     </modules>
-
 </project>
diff --git a/extensions-jvm/couchdb/runtime/pom.xml b/extensions-jvm/couchdb/runtime/pom.xml
new file mode 100644
index 0000000..509770b
--- /dev/null
+++ b/extensions-jvm/couchdb/runtime/pom.xml
@@ -0,0 +1,83 @@
+<?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-couchdb-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-couchdb</artifactId>
+    <name>Camel Quarkus :: CouchDB :: Runtime</name>
+    <description>The couchdb component is used for integrate with CouchDB databases.</description>
+
+    <properties>
+        <firstVersion>1.0.0-M6</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-couchdb</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <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/couchdb/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/couchdb/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..816ec80
--- /dev/null
+++ b/extensions-jvm/couchdb/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+---
+name: "CouchDB"
+description: "The couchdb component is used for integrate with CouchDB databases."
+metadata:
+  unlisted: true
+  keywords:
+  - "database"
+  - "nosql"
+  guide: "https://camel.apache.org/components/latest/couchdb-component.html"
+  categories:
+  - "integration"
+  status: "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index c7d2420..396840f 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -36,6 +36,7 @@
         <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
         <module>cassandraql</module>
         <module>couchbase</module>
+        <module>couchdb</module>
         <module>elasticsearch-rest</module>
     </modules>
 
diff --git a/poms/bom-deployment/pom.xml b/poms/bom-deployment/pom.xml
index cbc3bf8..8fa0fcf 100644
--- a/poms/bom-deployment/pom.xml
+++ b/poms/bom-deployment/pom.xml
@@ -211,6 +211,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-couchdb-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-csv-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index d003244..b105e7c 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -244,6 +244,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-couchdb</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-csv</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -892,6 +897,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-couchdb</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-csv</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>