Hi, I am using protobuf for a project, and I've run into an interesting case, which I've had no luck finding a standard solution to. For the record, I'm using the Java APIs to interact with my messages
My project has several messages defined, a few of which have similar fields (for example, two of them have a required text field with index 1). The problem I'm running into is that if I erroneously pass the byte array form of one message to a builder of the other message, it will happily parse it without any exceptions or other issues. (Apparently InvalidProto....Exception is thrown only is the array is completely invalid as a protobuf message of any type, and does not indicate anything else) I have tried checking "isInitialized", but because they both have the same required fields at the same indexes, it doesn't have an error. I considered changing the indexes or something like that, but that depends on every person who works on this project knowing about and respecting that convention - which doesn't seem like a sustainable solution. I also thought of checking the unknown fields, but one of the reasons I chose protobuf was for its forward and backwards compatibility - and I believe that the unknown filed list will be (validly) non-empty if I add a field down the road and an old version of the project receives a new version of the message. The only other thing I can think to do is to add a field in my messages which indicates the message - is this my best option, or am I missing something in the standard libraries which handles this? Thanks! Example: message Message1 { required string field1 = 1; optional string field2 = 2; } message Message2 { required string field1 = 1; optional int32 field2 = 2; } public void parseMessage1(byte[] protobuf){ try { Message1 message = Messag1e.parseFrom(protobuf); if(message.isInitialized()){ //Do some stuff }else{ //Never get here } } catch (InvalidProtocolBufferException e) { //Not thrown } } -- 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.