Sorry hit the send button accidently...to finish
Unit Test
public class TestAvroHelper {
@Test
public void testAvroHelper() {
AvroHelper<TestAvroData> helper = new AvroHelper<TestAvroHelper>(
TestAvroHelper.class);
TestAvroData data = new TestAvroData();
data.setData(new String("hello").toBytes());
byte adata = helper.toAvroBytes(data);
TestAvroData data1 = helper.fromAvroBytes(adata);
}
}
This fails with an Union Exception.
What am I doing wrong?
Thanks
On Fri, Nov 18, 2016 at 7:25 AM, Paul Read <[email protected]> wrote:
>
> I have a AvroHelper that serializes/deserializes about 99% of some very
> complex classes, The one class component it cannot seem to handle is a
> field that contains a simple byte array. The helper is defined
>
> public class AvroHelper<T> {
>
> private Class<T> type;
> private Schema schema;
> private DatumReader<T> reader;
> private DatumWriter<T> writer;
> private ByteArrayOutputStream bos;
> private Encoder encoder;
> private DecoderFactory decoderFactory;
>
> public AvroHelper(Class<T> type) {
>
> this.type = type;
> this.schema = ReflectData.AllowNull.get().getSchema(type);
> this.bos = new ByteArrayOutputStream();
> this.decoderFactory = DencoderFactory.get();
> this.encoder = EncoderFactory.get().binaryEncoder(bos, null);
> this.reader = new ReflectDatumReader<T>(schema);
> this.writer = new ReflectDatumWriter<T>(schema);
> }
>
> public byte[] toAvroBytes( T o) throws IOException {
> bos.reset();
> writer.write(o, encoder);
> encoder.flush();
> return bos.toByteArray();
> }
>
> public T fromAvroBytes(byte [] raw) throws IOException {
> return reader.read(null, decoderFactory.binaryDecoder(raw,
> null));
> }
> }
>
> The simple test POJO is
>
> public class TestAvroData {
> private byte [] data;
>
> public TestAvroData() {
> }
>
> public void setData(byte [] data) {
> this.data = data;
> }
>
> public byte[] getData() {
> return this.data;
> }
> }
>
> Unit Test
>
> public class TestAvroHelper {
>
> @Test
> public void testAvroHelper() {
> AvroHelper<TestAvroData> helper = new AvroHelper<TestAvroHelper>(
> TestAvroHelper.class);
>
>
> }
>