Hi, I am trying to build a generic deserializer in Java. We have defined several GPB messages, and the receiver is receiving them, not knowing what kind of message it is. I take the serialized bytes and use DynamicMessage.parseFrom(descriptor, bytes) (I have the descriptor).
I then take this DynamicMessage and am trying to build a GeneratedMessage from it. The function below demonstrates how I am doing this: public Message getGeneratedMessage(DynamicMessage msg, GeneratedMessage.Builder builder) { Descriptor desc = msg.getDescriptorForType(); System.out.println("Received a DynamicMessage with descriptor = " + desc.getFullName()); System.out.println("Received GeneratedMessage.Builder with descriptor = " + builder.getDescriptorForType().getFullName()); if (!msg.getDescriptorForType().equals(descriptorMap.get(builder.getDescriptorForType().getFullName()))) { throw new IllegalArgumentException("Msg was of type " + msg.getDescriptorForType().getFullName() + "; expected type " + builder.getDescriptorForType().getFullName()); } builder.mergeFrom(msg); return builder.build(); } The program output is showing: Received a DynamicMessage with descriptor = gpb.SRI Received GeneratedMessage.Builder with descriptor = gpb.SRI However..., the mergeFrom method call actually throws the following exception: java.lang.IllegalArgumentException: mergeFrom(Message) can only merge messages of the same type. at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:256) I'm wondering if anybody has any clues. The function that I am using to get the generated message from the serialized byte array is: public DynamicMessage parsePacket(final String name, final String description, byte[] data) throws InvalidProtocolBufferException, IllegalStateException { Descriptor descriptor = descriptorMap.get(description); DynamicMessage msg = null; if (descriptor != null) { msg = DynamicMessage.parseFrom(descriptor, data); return msg; } else { throw new IllegalStateException("Description does not match any known ProtocolBuffer class types!"); } } Thanks in advance. -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To view this discussion on the web visit https://groups.google.com/d/msg/protobuf/-/jofnQihGNLgJ. To post to this group, send email to protobuf@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.