byte[] encoded = out.toByteArray();
encodedMessage = ByteBuffer.wrap(encoded);
out.close();
} catch (IOException ioEx) {
LOG.error("error while marshalling", ioEx);
throw new ProtocolEncoderException(ioEx.getMessage());
}
} else if (message instanceof SpecificRecord) {
DatumWriter<T> writer = new SpecificDatumWriter<T>(message.getSchema());
Encoder encoder = EncoderFactory.get().binaryEncoder(out, null);
try {
writer.write(message, encoder);
encoder.flush();
byte[] encoded = out.toByteArray();
encodedMessage = ByteBuffer.wrap(encoded);
out.close();
} catch (IOException ioEx) {
LOG.error("error while marshalling", ioEx);
throw new ProtocolEncoderException(ioEx.getMessage());
}
} else {
LOG.warn("Unknown object type, serialization method not known for {}", message.getClass());
throw new ProtocolEncoderException(message.getClass() + " cannot be Serialized");
}
return encodedMessage != null ? encodedMessage.capacity() : -1;
}