[protobuf] Re: Null Nested Messages--whats expected?

2014-10-15 Thread Johannes Elgh
For full visibility: 

It turns out that the error was on my side. Apparently ProtoStuff can talk 
different dialects. ProtoStuff and ProtoBuf. 
It just depends on what IOUtil implementation you use.

When you read for instance, either use:
ProtobufIOUtil.mergeFrom(inputStream, t, schema, buffer);
or
ProtostuffIOUtil.mergeFrom(inputStream, t, schema, buffer);

This wasn't really clear from their side. I hade no clue. We had of course 
been using ProtostuffIOUtil -- when we should have used ProtobufIOUtil 
since we are talking between different implementations (ProtoStuff  
protobuf-net).

Best,
Johannes

On Tuesday, October 14, 2014 7:55:58 PM UTC+2, Johannes Elgh wrote:

 Hello everyone,

 Firstly I need to apologize for any misuse or misunderstand of terms and 
 concepts. I'm mostly familiar with the Protocol Buffer implementations 
 protostuff and protobuf-net.


 I have a case that two different implementations (the C# one: protobuf-net 
 and the Java one: protostuff) do differently and I'd like to know which way 
 is the correct according to the Protocol Buffers specification.

 I have these messages:

 message A {
 optional string someField = 2;
 optional Location location = 4;
 }

 message Location {
 optional Coordinate coordinate = 1;
 optional string city = 2;
 }   

 message Coordinate {
 ...
 }


 In the following case we have an object A, with a populated Location with 
 coordinate 
 = null and city = someCity.

 When protobuf-net (a client) sends this object A (populated as described 
 above) to protostuff (the backend) it sends 0x0 in the place of the 
 coordinate. 
 This results into that protostuff reads a 0 whilst populating Location, 
 and therefore thinks that Location is done. When protostuff then reads 
 the next field number it finds 2, city, which has the same number as 
 someField in A and populates that field instead (city overwrites someField
 ). 

 So the problem is that protobuf-net sends 0x0 for a null nested messages 
 whereas protostuff doesn't even expect it to be there (since it's null).

 Best regards,
 Johannes


-- 
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 http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.


[protobuf] Null Nested Messages--whats expected?

2014-10-14 Thread Johannes Elgh
Hello everyone,

Firstly I need to apologize for any misuse or misunderstand of terms and 
concepts. I'm mostly familiar with the Protocol Buffer implementations 
protostuff and protobuf-net.


I have a case that two different implementations (the C# one: protobuf-net 
and the Java one: protostuff) do differently and I'd like to know which way 
is the correct according to the Protocol Buffers specification.

I have these messages:

message A {
optional string someField = 2;
optional Location location = 4;
}

message Location {
optional Coordinate coordinate = 1;
optional string city = 2;
}   

message Coordinate {
...
}


In the following case we have an object A, with a populated Location with 
coordinate 
= null and city = someCity.

When protobuf-net (a client) sends this object A (populated as described 
above) to protostuff (the backend) it sends 0x0 in the place of the coordinate. 
This results into that protostuff reads a 0 whilst populating Location, and 
therefore thinks that Location is done. When protostuff then reads the next 
field number it finds 2, city, which has the same number as someField in A 
and populates that field instead (city overwrites someField). 

So the problem is that protobuf-net sends 0x0 for a null nested messages 
whereas protostuff doesn't even expect it to be there (since it's null).

Best regards,
Johannes

-- 
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 http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.