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 <ppal...@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>