Since I essentially don't have access to the "Foo" proto file (just
the compiled binaries), extensions won't work.  I think serializing to
bytes would probably do the trick.  Not as pretty as I was hoping for,
but it should work.  Thanks for the replies everyone!

On Dec 11, 4:52 pm, Adam Vartanian <flo...@google.com> wrote:
> > An example:
> > Foo.jar contains the compiled Java code for the following protobuf:
> > option java_package = "com.foo";
> > message FooMsg {
> >   optional int32 a = 1;
> >   optional int32 b = 2;
> >   ...
> > }
>
> > In my code, I want to do this:
> > option java_package = "com.bar";
> > message BarMsg {
> >   optional com.foo.FooMsg my_foo = 1;
> >   ...
> > }
>
> > However, for the purposes of this discussion, I do not have access to
> > the proto file for FooMsg, and thus cannot simply do an "import
> > FooMsg.proto".
>
> > Just want to know if this is possible as it would be very convenient
> > for me.
>
> There are two ways to do this, one if you can deal with a dependency
> in the other direction, and one if neither can depend on the other.
>
> If you can allow FooMsg to depend on BarMsg, then you can use extensions:
>
> in barmsg.proto:
> message BarMsg {
>   extension 100 to max;
>
> }
>
> in foomsg.proto:
> message FooMsg {
>   optional int32 a = 1;
>   optional int32 b = 2;
>   extend BarMsg {
>     optional FooMsg my_foo = 100;
>   }
>
> }
>
> Alternatively, if you can't have dependencies in either direction, you
> can send opaque messages as bytes, like so:
>
> message BarMsg {
>   optional bytes my_foo = 1;
>
> }
>
> But you have to do the serializing and deserializing manually:
>
> BarMsg bar = BarMsg.parseFrom(whatever);
> FooMsg foo = FooMsg.parseFrom(bar.getMyFoo());
>
> - Adam

--

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.


Reply via email to