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

[camel-quarkus] branch master updated (c1ad4e2 -> b988edf)

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 c1ad4e2  Velocity Support #837
     new 4f6c4ef  Shiro JVM support
     new 0775702  Ribbon JVM support
     new b988edf  JCache JVM support

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:
 catalog/pom.xml                                    | 39 +++++++++++++++++
 .../extensions/{aws-xray.adoc => jcache.adoc}      | 12 ++---
 .../extensions/{jasypt.adoc => ribbon.adoc}        | 12 ++---
 .../extensions/{jasypt.adoc => shiro.adoc}         | 12 ++---
 .../ROOT/partials/reference/components/jcache.adoc | 14 +++++-
 .../ROOT/partials/reference/others/ribbon.adoc     | 14 +++++-
 .../ROOT/partials/reference/others/shiro.adoc      | 14 +++++-
 extensions-jvm/{apns => jcache}/deployment/pom.xml |  8 ++--
 .../jcache/deployment/JcacheProcessor.java}        |  8 ++--
 .../{lucene => jcache}/integration-test/pom.xml    | 10 ++---
 .../component/jcache/it/JcacheResource.java}       | 20 ++++-----
 .../quarkus/component/jcache/it/JcacheTest.java}   |  8 ++--
 extensions-jvm/{atmos => jcache}/pom.xml           |  4 +-
 extensions-jvm/{jasypt => jcache}/runtime/pom.xml  | 10 ++---
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +--
 extensions-jvm/pom.xml                             |  3 ++
 extensions-jvm/{apns => ribbon}/deployment/pom.xml |  8 ++--
 .../ribbon/deployment/RibbonProcessor.java}        |  8 ++--
 .../{lucene => ribbon}/integration-test/pom.xml    | 10 ++---
 .../component/ribbon/it/RibbonResource.java}       | 14 +++---
 .../quarkus/component/ribbon/it/RibbonTest.java}   |  8 ++--
 extensions-jvm/{atmos => ribbon}/pom.xml           |  4 +-
 extensions-jvm/{jasypt => ribbon}/runtime/pom.xml  | 10 ++---
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +--
 extensions-jvm/{cbor => shiro}/deployment/pom.xml  |  8 ++--
 .../shiro/deployment/ShiroProcessor.java}          |  8 ++--
 .../{jt400 => shiro}/integration-test/pom.xml      | 10 ++---
 .../quarkus/component/shiro/it/ShiroResource.java} | 14 +++---
 .../quarkus/component/shiro/it/ShiroTest.java}     |  8 ++--
 extensions-jvm/{atmos => shiro}/pom.xml            |  4 +-
 extensions-jvm/{jasypt => shiro}/runtime/pom.xml   | 10 ++---
 .../main/resources/META-INF/quarkus-extension.yaml |  6 +--
 poms/bom/pom.xml                                   | 51 ++++++++++++++++++++++
 33 files changed, 255 insertions(+), 126 deletions(-)
 copy docs/modules/ROOT/pages/reference/extensions/{aws-xray.adoc => jcache.adoc} (66%)
 copy docs/modules/ROOT/pages/reference/extensions/{jasypt.adoc => ribbon.adoc} (69%)
 copy docs/modules/ROOT/pages/reference/extensions/{jasypt.adoc => shiro.adoc} (74%)
 copy extensions-jvm/{apns => jcache}/deployment/pom.xml (90%)
 copy extensions-jvm/{beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java => jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java} (88%)
 copy extensions-jvm/{lucene => jcache}/integration-test/pom.xml (91%)
 copy extensions-jvm/{lucene/integration-test/src/main/java/org/apache/camel/quarkus/component/lucene/it/LuceneResource.java => jcache/integration-test/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java} (75%)
 copy extensions-jvm/{asn1/integration-test/src/test/java/org/apache/camel/quarkus/component/asn1/it/Asn1Test.java => jcache/integration-test/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java} (86%)
 copy extensions-jvm/{atmos => jcache}/pom.xml (94%)
 copy extensions-jvm/{jasypt => jcache}/runtime/pom.xml (92%)
 copy extensions-jvm/{atomix => jcache}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (90%)
 copy extensions-jvm/{apns => ribbon}/deployment/pom.xml (90%)
 copy extensions-jvm/{beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java => ribbon/deployment/src/main/java/org/apache/camel/quarkus/component/ribbon/deployment/RibbonProcessor.java} (88%)
 copy extensions-jvm/{lucene => ribbon}/integration-test/pom.xml (91%)
 copy extensions-jvm/{jasypt/integration-test/src/main/java/org/apache/camel/quarkus/component/jasypt/it/JasyptResource.java => ribbon/integration-test/src/main/java/org/apache/camel/quarkus/component/ribbon/it/RibbonResource.java} (81%)
 copy extensions-jvm/{asn1/integration-test/src/test/java/org/apache/camel/quarkus/component/asn1/it/Asn1Test.java => ribbon/integration-test/src/test/java/org/apache/camel/quarkus/component/ribbon/it/RibbonTest.java} (86%)
 copy extensions-jvm/{atmos => ribbon}/pom.xml (94%)
 copy extensions-jvm/{jasypt => ribbon}/runtime/pom.xml (91%)
 copy extensions-jvm/{atomix => ribbon}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (90%)
 copy extensions-jvm/{cbor => shiro}/deployment/pom.xml (90%)
 copy extensions-jvm/{chunk/deployment/src/main/java/org/apache/camel/quarkus/component/chunk/deployment/ChunkProcessor.java => shiro/deployment/src/main/java/org/apache/camel/quarkus/component/shiro/deployment/ShiroProcessor.java} (88%)
 copy extensions-jvm/{jt400 => shiro}/integration-test/pom.xml (91%)
 copy extensions-jvm/{lra/integration-test/src/main/java/org/apache/camel/quarkus/component/lra/it/LraResource.java => shiro/integration-test/src/main/java/org/apache/camel/quarkus/component/shiro/it/ShiroResource.java} (81%)
 copy extensions-jvm/{dns/integration-test/src/test/java/org/apache/camel/quarkus/component/dns/it/DnsTest.java => shiro/integration-test/src/test/java/org/apache/camel/quarkus/component/shiro/it/ShiroTest.java} (86%)
 copy extensions-jvm/{atmos => shiro}/pom.xml (94%)
 copy extensions-jvm/{jasypt => shiro}/runtime/pom.xml (92%)
 copy extensions-jvm/{jasypt => shiro}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (92%)


[camel-quarkus] 03/03: JCache 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 b988edfa82faeb00998ac07d8d407981b05bbb7b
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Sep 25 16:16:06 2020 +0200

    JCache JVM support
---
 catalog/pom.xml                                    |  13 +++
 .../ROOT/pages/reference/extensions/jcache.adoc    |  33 +++++++
 .../ROOT/partials/reference/components/jcache.adoc |  14 ++-
 extensions-jvm/jcache/deployment/pom.xml           |  63 +++++++++++++
 .../jcache/deployment/JcacheProcessor.java         |  46 ++++++++++
 extensions-jvm/jcache/integration-test/pom.xml     | 100 +++++++++++++++++++++
 .../component/jcache/it/JcacheResource.java        |  51 +++++++++++
 .../quarkus/component/jcache/it/JcacheTest.java    |  34 +++++++
 extensions-jvm/jcache/pom.xml                      |  40 +++++++++
 extensions-jvm/jcache/runtime/pom.xml              |  94 +++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 +++++++
 extensions-jvm/pom.xml                             |   1 +
 poms/bom/pom.xml                                   |  15 ++++
 13 files changed, 535 insertions(+), 1 deletion(-)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 9542eca..5aefaed 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -1973,6 +1973,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-jcache</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jclouds</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/pages/reference/extensions/jcache.adoc b/docs/modules/ROOT/pages/reference/extensions/jcache.adoc
new file mode 100644
index 0000000..20b7cb1
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/jcache.adoc
@@ -0,0 +1,33 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+= JCache
+:cq-artifact-id: camel-quarkus-jcache
+:cq-native-supported: false
+:cq-status: Preview
+:cq-description: Perform caching operations against JSR107/JCache.
+:cq-deprecated: false
+:cq-jvm-since: 1.2.0
+:cq-native-since: n/a
+
+[.badges]
+[.badge-key]##JVM since##[.badge-supported]##1.2.0## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Perform caching operations against JSR107/JCache.
+
+== What's inside
+
+* https://camel.apache.org/components/latest/jcache-component.html[JCache component], URI syntax: `jcache:cacheName`
+
+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-jcache</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/partials/reference/components/jcache.adoc b/docs/modules/ROOT/partials/reference/components/jcache.adoc
index a509c1d..eb8baf5 100644
--- a/docs/modules/ROOT/partials/reference/components/jcache.adoc
+++ b/docs/modules/ROOT/partials/reference/components/jcache.adoc
@@ -1 +1,13 @@
-// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+:cq-artifact-id: camel-quarkus-jcache
+:cq-artifact-id-base: jcache
+:cq-native-supported: false
+:cq-status: Preview
+:cq-deprecated: false
+:cq-jvm-since: 1.2.0
+:cq-native-since: n/a
+:cq-camel-part-name: jcache
+:cq-camel-part-title: JCache
+:cq-camel-part-description: Perform caching operations against JSR107/JCache.
+:cq-extension-page-title: JCache
diff --git a/extensions-jvm/jcache/deployment/pom.xml b/extensions-jvm/jcache/deployment/pom.xml
new file mode 100644
index 0000000..3bd3edc
--- /dev/null
+++ b/extensions-jvm/jcache/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-jcache-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jcache-deployment</artifactId>
+    <name>Camel Quarkus :: JCache :: 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-jcache</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/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java b/extensions-jvm/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java
new file mode 100644
index 0000000..275b668
--- /dev/null
+++ b/extensions-jvm/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.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.jcache.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 JcacheProcessor {
+
+    private static final Logger LOG = Logger.getLogger(JcacheProcessor.class);
+    private static final String FEATURE = "camel-jcache";
+
+    @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/jcache/integration-test/pom.xml b/extensions-jvm/jcache/integration-test/pom.xml
new file mode 100644
index 0000000..2080cd3
--- /dev/null
+++ b/extensions-jvm/jcache/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jcache-integration-test</artifactId>
+    <name>Camel Quarkus :: JCache :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus JCache extension</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-jcache</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-jcache-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/jcache/integration-test/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java b/extensions-jvm/jcache/integration-test/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java
new file mode 100644
index 0000000..f1b98c0
--- /dev/null
+++ b/extensions-jvm/jcache/integration-test/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.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.jcache.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("/jcache")
+@ApplicationScoped
+public class JcacheResource {
+
+    private static final Logger LOG = Logger.getLogger(JcacheResource.class);
+
+    private static final String COMPONENT_JCACHE = "jcache";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/component/jcache")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadComponentJcache() throws Exception {
+        /* This is an autogenerated test */
+        if (context.getComponent(COMPONENT_JCACHE) != null) {
+            return Response.ok().build();
+        }
+        LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_JCACHE);
+        return Response.status(500, COMPONENT_JCACHE + " could not be loaded from the Camel context").build();
+    }
+}
diff --git a/extensions-jvm/jcache/integration-test/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java b/extensions-jvm/jcache/integration-test/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
new file mode 100644
index 0000000..1806724
--- /dev/null
+++ b/extensions-jvm/jcache/integration-test/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.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.jcache.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class JcacheTest {
+
+    @Test
+    public void loadComponentJcache() {
+        /* A simple autogenerated test */
+        RestAssured.get("/jcache/load/component/jcache")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/jcache/pom.xml b/extensions-jvm/jcache/pom.xml
new file mode 100644
index 0000000..7582351
--- /dev/null
+++ b/extensions-jvm/jcache/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.2.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jcache-parent</artifactId>
+    <name>Camel Quarkus :: JCache</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/jcache/runtime/pom.xml b/extensions-jvm/jcache/runtime/pom.xml
new file mode 100644
index 0000000..5521264
--- /dev/null
+++ b/extensions-jvm/jcache/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-jcache-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jcache</artifactId>
+    <name>Camel Quarkus :: JCache :: Runtime</name>
+    <description>Perform caching operations against JSR107/JCache.</description>
+
+    <properties>
+        <camel.quarkus.jvmSince>1.2.0</camel.quarkus.jvmSince>
+    </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-jcache</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/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..108ffe4
--- /dev/null
+++ b/extensions-jvm/jcache/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 JCache"
+description: "Perform caching operations against JSR107/JCache"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/jcache.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 5955047..c7991d6 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -89,6 +89,7 @@
         <module>irc</module>
         <module>jasypt</module>
         <module>jbpm</module>
+        <module>jcache</module>
         <module>jclouds</module>
         <module>jcr</module>
         <module>jgroups</module>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 3e4899e..3826390 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1080,6 +1080,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-jcache</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-jclouds</artifactId>
                 <version>${camel.version}</version>
                 <exclusions>
@@ -3460,6 +3465,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-jcache</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-jcache-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-jclouds</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/03: Shiro 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 4f6c4efc98fcfa8bd14fbe9e1f8278e0b8f4333b
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Sep 25 15:49:42 2020 +0200

    Shiro JVM support
---
 catalog/pom.xml                                    |  13 +++
 .../ROOT/pages/reference/extensions/shiro.adoc     |  33 +++++++
 .../ROOT/partials/reference/others/shiro.adoc      |  14 ++-
 extensions-jvm/pom.xml                             |   1 +
 extensions-jvm/shiro/deployment/pom.xml            |  63 +++++++++++++
 .../component/shiro/deployment/ShiroProcessor.java |  46 ++++++++++
 extensions-jvm/shiro/integration-test/pom.xml      | 100 +++++++++++++++++++++
 .../quarkus/component/shiro/it/ShiroResource.java  |  48 ++++++++++
 .../quarkus/component/shiro/it/ShiroTest.java      |  34 +++++++
 extensions-jvm/shiro/pom.xml                       |  40 +++++++++
 extensions-jvm/shiro/runtime/pom.xml               |  94 +++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 +++++++
 poms/bom/pom.xml                                   |  15 ++++
 13 files changed, 532 insertions(+), 1 deletion(-)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 35b0ab6..94ebf8d 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -3130,6 +3130,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-shiro</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-sip</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/pages/reference/extensions/shiro.adoc b/docs/modules/ROOT/pages/reference/extensions/shiro.adoc
new file mode 100644
index 0000000..386b160
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/shiro.adoc
@@ -0,0 +1,33 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+= Shiro
+:cq-artifact-id: camel-quarkus-shiro
+:cq-native-supported: false
+:cq-status: Preview
+:cq-description: Security using Shiro
+:cq-deprecated: false
+:cq-jvm-since: 1.2.0
+:cq-native-since: n/a
+
+[.badges]
+[.badge-key]##JVM since##[.badge-supported]##1.2.0## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Security using Shiro
+
+== What's inside
+
+* https://camel.apache.org/components/latest/others/shiro.html[Shiro]
+
+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-shiro</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/partials/reference/others/shiro.adoc b/docs/modules/ROOT/partials/reference/others/shiro.adoc
index a509c1d..730a8a1 100644
--- a/docs/modules/ROOT/partials/reference/others/shiro.adoc
+++ b/docs/modules/ROOT/partials/reference/others/shiro.adoc
@@ -1 +1,13 @@
-// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+:cq-artifact-id: camel-quarkus-shiro
+:cq-artifact-id-base: shiro
+:cq-native-supported: false
+:cq-status: Preview
+:cq-deprecated: false
+:cq-jvm-since: 1.2.0
+:cq-native-since: n/a
+:cq-camel-part-name: shiro
+:cq-camel-part-title: Shiro
+:cq-camel-part-description: Security using Shiro
+:cq-extension-page-title: Shiro
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 17e0dd6..68a4926 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -128,6 +128,7 @@
         <module>saga</module>
         <module>saxon</module>
         <module>schematron</module>
+        <module>shiro</module>
         <module>sip</module>
         <module>smpp</module>
         <module>snmp</module>
diff --git a/extensions-jvm/shiro/deployment/pom.xml b/extensions-jvm/shiro/deployment/pom.xml
new file mode 100644
index 0000000..9bc2e07
--- /dev/null
+++ b/extensions-jvm/shiro/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-shiro-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-shiro-deployment</artifactId>
+    <name>Camel Quarkus :: Shiro :: 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-shiro</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/shiro/deployment/src/main/java/org/apache/camel/quarkus/component/shiro/deployment/ShiroProcessor.java b/extensions-jvm/shiro/deployment/src/main/java/org/apache/camel/quarkus/component/shiro/deployment/ShiroProcessor.java
new file mode 100644
index 0000000..434e868
--- /dev/null
+++ b/extensions-jvm/shiro/deployment/src/main/java/org/apache/camel/quarkus/component/shiro/deployment/ShiroProcessor.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.shiro.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 ShiroProcessor {
+
+    private static final Logger LOG = Logger.getLogger(ShiroProcessor.class);
+    private static final String FEATURE = "camel-shiro";
+
+    @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/shiro/integration-test/pom.xml b/extensions-jvm/shiro/integration-test/pom.xml
new file mode 100644
index 0000000..c73bcea
--- /dev/null
+++ b/extensions-jvm/shiro/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-shiro-integration-test</artifactId>
+    <name>Camel Quarkus :: Shiro :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Shiro extension</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-shiro</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-shiro-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/shiro/integration-test/src/main/java/org/apache/camel/quarkus/component/shiro/it/ShiroResource.java b/extensions-jvm/shiro/integration-test/src/main/java/org/apache/camel/quarkus/component/shiro/it/ShiroResource.java
new file mode 100644
index 0000000..be8128c
--- /dev/null
+++ b/extensions-jvm/shiro/integration-test/src/main/java/org/apache/camel/quarkus/component/shiro/it/ShiroResource.java
@@ -0,0 +1,48 @@
+/*
+ * 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.shiro.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("/shiro")
+@ApplicationScoped
+public class ShiroResource {
+
+    private static final Logger LOG = Logger.getLogger(ShiroResource.class);
+
+    private static final String OTHER_SHIRO = "shiro";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/other/shiro")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadOtherShiro() throws Exception {
+        /* This is an autogenerated test */
+        /* No way to test a Camel artifact of kind "other" */
+        return Response.ok().build();
+    }
+}
diff --git a/extensions-jvm/shiro/integration-test/src/test/java/org/apache/camel/quarkus/component/shiro/it/ShiroTest.java b/extensions-jvm/shiro/integration-test/src/test/java/org/apache/camel/quarkus/component/shiro/it/ShiroTest.java
new file mode 100644
index 0000000..b2dd9f8
--- /dev/null
+++ b/extensions-jvm/shiro/integration-test/src/test/java/org/apache/camel/quarkus/component/shiro/it/ShiroTest.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.shiro.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class ShiroTest {
+
+    @Test
+    public void loadOtherShiro() {
+        /* A simple autogenerated test */
+        RestAssured.get("/shiro/load/other/shiro")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/shiro/pom.xml b/extensions-jvm/shiro/pom.xml
new file mode 100644
index 0000000..f3bb2d3
--- /dev/null
+++ b/extensions-jvm/shiro/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.2.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-shiro-parent</artifactId>
+    <name>Camel Quarkus :: Shiro</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/shiro/runtime/pom.xml b/extensions-jvm/shiro/runtime/pom.xml
new file mode 100644
index 0000000..6e3f15c
--- /dev/null
+++ b/extensions-jvm/shiro/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-shiro-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-shiro</artifactId>
+    <name>Camel Quarkus :: Shiro :: Runtime</name>
+    <description>Security using Shiro</description>
+
+    <properties>
+        <camel.quarkus.jvmSince>1.2.0</camel.quarkus.jvmSince>
+    </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-shiro</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/shiro/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/shiro/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..474ba52
--- /dev/null
+++ b/extensions-jvm/shiro/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 Shiro"
+description: "Security using Shiro"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/shiro.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 90f3726..5f6e413 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1646,6 +1646,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-shiro</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-sip</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -4334,6 +4339,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-shiro</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-shiro-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-sip</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 02/03: Ribbon 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 0775702f187900d2f7182426c445f154e48a93a2
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Sep 25 15:57:55 2020 +0200

    Ribbon JVM support
---
 catalog/pom.xml                                    |  13 +++
 .../ROOT/pages/reference/extensions/ribbon.adoc    |  33 +++++++
 .../ROOT/partials/reference/others/ribbon.adoc     |  14 ++-
 extensions-jvm/pom.xml                             |   1 +
 extensions-jvm/ribbon/deployment/pom.xml           |  63 +++++++++++++
 .../ribbon/deployment/RibbonProcessor.java         |  46 ++++++++++
 extensions-jvm/ribbon/integration-test/pom.xml     | 100 +++++++++++++++++++++
 .../component/ribbon/it/RibbonResource.java        |  48 ++++++++++
 .../quarkus/component/ribbon/it/RibbonTest.java    |  34 +++++++
 extensions-jvm/ribbon/pom.xml                      |  40 +++++++++
 extensions-jvm/ribbon/runtime/pom.xml              |  94 +++++++++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  32 +++++++
 poms/bom/pom.xml                                   |  21 +++++
 13 files changed, 538 insertions(+), 1 deletion(-)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index 94ebf8d..9542eca 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -2987,6 +2987,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-ribbon</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-robotframework</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/docs/modules/ROOT/pages/reference/extensions/ribbon.adoc b/docs/modules/ROOT/pages/reference/extensions/ribbon.adoc
new file mode 100644
index 0000000..ecbb33a
--- /dev/null
+++ b/docs/modules/ROOT/pages/reference/extensions/ribbon.adoc
@@ -0,0 +1,33 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+= Ribbon
+:cq-artifact-id: camel-quarkus-ribbon
+:cq-native-supported: false
+:cq-status: Preview
+:cq-description: Using Netflix Ribbon for client side load balancing
+:cq-deprecated: false
+:cq-jvm-since: 1.2.0
+:cq-native-since: n/a
+
+[.badges]
+[.badge-key]##JVM since##[.badge-supported]##1.2.0## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+
+Using Netflix Ribbon for client side load balancing
+
+== What's inside
+
+* https://camel.apache.org/components/latest/others/ribbon.html[Ribbon]
+
+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-ribbon</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/partials/reference/others/ribbon.adoc b/docs/modules/ROOT/partials/reference/others/ribbon.adoc
index a509c1d..af55164 100644
--- a/docs/modules/ROOT/partials/reference/others/ribbon.adoc
+++ b/docs/modules/ROOT/partials/reference/others/ribbon.adoc
@@ -1 +1,13 @@
-// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+:cq-artifact-id: camel-quarkus-ribbon
+:cq-artifact-id-base: ribbon
+:cq-native-supported: false
+:cq-status: Preview
+:cq-deprecated: false
+:cq-jvm-since: 1.2.0
+:cq-native-since: n/a
+:cq-camel-part-name: ribbon
+:cq-camel-part-title: Ribbon
+:cq-camel-part-description: Using Netflix Ribbon for client side load balancing
+:cq-extension-page-title: Ribbon
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 68a4926..5955047 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -124,6 +124,7 @@
         <module>pubnub</module>
         <module>pulsar</module>
         <module>quickfix</module>
+        <module>ribbon</module>
         <module>robotframework</module>
         <module>saga</module>
         <module>saxon</module>
diff --git a/extensions-jvm/ribbon/deployment/pom.xml b/extensions-jvm/ribbon/deployment/pom.xml
new file mode 100644
index 0000000..0efdaeb
--- /dev/null
+++ b/extensions-jvm/ribbon/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-ribbon-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-ribbon-deployment</artifactId>
+    <name>Camel Quarkus :: Ribbon :: 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-ribbon</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/ribbon/deployment/src/main/java/org/apache/camel/quarkus/component/ribbon/deployment/RibbonProcessor.java b/extensions-jvm/ribbon/deployment/src/main/java/org/apache/camel/quarkus/component/ribbon/deployment/RibbonProcessor.java
new file mode 100644
index 0000000..9627f73
--- /dev/null
+++ b/extensions-jvm/ribbon/deployment/src/main/java/org/apache/camel/quarkus/component/ribbon/deployment/RibbonProcessor.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.ribbon.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 RibbonProcessor {
+
+    private static final Logger LOG = Logger.getLogger(RibbonProcessor.class);
+    private static final String FEATURE = "camel-ribbon";
+
+    @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/ribbon/integration-test/pom.xml b/extensions-jvm/ribbon/integration-test/pom.xml
new file mode 100644
index 0000000..d61cfca
--- /dev/null
+++ b/extensions-jvm/ribbon/integration-test/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-ribbon-integration-test</artifactId>
+    <name>Camel Quarkus :: Ribbon :: Integration Test</name>
+    <description>Integration tests for Camel Quarkus Ribbon extension</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-ribbon</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-ribbon-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions-jvm/ribbon/integration-test/src/main/java/org/apache/camel/quarkus/component/ribbon/it/RibbonResource.java b/extensions-jvm/ribbon/integration-test/src/main/java/org/apache/camel/quarkus/component/ribbon/it/RibbonResource.java
new file mode 100644
index 0000000..c5efc1f
--- /dev/null
+++ b/extensions-jvm/ribbon/integration-test/src/main/java/org/apache/camel/quarkus/component/ribbon/it/RibbonResource.java
@@ -0,0 +1,48 @@
+/*
+ * 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.ribbon.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("/ribbon")
+@ApplicationScoped
+public class RibbonResource {
+
+    private static final Logger LOG = Logger.getLogger(RibbonResource.class);
+
+    private static final String OTHER_RIBBON = "ribbon";
+    @Inject
+    CamelContext context;
+
+    @Path("/load/other/ribbon")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response loadOtherRibbon() throws Exception {
+        /* This is an autogenerated test */
+        /* No way to test a Camel artifact of kind "other" */
+        return Response.ok().build();
+    }
+}
diff --git a/extensions-jvm/ribbon/integration-test/src/test/java/org/apache/camel/quarkus/component/ribbon/it/RibbonTest.java b/extensions-jvm/ribbon/integration-test/src/test/java/org/apache/camel/quarkus/component/ribbon/it/RibbonTest.java
new file mode 100644
index 0000000..44247f7
--- /dev/null
+++ b/extensions-jvm/ribbon/integration-test/src/test/java/org/apache/camel/quarkus/component/ribbon/it/RibbonTest.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.ribbon.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class RibbonTest {
+
+    @Test
+    public void loadOtherRibbon() {
+        /* A simple autogenerated test */
+        RestAssured.get("/ribbon/load/other/ribbon")
+                .then()
+                .statusCode(200);
+    }
+
+}
diff --git a/extensions-jvm/ribbon/pom.xml b/extensions-jvm/ribbon/pom.xml
new file mode 100644
index 0000000..a6519fb
--- /dev/null
+++ b/extensions-jvm/ribbon/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.2.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-ribbon-parent</artifactId>
+    <name>Camel Quarkus :: Ribbon</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+        <module>integration-test</module>
+    </modules>
+</project>
diff --git a/extensions-jvm/ribbon/runtime/pom.xml b/extensions-jvm/ribbon/runtime/pom.xml
new file mode 100644
index 0000000..261d72b
--- /dev/null
+++ b/extensions-jvm/ribbon/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-ribbon-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-ribbon</artifactId>
+    <name>Camel Quarkus :: Ribbon :: Runtime</name>
+    <description>Using Netflix Ribbon for client side load balancing</description>
+
+    <properties>
+        <camel.quarkus.jvmSince>1.2.0</camel.quarkus.jvmSince>
+    </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-ribbon</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/ribbon/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/ribbon/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..269a548
--- /dev/null
+++ b/extensions-jvm/ribbon/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 Ribbon"
+description: "Using Netflix Ribbon for client side load balancing"
+metadata:
+  unlisted: true
+  guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/ribbon.html"
+  categories:
+  - "integration"
+  status:
+  - "preview"
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 5f6e413..3e4899e 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1581,6 +1581,17 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-ribbon</artifactId>
+                <version>${camel.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>com.google.code.findbugs</groupId>
+                        <artifactId>jsr305</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-robotframework</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -4229,6 +4240,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-ribbon</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-ribbon-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-robotframework</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>