public Object toObject(byte[] bytes) {
Integer version = Integer.valueOf(bytes[0]);
if(version > newestVersion)
throw new SerializationException("Client needs to rebootstrap! \n Writer's schema version greater than Reader");
Schema typeDefWriter = Schema.parse(typeDefVersions.get(version));
byte[] dataBytes = new byte[bytes.length - 1];
System.arraycopy(bytes, 1, dataBytes, 0, bytes.length - 1);
Decoder decoder = DecoderFactory.defaultFactory().createBinaryDecoder(dataBytes, null);
GenericDatumReader<Object> reader = null;
try {
reader = new GenericDatumReader<Object>(typeDefWriter, typeDef);
// writer's schema
reader.setSchema(typeDefWriter);
// Reader's schema
reader.setExpected(typeDef);
return reader.read(null, decoder);
} catch(IOException e) {
throw new SerializationException(e);
}
}