On Dec 3, 2010, at 14:21 , Koert Kuipers wrote:
public class ProtobufDeserializer<T extends Message> {
    public T fromByteBuffer(ByteBuffer byteBuffer) {


I don't *think* the generic type is going to be enough due to erasure, but I'm not a generics expert. I know something like the following works (I may be messing up the generics syntax since I'm not super familiar with it):

<T extends MessageLite> public T fromByteBuffer(ByteBuffer byteBuffer, T defaultInstance) {
  Builder b = defaultInstance.newBuilderForType();
  b.mergeFrom(ByteString.copyFrom(byteBuffer));
  return b.build();
}

You can get defaultInstance from ConcreteMessageType.getDefaultInstance();

You may want to create a tiny InputStream wrapper around ByteBuffer to avoid an extra copy, or if you know it is a heap byte buffer, use the array mergeFrom().

Hope that helps,

Evan

--
Evan Jones
http://evanjones.ca/

--
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