Skip to content

Commit 31e401d

Browse files
authored
Merge pull request #50450 from gastaldi/grpc_reflection
Enable reflection on `GeneratedMessage` and `GeneratedMessage.Builder` implementations
2 parents e368b49 + 1f19f31 commit 31e401d

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

extensions/grpc-common/deployment/src/main/java/io/quarkus/grpc/common/deployment/GrpcCommonProcessor.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,16 @@ public void configureNativeExecutable(CombinedIndexBuildItem combinedIndex,
2020
BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
2121

2222
// we force the usage of the reflection invoker.
23-
Collection<ClassInfo> messages = combinedIndex.getIndex()
23+
Collection<ClassInfo> messagesV3 = combinedIndex.getIndex()
2424
.getAllKnownSubclasses(GrpcDotNames.GENERATED_MESSAGE_V3);
25+
for (ClassInfo message : messagesV3) {
26+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(message.name().toString()).methods()
27+
.fields().build());
28+
}
29+
30+
// we force the usage of the reflection invoker.
31+
Collection<ClassInfo> messages = combinedIndex.getIndex()
32+
.getAllKnownSubclasses(GrpcDotNames.GENERATED_MESSAGE);
2533
for (ClassInfo message : messages) {
2634
reflectiveClass.produce(ReflectiveClassBuildItem.builder(message.name().toString()).methods()
2735
.fields().build());
@@ -35,6 +43,12 @@ public void configureNativeExecutable(CombinedIndexBuildItem combinedIndex,
3543
.fields().build());
3644
}
3745

46+
Collection<ClassInfo> buildersV3 = combinedIndex.getIndex().getAllKnownSubclasses(GrpcDotNames.MESSAGE_BUILDER_V3);
47+
for (ClassInfo builder : buildersV3) {
48+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(builder.name().toString()).methods()
49+
.fields().build());
50+
}
51+
3852
Collection<ClassInfo> builders = combinedIndex.getIndex().getAllKnownSubclasses(GrpcDotNames.MESSAGE_BUILDER);
3953
for (ClassInfo builder : builders) {
4054
reflectiveClass.produce(ReflectiveClassBuildItem.builder(builder.name().toString()).methods()

extensions/grpc-common/deployment/src/main/java/io/quarkus/grpc/common/deployment/GrpcDotNames.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
import org.jboss.jandex.DotName;
44

5+
import com.google.protobuf.GeneratedMessage;
56
import com.google.protobuf.GeneratedMessageV3;
67
import com.google.protobuf.ProtocolMessageEnum;
78

89
import io.grpc.LoadBalancerProvider;
910
import io.grpc.NameResolverProvider;
1011

1112
public class GrpcDotNames {
12-
static final DotName MESSAGE_BUILDER = DotName.createSimple(GeneratedMessageV3.Builder.class.getName());
13+
static final DotName GENERATED_MESSAGE = DotName.createSimple(GeneratedMessage.class.getName());
1314
static final DotName GENERATED_MESSAGE_V3 = DotName.createSimple(GeneratedMessageV3.class.getName());
15+
static final DotName MESSAGE_BUILDER = DotName.createSimple(GeneratedMessage.Builder.class.getName());
16+
static final DotName MESSAGE_BUILDER_V3 = DotName.createSimple(GeneratedMessageV3.Builder.class.getName());
1417
static final DotName PROTOCOL_MESSAGE_ENUM = DotName.createSimple(ProtocolMessageEnum.class.getName());
1518
static final DotName NAME_RESOLVER_PROVIDER = DotName.createSimple(NameResolverProvider.class.getName());
1619
static final DotName LOAD_BALANCER_PROVIDER = DotName.createSimple(LoadBalancerProvider.class.getName());

0 commit comments

Comments
 (0)