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/compiler/src/java_plugin/cpp/java_generator.cpp b/compiler/src/java_plugin/cpp/java_generator.cpp index cf844503567..bae66c2726d 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 + ? "jakarta.annotation.Generated" + : "javax.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; } 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"