From 5f504ec744a008fde6cf018697f4d4e20ae748a2 Mon Sep 17 00:00:00 2001 From: Chris Nokleberg Date: Mon, 23 Mar 2020 09:43:27 -0700 Subject: [PATCH 1/2] core: copy the SchemaDescriptor when rebuilding descriptor useMarshalledMessages works by duplicating a ServerServiceDefinition while replacing just the marshallers. It currently does not copy over the SchemaDescriptors, which breaks at least the ProtoReflectionService. --- api/src/main/java/io/grpc/ServerInterceptors.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/io/grpc/ServerInterceptors.java b/api/src/main/java/io/grpc/ServerInterceptors.java index dc1b0609d9b..6d925caeedb 100644 --- a/api/src/main/java/io/grpc/ServerInterceptors.java +++ b/api/src/main/java/io/grpc/ServerInterceptors.java @@ -187,13 +187,15 @@ public static ServerServiceDefinition useMarshalledMessages( wrappedMethods.add(wrapMethod(definition, wrappedMethodDescriptor)); } // Build the new service descriptor - final ServerServiceDefinition.Builder serviceBuilder = ServerServiceDefinition - .builder(new ServiceDescriptor(serviceDef.getServiceDescriptor().getName(), - wrappedDescriptors)); - // Create the new service definiton. - for (ServerMethodDefinition definition : wrappedMethods) { - serviceBuilder.addMethod(definition); + final ServiceDescriptor.Builder serviceDescriptorBuilder = + ServiceDescriptor.newBuilder(serviceDef.getServiceDescriptor().getName()) + .setSchemaDescriptor(serviceDef.getServiceDescriptor().getSchemaDescriptor()); + for (MethodDescriptor wrappedDescriptor : wrappedDescriptors) { + serviceDescriptorBuilder.addMethod(wrappedDescriptor); } + // Create the new service definition. + final ServerServiceDefinition.Builder serviceBuilder = + ServerServiceDefinition.builder(serviceDescriptorBuilder.build()); return serviceBuilder.build(); } From 7537c5df623ced7931b0c1d5279aeffd6ff1c57c Mon Sep 17 00:00:00 2001 From: Kun Zhang Date: Mon, 30 Mar 2020 10:37:30 -0700 Subject: [PATCH 2/2] Fix patch error --- api/src/main/java/io/grpc/ServerInterceptors.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/src/main/java/io/grpc/ServerInterceptors.java b/api/src/main/java/io/grpc/ServerInterceptors.java index 6d925caeedb..6110cf9ca25 100644 --- a/api/src/main/java/io/grpc/ServerInterceptors.java +++ b/api/src/main/java/io/grpc/ServerInterceptors.java @@ -196,6 +196,9 @@ public static ServerServiceDefinition useMarshalledMessages( // Create the new service definition. final ServerServiceDefinition.Builder serviceBuilder = ServerServiceDefinition.builder(serviceDescriptorBuilder.build()); + for (ServerMethodDefinition definition : wrappedMethods) { + serviceBuilder.addMethod(definition); + } return serviceBuilder.build(); }