core: copy the SchemaDescriptor when rebuilding descriptor (#6851)

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.
This commit is contained in:
Chris Nokleberg 2020-03-30 14:07:24 -07:00 committed by GitHub
parent 1bf5ad1527
commit e081f414a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 4 deletions

View File

@ -197,10 +197,15 @@ public final class ServerInterceptors {
wrappedMethods.add(wrapMethod(definition, wrappedMethodDescriptor)); wrappedMethods.add(wrapMethod(definition, wrappedMethodDescriptor));
} }
// Build the new service descriptor // Build the new service descriptor
final ServerServiceDefinition.Builder serviceBuilder = ServerServiceDefinition final ServiceDescriptor.Builder serviceDescriptorBuilder =
.builder(new ServiceDescriptor(serviceDef.getServiceDescriptor().getName(), ServiceDescriptor.newBuilder(serviceDef.getServiceDescriptor().getName())
wrappedDescriptors)); .setSchemaDescriptor(serviceDef.getServiceDescriptor().getSchemaDescriptor());
// Create the new service definiton. for (MethodDescriptor<?, ?> wrappedDescriptor : wrappedDescriptors) {
serviceDescriptorBuilder.addMethod(wrappedDescriptor);
}
// Create the new service definition.
final ServerServiceDefinition.Builder serviceBuilder =
ServerServiceDefinition.builder(serviceDescriptorBuilder.build());
for (ServerMethodDefinition<?, ?> definition : wrappedMethods) { for (ServerMethodDefinition<?, ?> definition : wrappedMethods) {
serviceBuilder.addMethod(definition); serviceBuilder.addMethod(definition);
} }