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/11/20 12:38:02 UTC

[camel-quarkus] branch master updated (9e94ba4 -> 181d86b)

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 9e94ba4  Fix debezium itest pom dependencies to deployments
     new 1467092  Remove superfluous quarkus-maven-plugin:build invocation that we have defined in camel-quarkus-build-parent-it anyway
     new d8e024f  Leverage Quarkus plugin's generate-code mojo instead of protobuf-maven-plugin to generate protobuf stubs
     new 181d86b  Protobuf dataformat native support #789

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:
 .../ROOT/pages/reference/extensions/grpc.adoc      |  27 ++++++
 .../ROOT/pages/reference/extensions/protobuf.adoc  |  37 +++++++-
 .../partials/reference/dataformats/protobuf.adoc   |   6 +-
 extensions-jvm/pom.xml                             |   1 -
 extensions-jvm/protobuf/integration-test/pom.xml   | 105 ---------------------
 .../component/grpc/deployment/GrpcProcessor.java   |   7 ++
 .../grpc/runtime/src/main/doc/configuration.adoc   |  27 ++++++
 .../runtime/QuarkusBindableServiceFactory.java     |   1 -
 extensions/pom.xml                                 |   1 +
 .../protobuf/deployment/pom.xml                    |   6 ++
 .../protobuf/deployment/ProtobufProcessor.java     |  35 ++++---
 {extensions-jvm => extensions}/protobuf/pom.xml    |   1 -
 .../protobuf/runtime/pom.xml                       |   2 +-
 .../runtime/src/main/doc/configuration.adoc        |  25 +++++
 .../main/resources/META-INF/quarkus-extension.yaml |   0
 integration-tests/grpc/pom.xml                     |  63 +------------
 integration-tests/nagios/pom.xml                   |  16 ----
 integration-tests/pom.xml                          |   1 +
 integration-tests/{mustache => protobuf}/pom.xml   |  45 +++++----
 .../component/protobuf/it/ProtobufResource.java    |   0
 .../component/protobuf/it/ProtobufRoute.java       |   0
 .../protobuf}/src/main/proto/addressbook.proto     |   0
 .../quarkus/component/protobuf/it/ProtobufIT.java} |   4 +-
 .../component/protobuf/it/ProtobufTest.java        |   0
 integration-tests/saga/pom.xml                     |  16 ----
 pom.xml                                            |   2 -
 poms/build-parent-it/pom.xml                       |   2 +
 poms/build-parent/pom.xml                          |  10 --
 tooling/scripts/test-categories.yaml               |   1 +
 29 files changed, 188 insertions(+), 253 deletions(-)
 delete mode 100644 extensions-jvm/protobuf/integration-test/pom.xml
 rename {extensions-jvm => extensions}/protobuf/deployment/pom.xml (94%)
 rename {extensions-jvm => extensions}/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java (53%)
 rename {extensions-jvm => extensions}/protobuf/pom.xml (97%)
 rename {extensions-jvm => extensions}/protobuf/runtime/pom.xml (98%)
 create mode 100644 extensions/protobuf/runtime/src/main/doc/configuration.adoc
 rename {extensions-jvm => extensions}/protobuf/runtime/src/main/resources/META-INF/quarkus-extension.yaml (100%)
 copy integration-tests/{mustache => protobuf}/pom.xml (77%)
 rename {extensions-jvm/protobuf/integration-test => integration-tests/protobuf}/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufResource.java (100%)
 rename {extensions-jvm/protobuf/integration-test => integration-tests/protobuf}/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java (100%)
 rename {extensions-jvm/protobuf/integration-test => integration-tests/protobuf}/src/main/proto/addressbook.proto (100%)
 copy integration-tests/{amqp/src/test/java/org/apache/camel/quarkus/component/amqp/it/AmqpIT.java => protobuf/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufIT.java} (90%)
 rename {extensions-jvm/protobuf/integration-test => integration-tests/protobuf}/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufTest.java (100%)


[camel-quarkus] 01/03: Remove superfluous quarkus-maven-plugin:build invocation that we have defined in camel-quarkus-build-parent-it anyway

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 1467092c0f789e917e3fecedc30bc2d7fb961668
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Nov 19 14:38:06 2020 +0100

    Remove superfluous quarkus-maven-plugin:build invocation that we have
    defined in camel-quarkus-build-parent-it anyway
---
 integration-tests/nagios/pom.xml | 16 ----------------
 integration-tests/saga/pom.xml   | 16 ----------------
 2 files changed, 32 deletions(-)

diff --git a/integration-tests/nagios/pom.xml b/integration-tests/nagios/pom.xml
index c93269d..c28f1c2 100644
--- a/integration-tests/nagios/pom.xml
+++ b/integration-tests/nagios/pom.xml
@@ -94,22 +94,6 @@
         </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>
-
     <profiles>
         <profile>
             <id>native</id>
diff --git a/integration-tests/saga/pom.xml b/integration-tests/saga/pom.xml
index d551896..2491742 100644
--- a/integration-tests/saga/pom.xml
+++ b/integration-tests/saga/pom.xml
@@ -115,22 +115,6 @@
         </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>
-
     <profiles>
         <profile>
             <id>native</id>


[camel-quarkus] 02/03: Leverage Quarkus plugin's generate-code mojo instead of protobuf-maven-plugin to generate protobuf stubs

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 d8e024fcb616ab7e6a555b5d9acc369c02c05862
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Nov 19 14:34:00 2020 +0100

    Leverage Quarkus plugin's generate-code mojo instead of
    protobuf-maven-plugin to generate protobuf stubs
---
 .../ROOT/pages/reference/extensions/grpc.adoc      | 27 ++++++++++
 .../component/grpc/deployment/GrpcProcessor.java   |  7 +++
 .../grpc/runtime/src/main/doc/configuration.adoc   | 27 ++++++++++
 .../runtime/QuarkusBindableServiceFactory.java     |  1 -
 integration-tests/grpc/pom.xml                     | 63 ++--------------------
 pom.xml                                            |  2 -
 poms/build-parent-it/pom.xml                       |  2 +
 poms/build-parent/pom.xml                          | 10 ----
 8 files changed, 67 insertions(+), 72 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/grpc.adoc b/docs/modules/ROOT/pages/reference/extensions/grpc.adoc
index b81be3f..4f646ef 100644
--- a/docs/modules/ROOT/pages/reference/extensions/grpc.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/grpc.adoc
@@ -42,3 +42,30 @@ endpoint configuration host / port mirror the Quarkus gRPC host / port property
 
 The full list of Quarkus gRPC configuration options can be found at the https://quarkus.io/guides/grpc-service-implementation#server-configuration[Quarkus gRPC guide].
 
+Use the `generate-code` goal of `quarkus-maven-plugin` to generate Java classes from your `*.proto`
+service and message definitions stored in the `src/main/proto` directory:
+
+[source,xml]
+----
+<build>
+    <plugins>
+        <plugin>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-maven-plugin</artifactId>
+            <executions>
+                <execution>
+                    <goals>
+                        <goal>generate-code</goal>
+                        <goal>build</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+</build>
+----
+
+You may want to check the https://github.com/apache/camel-quarkus/tree/master/integration-tests/grpc[integration test]
+in our source tree as an example.
+
+
diff --git a/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java b/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java
index 9ea7dda..b752cbe 100644
--- a/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java
+++ b/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java
@@ -125,6 +125,13 @@ class GrpcProcessor {
             if (!Modifier.isAbstract(service.flags())) {
                 continue;
             }
+            if (service.name().withoutPackagePrefix().startsWith("Mutiny")) {
+                /* The generate-code goal of quarkus-maven-plugin generates also Mutiny service that we do not use
+                 * Not skipping it here results in randomly registering the Mutiny one or the right one.
+                 * In case the Mutiny service one is registered, the client throws something like
+                 * io.grpc.StatusRuntimeException: UNIMPLEMENTED */
+                continue;
+            }
 
             String superClassName = service.name().toString();
             String generatedClassName = superClassName + "QuarkusMethodHandler";
diff --git a/extensions/grpc/runtime/src/main/doc/configuration.adoc b/extensions/grpc/runtime/src/main/doc/configuration.adoc
index f903be5..f02957e 100644
--- a/extensions/grpc/runtime/src/main/doc/configuration.adoc
+++ b/extensions/grpc/runtime/src/main/doc/configuration.adoc
@@ -4,3 +4,30 @@ and `quarkus.grpc.server.port` and thus the Camel gRPC endpoint configuration fo
 endpoint configuration host / port mirror the Quarkus gRPC host / port property values to avoid confusion and ambiguity.
 
 The full list of Quarkus gRPC configuration options can be found at the https://quarkus.io/guides/grpc-service-implementation#server-configuration[Quarkus gRPC guide].
+
+Use the `generate-code` goal of `quarkus-maven-plugin` to generate Java classes from your `*.proto`
+service and message definitions stored in the `src/main/proto` directory:
+
+[source,xml]
+----
+<build>
+    <plugins>
+        <plugin>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-maven-plugin</artifactId>
+            <executions>
+                <execution>
+                    <goals>
+                        <goal>generate-code</goal>
+                        <goal>build</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+</build>
+----
+
+You may want to check the https://github.com/apache/camel-quarkus/tree/master/integration-tests/grpc[integration test]
+in our source tree as an example.
+
diff --git a/extensions/grpc/runtime/src/main/java/org/apache/camel/quarkus/grpc/runtime/QuarkusBindableServiceFactory.java b/extensions/grpc/runtime/src/main/java/org/apache/camel/quarkus/grpc/runtime/QuarkusBindableServiceFactory.java
index 7ffd3fd..6f48f5c 100644
--- a/extensions/grpc/runtime/src/main/java/org/apache/camel/quarkus/grpc/runtime/QuarkusBindableServiceFactory.java
+++ b/extensions/grpc/runtime/src/main/java/org/apache/camel/quarkus/grpc/runtime/QuarkusBindableServiceFactory.java
@@ -56,7 +56,6 @@ public class QuarkusBindableServiceFactory implements BindableServiceFactory {
                 .findFirst()
                 .orElseThrow(() -> new IllegalStateException(
                         "Unable to find generated class for service " + endpoint.getServiceName()));
-
         bindableService.setMethodHandler(new GrpcMethodHandler(consumer));
         return bindableService;
     }
diff --git a/integration-tests/grpc/pom.xml b/integration-tests/grpc/pom.xml
index ebd8495..884fb95 100644
--- a/integration-tests/grpc/pom.xml
+++ b/integration-tests/grpc/pom.xml
@@ -92,70 +92,15 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>kr.motd.maven</groupId>
-                <artifactId>os-maven-plugin</artifactId>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
                 <executions>
                     <execution>
-                        <phase>initialize</phase>
+                        <id>quarkus-generate-code</id>
                         <goals>
-                            <goal>detect</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.gmaven</groupId>
-                <artifactId>groovy-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <!-- gRPC is managed in Quarkus BOM but we still need ${grpc.version} for the protobuf-maven-plugin bellow -->
-                        <!-- To solve that we parse the Quarkus BOM POM and set the grpc.version property dynamically -->
-                        <!-- instead of hardcoding it -->
-                        <id>set-grpc-version-property</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>execute</goal>
-                        </goals>
-                        <configuration>
-                            <properties>
-                                <localRepository>${settings.localRepository}</localRepository>
-                                <quarkusVersion>${quarkus.version}</quarkusVersion>
-                            </properties>
-                            <source>
-                                import java.nio.file.Path
-                                import java.nio.file.Paths
-                                import java.nio.file.Files
-                                final Path localMavenRepoPath = Paths.get(properties['localRepository'])
-                                final Path quarkusBomPath = localMavenRepoPath.resolve('io/quarkus/quarkus-bom/' + properties['quarkusVersion'] + '/quarkus-bom-' + properties['quarkusVersion'] + '.pom')
-                                if (!Files.exists(quarkusBomPath)) {
-                                    throw new IllegalStateException(quarkusBomPath + ' should exist')
-                                }
-                                def pomProject = new XmlParser().parseText(quarkusBomPath.getText('UTF-8'))
-                                final String grpcVersion = pomProject.properties.'grpc.version'.text()
-                                println 'setting grpc.version = ' + grpcVersion + ' as found in Quarkus BOM'
-                                project.properties['grpc.version'] = grpcVersion
-                            </source>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.xolstice.maven.plugins</groupId>
-                <artifactId>protobuf-maven-plugin</artifactId>
-                <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>compile</goal>
-                            <goal>compile-custom</goal>
+                            <goal>generate-code</goal>
                         </goals>
                         <phase>generate-sources</phase>
-                        <configuration>
-                            <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
-                            <pluginId>grpc-java</pluginId>
-                            <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
-                            <checkStaleness>true</checkStaleness>
-                        </configuration>
                     </execution>
                 </executions>
             </plugin>
diff --git a/pom.xml b/pom.xml
index 7db7fa9..6afd688 100644
--- a/pom.xml
+++ b/pom.xml
@@ -149,9 +149,7 @@
         <maven-shade-plugin.version>3.2.4</maven-shade-plugin.version>
         <!-- NOTE: We pin to this version due to https://github.com/apache/camel-quarkus/issues/723 -->
         <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
-        <os-maven-plugin.version>1.6.2</os-maven-plugin.version>
         <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
-        <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
         <protobuf-java.version>3.11.0</protobuf-java.version>
         <proto-google-common-protos.version>1.17.0</proto-google-common-protos.version>
         <rpkgtests-maven-plugin.version>0.9.0</rpkgtests-maven-plugin.version>
diff --git a/poms/build-parent-it/pom.xml b/poms/build-parent-it/pom.xml
index 93f8822..c568449 100644
--- a/poms/build-parent-it/pom.xml
+++ b/poms/build-parent-it/pom.xml
@@ -122,9 +122,11 @@
                         <artifactId>quarkus-maven-plugin</artifactId>
                         <executions>
                             <execution>
+                                <id>quarkus-build</id>
                                 <goals>
                                     <goal>build</goal>
                                 </goals>
+                                <phase>package</phase>
                             </execution>
                         </executions>
                     </plugin>
diff --git a/poms/build-parent/pom.xml b/poms/build-parent/pom.xml
index 57666c8..a8bd4ae 100644
--- a/poms/build-parent/pom.xml
+++ b/poms/build-parent/pom.xml
@@ -71,11 +71,6 @@
                     </executions>
                 </plugin>
                 <plugin>
-                    <groupId>kr.motd.maven</groupId>
-                    <artifactId>os-maven-plugin</artifactId>
-                    <version>${os-maven-plugin.version}</version>
-                </plugin>
-                <plugin>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-maven-plugin</artifactId>
                     <version>${project.version}</version>
@@ -95,11 +90,6 @@
                     <version>${jandex-maven-plugin.version}</version>
                 </plugin>
                 <plugin>
-                    <groupId>org.xolstice.maven.plugins</groupId>
-                    <artifactId>protobuf-maven-plugin</artifactId>
-                    <version>${protobuf-maven-plugin.version}</version>
-                </plugin>
-                <plugin>
                     <groupId>net.revelc.code.formatter</groupId>
                     <artifactId>formatter-maven-plugin</artifactId>
                     <version>${formatter-maven-plugin.version}</version>


[camel-quarkus] 03/03: Protobuf dataformat native support #789

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 181d86bf89c6835a308f77e6b6d3801e72dcbea5
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Nov 20 11:39:58 2020 +0100

    Protobuf dataformat native support #789
---
 .../ROOT/pages/reference/extensions/protobuf.adoc  | 37 +++++++++--
 .../partials/reference/dataformats/protobuf.adoc   |  6 +-
 extensions-jvm/pom.xml                             |  1 -
 extensions/pom.xml                                 |  1 +
 .../protobuf/deployment/pom.xml                    |  6 ++
 .../protobuf/deployment/ProtobufProcessor.java     | 35 +++++++----
 {extensions-jvm => extensions}/protobuf/pom.xml    |  1 -
 .../protobuf/runtime/pom.xml                       |  2 +-
 .../runtime/src/main/doc/configuration.adoc        | 25 ++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  0
 integration-tests/pom.xml                          |  1 +
 .../protobuf}/pom.xml                              | 73 +++++++++++-----------
 .../component/protobuf/it/ProtobufResource.java    |  0
 .../component/protobuf/it/ProtobufRoute.java       |  0
 .../protobuf}/src/main/proto/addressbook.proto     |  0
 .../quarkus/component/protobuf/it/ProtobufIT.java  | 17 +----
 .../component/protobuf/it/ProtobufTest.java        |  0
 tooling/scripts/test-categories.yaml               |  1 +
 18 files changed, 134 insertions(+), 72 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/protobuf.adoc b/docs/modules/ROOT/pages/reference/extensions/protobuf.adoc
index 01cba4b..78c4894 100644
--- a/docs/modules/ROOT/pages/reference/extensions/protobuf.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/protobuf.adoc
@@ -3,15 +3,15 @@
 = Protobuf
 :page-aliases: extensions/protobuf.adoc
 :cq-artifact-id: camel-quarkus-protobuf
-:cq-native-supported: false
-:cq-status: Preview
+:cq-native-supported: true
+:cq-status: Stable
 :cq-description: Serialize and deserialize Java objects using Google's Protocol buffers.
 :cq-deprecated: false
 :cq-jvm-since: 1.0.0
-:cq-native-since: 1.0.0
+:cq-native-since: 1.5.0
 
 [.badges]
-[.badge-key]##JVM since##[.badge-supported]##1.0.0## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+[.badge-key]##JVM since##[.badge-supported]##1.0.0## [.badge-key]##Native since##[.badge-supported]##1.5.0##
 
 Serialize and deserialize Java objects using Google's Protocol buffers.
 
@@ -32,3 +32,32 @@ Please refer to the above link for usage and configuration details.
 ----
 
 Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications.
+
+== Additional Camel Quarkus configuration
+
+Use the `generate-code` goal of `quarkus-maven-plugin` to generate Java classes from your `*.proto`
+service and message definitions stored in the `src/main/proto` directory:
+
+[source,xml]
+----
+<build>
+    <plugins>
+        <plugin>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-maven-plugin</artifactId>
+            <executions>
+                <execution>
+                    <goals>
+                        <goal>generate-code</goal>
+                        <goal>build</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+</build>
+----
+
+You may want to check the https://github.com/apache/camel-quarkus/tree/master/integration-tests/protobuf[integration test]
+in our source tree as an example.
+
diff --git a/docs/modules/ROOT/partials/reference/dataformats/protobuf.adoc b/docs/modules/ROOT/partials/reference/dataformats/protobuf.adoc
index d18a245..7910b92 100644
--- a/docs/modules/ROOT/partials/reference/dataformats/protobuf.adoc
+++ b/docs/modules/ROOT/partials/reference/dataformats/protobuf.adoc
@@ -2,11 +2,11 @@
 // This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
 :cq-artifact-id: camel-quarkus-protobuf
 :cq-artifact-id-base: protobuf
-:cq-native-supported: false
-:cq-status: Preview
+:cq-native-supported: true
+:cq-status: Stable
 :cq-deprecated: false
 :cq-jvm-since: 1.0.0
-:cq-native-since: 1.0.0
+:cq-native-since: 1.5.0
 :cq-camel-part-name: protobuf
 :cq-camel-part-title: Protobuf
 :cq-camel-part-description: Serialize and deserialize Java objects using Google's Protocol buffers.
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 094e3db..7c524d1 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -111,7 +111,6 @@
         <module>openstack</module>
         <module>optaplanner</module>
         <module>printer</module>
-        <module>protobuf</module>
         <module>pubnub</module>
         <module>pulsar</module>
         <module>quickfix</module>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 5a26abe..4a4e92e 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -167,6 +167,7 @@
         <module>pg-replication-slot</module>
         <module>pgevent</module>
         <module>platform-http</module>
+        <module>protobuf</module>
         <module>quartz</module>
         <module>qute</module>
         <module>rabbitmq</module>
diff --git a/extensions-jvm/protobuf/deployment/pom.xml b/extensions/protobuf/deployment/pom.xml
similarity index 94%
rename from extensions-jvm/protobuf/deployment/pom.xml
rename to extensions/protobuf/deployment/pom.xml
index 9c5f686..4fb6c5b 100644
--- a/extensions-jvm/protobuf/deployment/pom.xml
+++ b/extensions/protobuf/deployment/pom.xml
@@ -38,6 +38,12 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-protobuf</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-grpc-codegen</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/extensions-jvm/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java b/extensions/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java
similarity index 53%
rename from extensions-jvm/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java
rename to extensions/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java
index 0d0e1ae..ed00faf 100644
--- a/extensions-jvm/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java
+++ b/extensions/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java
@@ -16,31 +16,42 @@
  */
 package org.apache.camel.quarkus.component.protobuf.deployment;
 
+import com.google.protobuf.GeneratedMessage;
+import com.google.protobuf.GeneratedMessageV3;
+import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.pkg.steps.NativeBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
 import org.jboss.logging.Logger;
 
 class ProtobufProcessor {
 
     private static final Logger LOG = Logger.getLogger(ProtobufProcessor.class);
     private static final String FEATURE = "camel-protobuf";
+    private static final DotName[] MESSAGE_CLASS_DOT_NAMES = new DotName[] {
+            DotName.createSimple(GeneratedMessageV3.class.getName()),
+            DotName.createSimple(GeneratedMessage.class.getName())
+    };
 
     @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
+    @BuildStep
+    void reflectiveClasses(BuildProducer<ReflectiveClassBuildItem> reflectiveClasses,
+            CombinedIndexBuildItem combinedIndexBuildItem) {
+
+        IndexView index = combinedIndexBuildItem.getIndex();
+        for (DotName dotName : MESSAGE_CLASS_DOT_NAMES) {
+            index.getAllKnownSubclasses(dotName)
+                    .stream()
+                    .map(classInfo -> new ReflectiveClassBuildItem(true, false, classInfo.name().toString()))
+                    .forEach(reflectiveClasses::produce);
+        }
     }
+
 }
diff --git a/extensions-jvm/protobuf/pom.xml b/extensions/protobuf/pom.xml
similarity index 97%
rename from extensions-jvm/protobuf/pom.xml
rename to extensions/protobuf/pom.xml
index 2380dad..b3f63dd 100644
--- a/extensions-jvm/protobuf/pom.xml
+++ b/extensions/protobuf/pom.xml
@@ -33,6 +33,5 @@
     <modules>
         <module>deployment</module>
         <module>runtime</module>
-        <module>integration-test</module>
     </modules>
 </project>
diff --git a/extensions-jvm/protobuf/runtime/pom.xml b/extensions/protobuf/runtime/pom.xml
similarity index 98%
rename from extensions-jvm/protobuf/runtime/pom.xml
rename to extensions/protobuf/runtime/pom.xml
index df3e512..c7e7b0d 100644
--- a/extensions-jvm/protobuf/runtime/pom.xml
+++ b/extensions/protobuf/runtime/pom.xml
@@ -31,7 +31,7 @@
 
     <properties>
         <camel.quarkus.jvmSince>1.0.0</camel.quarkus.jvmSince>
-        <camel.quarkus.nativeSince>1.0.0</camel.quarkus.nativeSince>
+        <camel.quarkus.nativeSince>1.5.0</camel.quarkus.nativeSince>
     </properties>
 
     <dependencyManagement>
diff --git a/extensions/protobuf/runtime/src/main/doc/configuration.adoc b/extensions/protobuf/runtime/src/main/doc/configuration.adoc
new file mode 100644
index 0000000..9cb9285
--- /dev/null
+++ b/extensions/protobuf/runtime/src/main/doc/configuration.adoc
@@ -0,0 +1,25 @@
+Use the `generate-code` goal of `quarkus-maven-plugin` to generate Java classes from your `*.proto`
+service and message definitions stored in the `src/main/proto` directory:
+
+[source,xml]
+----
+<build>
+    <plugins>
+        <plugin>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-maven-plugin</artifactId>
+            <executions>
+                <execution>
+                    <goals>
+                        <goal>generate-code</goal>
+                        <goal>build</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+</build>
+----
+
+You may want to check the https://github.com/apache/camel-quarkus/tree/master/integration-tests/protobuf[integration test]
+in our source tree as an example.
diff --git a/extensions-jvm/protobuf/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/protobuf/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 100%
rename from extensions-jvm/protobuf/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to extensions/protobuf/runtime/src/main/resources/META-INF/quarkus-extension.yaml
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 6ed7d39..9f83fb6 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -141,6 +141,7 @@
         <module>pgevent</module>
         <module>platform-http</module>
         <module>platform-http-engine</module>
+        <module>protobuf</module>
         <module>quartz</module>
         <module>qute</module>
         <module>rabbitmq</module>
diff --git a/extensions-jvm/protobuf/integration-test/pom.xml b/integration-tests/protobuf/pom.xml
similarity index 56%
rename from extensions-jvm/protobuf/integration-test/pom.xml
rename to integration-tests/protobuf/pom.xml
index 4051b16..99d5b3a 100644
--- a/extensions-jvm/protobuf/integration-test/pom.xml
+++ b/integration-tests/protobuf/pom.xml
@@ -21,25 +21,14 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <artifactId>camel-quarkus-integration-tests</artifactId>
         <version>1.5.0-SNAPSHOT</version>
-        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-protobuf-integration-test</artifactId>
-    <name>Camel Quarkus :: Protobuf :: Integration Test</name>
+    <artifactId>camel-quarkus-integration-test-protobuf</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Protobuf</name>
     <description>Integration tests for Camel Quarkus Protobuf extension</description>
 
-    <properties>
-        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd -->
-        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
-        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
-        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
-        <!-- Please update the rule whenever you change the dependencies of this module by running -->
-        <!--     mvn process-resources -Pformat    from the root directory -->
-        <mvnd.builder.rule>camel-quarkus-protobuf-deployment</mvnd.builder.rule>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
@@ -70,36 +59,48 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>kr.motd.maven</groupId>
-                <artifactId>os-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>initialize</phase>
-                        <goals>
-                            <goal>detect</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.xolstice.maven.plugins</groupId>
-                <artifactId>protobuf-maven-plugin</artifactId>
-                <extensions>true</extensions>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
                 <executions>
                     <execution>
+                        <id>quarkus-generate-code</id>
                         <goals>
-                            <goal>compile</goal>
+                            <goal>generate-code</goal>
                         </goals>
                         <phase>generate-sources</phase>
-                        <configuration>
-                            <protocArtifact>
-                                com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
-                            </protocArtifact>
-                            <checkStaleness>true</checkStaleness>
-                        </configuration>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
     </build>
+
+    <profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <properties>
+                <quarkus.package.type>native</quarkus.package.type>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufResource.java b/integration-tests/protobuf/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufResource.java
similarity index 100%
rename from extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufResource.java
rename to integration-tests/protobuf/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufResource.java
diff --git a/extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java b/integration-tests/protobuf/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java
similarity index 100%
copy from extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java
copy to integration-tests/protobuf/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java
diff --git a/extensions-jvm/protobuf/integration-test/src/main/proto/addressbook.proto b/integration-tests/protobuf/src/main/proto/addressbook.proto
similarity index 100%
rename from extensions-jvm/protobuf/integration-test/src/main/proto/addressbook.proto
rename to integration-tests/protobuf/src/main/proto/addressbook.proto
diff --git a/extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java b/integration-tests/protobuf/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufIT.java
similarity index 63%
rename from extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java
rename to integration-tests/protobuf/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufIT.java
index f74d60e..9f84c2a 100644
--- a/extensions-jvm/protobuf/integration-test/src/main/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufRoute.java
+++ b/integration-tests/protobuf/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufIT.java
@@ -16,20 +16,9 @@
  */
 package org.apache.camel.quarkus.component.protobuf.it;
 
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.quarkus.component.protobuf.it.model.AddressBookProtos.Person;
+import io.quarkus.test.junit.NativeImageTest;
 
-public class ProtobufRoute extends RouteBuilder {
+@NativeImageTest
+class ProtobufIT extends ProtobufTest {
 
-    @Override
-    public void configure() throws Exception {
-        from("direct:protobuf-marshal")
-                .marshal()
-                .protobuf(Person.class.getName());
-
-        from("direct:protobuf-unmarshal")
-                .unmarshal()
-                .protobuf(Person.class.getName());
-
-    }
 }
diff --git a/extensions-jvm/protobuf/integration-test/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufTest.java b/integration-tests/protobuf/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufTest.java
similarity index 100%
rename from extensions-jvm/protobuf/integration-test/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufTest.java
rename to integration-tests/protobuf/src/test/java/org/apache/camel/quarkus/component/protobuf/it/ProtobufTest.java
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index 3355be6..b60127d 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -26,6 +26,7 @@ cloud:
   - consul
   - elasticsearch-rest
   - grpc
+  - protobuf
   - smallrye-reactive-messaging
 core-main-validation:
   - core