On more follow-up (sorry for all these follow-ups):

I should revise my problem slightly.  I had said that I am given an instance
of a Message class when deserializing.  This is true, though sometimes that
instance is null.  In the cases when it's null, I'm not able to call
newBuilderForType() on it.  I'm not able to call getDefaultInstance(),
either.  This is now problematic, though there may be a work around.  Also
given to me is a Class instance of the Message.  I'm using Reflection to
instantiate a new Message instance, then getDefaultInstance() to get the
default instance, and then I'm calling newBuilderForType().  Is this

Thanks again.  Sorry for all the spam!


On Tue, Sep 9, 2008 at 12:11 PM, Alex Loddengaard <[EMAIL PROTECTED]
> wrote:

> I have a follow-up question:
> Will using 
> *messageInstance.newBuilderForType().mergeFrom(input).build();*work for a 
> stream that contains trailing binary information?
> I'm asking this question for the following reason: I'm using a very simple
> example where my Message just contains a single String.  When I print the
> serialized message with a value of "my_string", I get "<binary>my_string".
> Now, when I see the stream coming in on the deserialization side, I get
> "<binary>my_string<binary>"  The leading binary is the same as the original,
> however the trailing binary is something new entirely.  The trailing binary
> is probably being created by Hadoop.
> Kenton, you have made it very clear that *
> messageInstance.newBuilderForType().mergeFrom(input).build();* is the
> correct approach.  What could possibly be going wrong if the stream I'm
> trying to deserialize from contains trailing binary data?
> Thanks ahead of time for your help.
> Alex
> On Tue, Sep 9, 2008 at 10:47 AM, Alex Loddengaard <
>> After taking my code out of Hadoop, it looks as though my deserializing
>> mechanism is working fine.  My problem lies with my integration with Hadoop.
>> Thanks for resolving this issue, Kenton!
>> Alex
>> On Tue, Sep 9, 2008 at 9:42 AM, Alex Loddengaard <
>> [EMAIL PROTECTED]> wrote:
>>> On Tue, Sep 9, 2008 at 9:28 AM, Kenton Varda <[EMAIL PROTECTED]> wrote:
>>>> To clarify:  In my original message I was saying that you should call
>>>> isInitialized() on the builder returned by mergeFrom(), to make sure the
>>>> parsed message is complete, before you call build().
>>> Ah.  Now isInitialized() is returning true, though I'm still having
>>> problems deserializing.  Now that I'm using OutputStream and InputStream,
>>> I'm getting the following exception:
>>> com.google.protobuf.InvalidProtocolBufferException: Protocol message tag
>>> had invalid wire type.
>>> I'm going to take my code out of Hadoop to see if Hadoop is causing these
>>> issues.  I'm still weary of that, though, because other serialization
>>> frameworks such as Facebook's Thrift seem to work in the framework that I am
>>> using.
>>> Thanks for your help, Kenton!  I'll check back soon with my progress.

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 

Reply via email to