From 13890f80fc1eac4440660473746d174cbb6cf677 Mon Sep 17 00:00:00 2001 From: waterWang Date: Wed, 29 Jul 2026 15:00:43 +0800 Subject: [PATCH] Add getExtensionRegistry() getter to ProtoLiteUtils and ProtoUtils (#3836) The ProtoLiteUtils.setExtensionRegistry() setter was added in gRPC 1.0.0, but there was no corresponding getter. This made it impossible for the reflection service or other components to discover the extensions that were registered via the global ExtensionRegistry. Add getExtensionRegistry() to both ProtoLiteUtils (returns ExtensionRegistryLite) and ProtoUtils (returns ExtensionRegistry with a cast) so that the global registry can be read back. Issue: https://github.com/grpc/grpc-java/issues/3836 --- .../main/java/io/grpc/protobuf/lite/ProtoLiteUtils.java | 9 +++++++++ protobuf/src/main/java/io/grpc/protobuf/ProtoUtils.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/protobuf-lite/src/main/java/io/grpc/protobuf/lite/ProtoLiteUtils.java b/protobuf-lite/src/main/java/io/grpc/protobuf/lite/ProtoLiteUtils.java index ef4b16bd476..e1c6f60f05f 100644 --- a/protobuf-lite/src/main/java/io/grpc/protobuf/lite/ProtoLiteUtils.java +++ b/protobuf-lite/src/main/java/io/grpc/protobuf/lite/ProtoLiteUtils.java @@ -77,6 +77,15 @@ public static void setExtensionRegistry(ExtensionRegistryLite newRegistry) { globalRegistry = checkNotNull(newRegistry, "newRegistry"); } + /** + * Returns the global extension registry. + * + * @since 1.62.0 + */ + public static ExtensionRegistryLite getExtensionRegistry() { + return globalRegistry; + } + /** * Creates a {@link Marshaller} for protos of the same type as {@code defaultInstance}. * diff --git a/protobuf/src/main/java/io/grpc/protobuf/ProtoUtils.java b/protobuf/src/main/java/io/grpc/protobuf/ProtoUtils.java index d403789eb5f..ced76206698 100644 --- a/protobuf/src/main/java/io/grpc/protobuf/ProtoUtils.java +++ b/protobuf/src/main/java/io/grpc/protobuf/ProtoUtils.java @@ -46,6 +46,15 @@ public static void setExtensionRegistry(ExtensionRegistry registry) { ProtoLiteUtils.setExtensionRegistry(registry); } + /** + * Returns the global extension registry. + * + * @since 1.62.0 + */ + public static ExtensionRegistry getExtensionRegistry() { + return (ExtensionRegistry) ProtoLiteUtils.getExtensionRegistry(); + } + /** * Create a {@link Marshaller} for protos of the same type as {@code defaultInstance}. *