On Mon, Jul 9, 2018 at 2:45 PM John Lilley <whee...@gmail.com> wrote:
> Well, apparently I am really off base. Given a Descriptor I cannot figure > out how to create the right message. I *thought* this was the right > approach: > Descriptors.Descriptor desc = // look up the descriptor > Builder builder = desc.toProto().newBuilderForType(); > Message message = builder.mergeFrom(requestBytes).build(); > > > But no. Can anyone help me with this? I need to go from the full name of > a message to its builder and I'm not finding anything like MessageFactory() > or DescriptorPool in Java. > There is no DecriptorPool/MessageFactory in Java because there is no easy way to automatically build such a DescriptorPool/MessageFactory with all protos in the class path. There are a few options for Java: 1. Build a registry from message name to proto message type manually. 2. Use protoc to output a FileDescriptorSet for all of your .proto files, and use this FileDescriptorSet to build a DescriptorPool-like structure yourself. You will be using FileDescriptor.buildFile() to convert FileDescriptorProtos in the FileDescriptorSet to FileDescriptor and then traverse through the FileDescriptors to build a map from messageName to Descriptor. 3. Write a protoc plugin to produce Java code to create a registry for all of your .proto files. All the above options are used by some projects inside Google. (2), (3) are integrated into our build system with runtime library support and will take quite some effort to recreate from scratch. Your best option is probably (1). > Thanks > john > > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to protobuf+unsubscr...@googlegroups.com. > To post to this group, send email to protobuf@googlegroups.com. > Visit this group at https://groups.google.com/group/protobuf. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.