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.

Reply via email to