On Thu, Aug 4, 2016 at 5:47 AM, Philipp Weissenbacher <
[email protected]> wrote:

> Hi all,
>
> We are currently implementing a testing library. One goal is to allow the
> client to test sending and receiving ProtoBuf messages.
> For this, we need a generic way to create them, without requiring the
> client to supply the generated proxy classes.
> This means MyType.getDefaultInstance() (as suggested here
> <https://groups.google.com/forum/#!searchin/protobuf/generic%7Csort:relevance/protobuf/w3enqjfLQ4k/fRtI_WjlwxcJ>)
> would not work.
>
> So, is there a generic way to create ProtoBuf messages (e.g. from .proto
> files) at runtime?
>
If you are using C++, you can use the Importer class:
https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/importer.h#L148

to parse .proto files to FileDescriptor and then use DynamicMessage to
create message instances:
https://github.com/google/protobuf/blob/master/src/google/protobuf/dynamic_message.h#L118

After that you can parse/serialize and manipulate the message instances
using the reflection API:
https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Reflection



>
> BTW, we're using Scala/Java and protobuf2.
>
> Sincerely,
> Philipp
>
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to