From f168a61a262ca2d92083dda77844fe948a31648e Mon Sep 17 00:00:00 2001 From: David Ankin Date: Sat, 30 Dec 2023 05:49:05 -0500 Subject: [PATCH 1/3] #9179 - allow selecting jakarta/javax Generated annotation --- compiler/src/java_plugin/cpp/java_generator.cpp | 7 +++++-- compiler/src/java_plugin/cpp/java_generator.h | 3 ++- compiler/src/java_plugin/cpp/java_plugin.cpp | 5 ++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/compiler/src/java_plugin/cpp/java_generator.cpp b/compiler/src/java_plugin/cpp/java_generator.cpp index cf844503567..68cea8eb74e 100644 --- a/compiler/src/java_plugin/cpp/java_generator.cpp +++ b/compiler/src/java_plugin/cpp/java_generator.cpp @@ -1217,7 +1217,8 @@ void PrintImports(Printer* p) { void GenerateService(const ServiceDescriptor* service, protobuf::io::ZeroCopyOutputStream* out, ProtoFlavor flavor, - bool disable_version) { + bool disable_version, + bool jakarta_over_javax) { // All non-generated classes must be referred by fully qualified names to // avoid collision with generated classes. std::map vars; @@ -1249,7 +1250,9 @@ void GenerateService(const ServiceDescriptor* service, vars["MethodDescriptor"] = "io.grpc.MethodDescriptor"; vars["StreamObserver"] = "io.grpc.stub.StreamObserver"; vars["Iterator"] = "java.util.Iterator"; - vars["Generated"] = "javax.annotation.Generated"; + vars["Generated"] = jakarta_over_javax + ? "javax.annotation.Generated" + : "jakarta.annotation.Generated"; vars["GrpcGenerated"] = "io.grpc.stub.annotations.GrpcGenerated"; vars["ListenableFuture"] = "com.google.common.util.concurrent.ListenableFuture"; diff --git a/compiler/src/java_plugin/cpp/java_generator.h b/compiler/src/java_plugin/cpp/java_generator.h index f3ec49f8e27..4e1f78c9bbc 100644 --- a/compiler/src/java_plugin/cpp/java_generator.h +++ b/compiler/src/java_plugin/cpp/java_generator.h @@ -68,7 +68,8 @@ std::string ServiceClassName(const impl::protobuf::ServiceDescriptor* service); void GenerateService(const impl::protobuf::ServiceDescriptor* service, impl::protobuf::io::ZeroCopyOutputStream* out, ProtoFlavor flavor, - bool disable_version); + bool disable_version, + bool jakarta_over_javax); } // namespace java_grpc_generator diff --git a/compiler/src/java_plugin/cpp/java_plugin.cpp b/compiler/src/java_plugin/cpp/java_plugin.cpp index 2eed9d260d1..9e9a73022da 100644 --- a/compiler/src/java_plugin/cpp/java_plugin.cpp +++ b/compiler/src/java_plugin/cpp/java_plugin.cpp @@ -59,12 +59,15 @@ class JavaGrpcGenerator : public protobuf::compiler::CodeGenerator { java_grpc_generator::ProtoFlavor flavor = java_grpc_generator::ProtoFlavor::NORMAL; + bool jakarta_over_javax = false; bool disable_version = false; for (size_t i = 0; i < options.size(); i++) { if (options[i].first == "lite") { flavor = java_grpc_generator::ProtoFlavor::LITE; } else if (options[i].first == "noversion") { disable_version = true; + } else if (options[i].first == "jakarta") { + jakarta_over_javax = true; } } @@ -77,7 +80,7 @@ class JavaGrpcGenerator : public protobuf::compiler::CodeGenerator { std::unique_ptr output( context->Open(filename)); java_grpc_generator::GenerateService( - service, output.get(), flavor, disable_version); + service, output.get(), flavor, disable_version, jakarta_over_javax); } return true; } From cca5495288455bd4b06614a0052add7d6583eabf Mon Sep 17 00:00:00 2001 From: David Ankin Date: Sat, 30 Dec 2023 05:56:40 -0500 Subject: [PATCH 2/3] add jakarta dependency - how did it know to pass the new option? --- compiler/build.gradle | 2 ++ gradle/libs.versions.toml | 1 + 2 files changed, 3 insertions(+) diff --git a/compiler/build.gradle b/compiler/build.gradle index b82c087aca6..1c47a4bb2f3 100644 --- a/compiler/build.gradle +++ b/compiler/build.gradle @@ -146,9 +146,11 @@ sourceSets { dependencies { testImplementation project(':grpc-protobuf'), project(':grpc-stub'), + libraries.jakarta.annotation, libraries.javax.annotation testLiteImplementation project(':grpc-protobuf-lite'), project(':grpc-stub'), + libraries.jakarta.annotation, libraries.javax.annotation } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3909dce3afe..9664345bb67 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -43,6 +43,7 @@ guava-testlib = "com.google.guava:guava-testlib:32.1.3-android" guava-jre = "com.google.guava:guava:32.1.3-jre" hdrhistogram = "org.hdrhistogram:HdrHistogram:2.1.12" javax-annotation = "org.apache.tomcat:annotations-api:6.0.53" +jakarta-annotation = "jakarta.annotation:jakarta.annotation-api:2.1.1" j2objc-annotations = " com.google.j2objc:j2objc-annotations:2.8" jetty-alpn-agent = "org.mortbay.jetty.alpn:jetty-alpn-agent:2.0.10" jsr305 = "com.google.code.findbugs:jsr305:3.0.2" From e1adbc9e7dc47362246c8af27459ced13cf20726 Mon Sep 17 00:00:00 2001 From: David Ankin Date: Sat, 30 Dec 2023 05:58:39 -0500 Subject: [PATCH 3/3] mystery solved - options were backwards --- compiler/src/java_plugin/cpp/java_generator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/src/java_plugin/cpp/java_generator.cpp b/compiler/src/java_plugin/cpp/java_generator.cpp index 68cea8eb74e..bae66c2726d 100644 --- a/compiler/src/java_plugin/cpp/java_generator.cpp +++ b/compiler/src/java_plugin/cpp/java_generator.cpp @@ -1251,8 +1251,8 @@ void GenerateService(const ServiceDescriptor* service, vars["StreamObserver"] = "io.grpc.stub.StreamObserver"; vars["Iterator"] = "java.util.Iterator"; vars["Generated"] = jakarta_over_javax - ? "javax.annotation.Generated" - : "jakarta.annotation.Generated"; + ? "jakarta.annotation.Generated" + : "javax.annotation.Generated"; vars["GrpcGenerated"] = "io.grpc.stub.annotations.GrpcGenerated"; vars["ListenableFuture"] = "com.google.common.util.concurrent.ListenableFuture";