Sachin Goyal created AVRO-1554:
----------------------------------
Summary: Avro should have support for common constructs like UUID
and Date
Key: AVRO-1554
URL: https://issues.apache.org/jira/browse/AVRO-1554
Project: Avro
Issue Type: Bug
Components: java
Affects Versions: 1.7.6
Reporter: Sachin Goyal
Consider the following code:
{code}
public class AvroExample
{
public static void main (String [] args) throws Exception
{
ReflectData rdata = ReflectData.AllowNull.get();
Schema schema = rdata.getSchema(Temp.class);
ReflectDatumWriter<Temp> datumWriter =
new ReflectDatumWriter (Temp.class, rdata);
DataFileWriter<Temp> fileWriter =
new DataFileWriter<Temp> (datumWriter);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
fileWriter.create(schema, baos);
fileWriter.append(new Temp());
fileWriter.close();
byte[] bytes = baos.toByteArray();
GenericDatumReader<GenericRecord> datumReader =
new GenericDatumReader<GenericRecord> ();
SeekableByteArrayInput avroInputStream =
new SeekableByteArrayInput(bytes);
DataFileReader<GenericRecord> fileReader =
new DataFileReader<GenericRecord>(avroInputStream, datumReader);
schema = fileReader.getSchema();
GenericRecord record = null;
record = fileReader.next(record);
System.out.println (record);
System.out.println (record.get("id"));
}
}
class Temp
{
UUID id = UUID.randomUUID();
Date date = new Date();
BigInteger bi = BigInteger.TEN;
}
{code}
Output from this code is:
{code:javascript}
{"id": {}, "date": {}, "bi": "10"}
{code}
UUID and Date type fields are very common in Java and can be found a lot in
third-party code as well (where it may be difficult to put annotations).
So Avro should include a default serialization/deserialization support for such
fields.
--
This message was sent by Atlassian JIRA
(v6.2#6252)