Feng,
Thanks so much.  At least I know that what I'm looking for doesn't exist.
I am researching a variant of (1) that uses reflection on generated package
classes to build a fullname->Message map.  Once I have a Message I can ask
for a builder and be on my way. So I'll call getDefaultInstance() via
reflection and use them to make the builders.  I hope this works!
Thanks
john


On Mon, Jul 9, 2018 at 4:14 PM Feng Xiao <xiaof...@google.com> wrote:

>
>
> 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