Return-Path: Delivered-To: apmail-hadoop-avro-commits-archive@minotaur.apache.org Received: (qmail 92589 invoked from network); 11 Jan 2010 19:13:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 11 Jan 2010 19:13:44 -0000 Received: (qmail 14929 invoked by uid 500); 11 Jan 2010 19:13:44 -0000 Delivered-To: apmail-hadoop-avro-commits-archive@hadoop.apache.org Received: (qmail 14900 invoked by uid 500); 11 Jan 2010 19:13:44 -0000 Mailing-List: contact avro-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: avro-dev@hadoop.apache.org Delivered-To: mailing list avro-commits@hadoop.apache.org Received: (qmail 14890 invoked by uid 99); 11 Jan 2010 19:13:44 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 11 Jan 2010 19:13:44 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 11 Jan 2010 19:13:41 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4C2122388A33; Mon, 11 Jan 2010 19:13:19 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r898014 - in /hadoop/avro/trunk: ./ src/java/org/apache/avro/ipc/ src/java/org/apache/avro/reflect/ src/java/org/apache/avro/specific/ src/test/java/org/apache/avro/ Date: Mon, 11 Jan 2010 19:13:18 -0000 To: avro-commits@hadoop.apache.org From: cutting@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100111191319.4C2122388A33@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cutting Date: Mon Jan 11 19:13:17 2010 New Revision: 898014 URL: http://svn.apache.org/viewvc?rev=898014&view=rev Log: AVRO-298. Fix Java's DatumReader and DatumWriter APIs to better use generics. Contributed by philz. Modified: hadoop/avro/trunk/CHANGES.txt hadoop/avro/trunk/src/java/org/apache/avro/ipc/Requestor.java hadoop/avro/trunk/src/java/org/apache/avro/ipc/Responder.java hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumReader.java hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumWriter.java hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectRequestor.java hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectResponder.java hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumReader.java hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumWriter.java hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificRequestor.java hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificResponder.java hadoop/avro/trunk/src/test/java/org/apache/avro/TestCompare.java hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFile.java hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFileReflect.java hadoop/avro/trunk/src/test/java/org/apache/avro/TestReflect.java Modified: hadoop/avro/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/CHANGES.txt (original) +++ hadoop/avro/trunk/CHANGES.txt Mon Jan 11 19:13:17 2010 @@ -188,6 +188,9 @@ AVRO-294. Clarify that bytes and fixed are unsigned, and how their JSON default values are interpreted. (Jeff Hammerbacher & cutting) + AVRO-298. Fix Java's DatumReader and DatumWriter APIs to better + use generics. (philz via cutting) + OPTIMIZATIONS AVRO-172. More efficient schema processing (massie) Modified: hadoop/avro/trunk/src/java/org/apache/avro/ipc/Requestor.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/ipc/Requestor.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/ipc/Requestor.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/ipc/Requestor.java Mon Jan 11 19:13:17 2010 @@ -144,11 +144,11 @@ private static final Map REMOTE_PROTOCOLS = Collections.synchronizedMap(new HashMap()); - private static final SpecificDatumWriter HANDSHAKE_WRITER = - new SpecificDatumWriter(HandshakeRequest.class); + private static final SpecificDatumWriter HANDSHAKE_WRITER = + new SpecificDatumWriter(HandshakeRequest.class); - private static final SpecificDatumReader HANDSHAKE_READER = - new SpecificDatumReader(HandshakeResponse.class); + private static final SpecificDatumReader HANDSHAKE_READER = + new SpecificDatumReader(HandshakeResponse.class); private void writeHandshake(Encoder out) throws IOException { MD5 localHash = new MD5(); @@ -175,11 +175,9 @@ HANDSHAKE_WRITER.write(handshake, out); } - @SuppressWarnings("unchecked") private boolean readHandshake(Decoder in) throws IOException { boolean established = false; - HandshakeResponse handshake = - (HandshakeResponse)HANDSHAKE_READER.read(null, in); + HandshakeResponse handshake = HANDSHAKE_READER.read(null, in); switch (handshake.match) { case BOTH: established = true; Modified: hadoop/avro/trunk/src/java/org/apache/avro/ipc/Responder.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/ipc/Responder.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/ipc/Responder.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/ipc/Responder.java Mon Jan 11 19:13:17 2010 @@ -153,12 +153,11 @@ return bbo.getBufferList(); } - private SpecificDatumWriter handshakeWriter = - new SpecificDatumWriter(HandshakeResponse.class); - private SpecificDatumReader handshakeReader = - new SpecificDatumReader(HandshakeRequest.class); + private SpecificDatumWriter handshakeWriter = + new SpecificDatumWriter(HandshakeResponse.class); + private SpecificDatumReader handshakeReader = + new SpecificDatumReader(HandshakeRequest.class); - @SuppressWarnings("unchecked") private Protocol handshake(Decoder in, Encoder out) throws IOException { HandshakeRequest request = (HandshakeRequest)handshakeReader.read(null, in); Modified: hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumReader.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumReader.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumReader.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumReader.java Mon Jan 11 19:13:17 2010 @@ -33,10 +33,10 @@ * {@link org.apache.avro.io.DatumReader DatumReader} for existing classes via * Java reflection. */ -public class ReflectDatumReader extends SpecificDatumReader { +public class ReflectDatumReader extends SpecificDatumReader { public ReflectDatumReader() {} - public ReflectDatumReader(Class c) { + public ReflectDatumReader(Class c) { this(ReflectData.get().getSchema(c)); } @@ -66,7 +66,7 @@ @SuppressWarnings(value="unchecked") protected Object newArray(Object old, int size, Schema schema) { ReflectData data = ReflectData.get(); - Class collectionClass = data.getClassProp(schema, ReflectData.CLASS_PROP); + Class collectionClass = ReflectData.getClassProp(schema, ReflectData.CLASS_PROP); if (collectionClass != null) { if (old instanceof Collection) { ((Collection)old).clear(); @@ -76,7 +76,7 @@ return new ArrayList(); return newInstance(collectionClass); } - Class elementClass = data.getClassProp(schema, ReflectData.ELEMENT_PROP); + Class elementClass = ReflectData.getClassProp(schema, ReflectData.ELEMENT_PROP); if (elementClass == null) elementClass = data.getClass(schema.getElementType()); return Array.newInstance(elementClass, size); Modified: hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumWriter.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumWriter.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumWriter.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectDatumWriter.java Mon Jan 11 19:13:17 2010 @@ -32,16 +32,16 @@ * {@link org.apache.avro.io.DatumWriter DatumWriter} for existing classes * via Java reflection. */ -public class ReflectDatumWriter extends SpecificDatumWriter { +public class ReflectDatumWriter extends SpecificDatumWriter { public ReflectDatumWriter() { this(ReflectData.get()); } - public ReflectDatumWriter(Class c) { + public ReflectDatumWriter(Class c) { this(c, ReflectData.get()); } - public ReflectDatumWriter(Class c, ReflectData data) { + public ReflectDatumWriter(Class c, ReflectData data) { this(data.getSchema(c), data); } Modified: hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectRequestor.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectRequestor.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectRequestor.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectRequestor.java Mon Jan 11 19:13:17 2010 @@ -43,12 +43,12 @@ @Override protected DatumWriter getDatumWriter(Schema schema) { - return new ReflectDatumWriter(schema); + return new ReflectDatumWriter(schema); } @Override protected DatumReader getDatumReader(Schema schema) { - return new ReflectDatumReader(schema); + return new ReflectDatumReader(schema); } /** Create a proxy instance whose methods invoke RPCs. */ Modified: hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectResponder.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectResponder.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectResponder.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/reflect/ReflectResponder.java Mon Jan 11 19:13:17 2010 @@ -36,12 +36,12 @@ @Override protected DatumWriter getDatumWriter(Schema schema) { - return new ReflectDatumWriter(schema); + return new ReflectDatumWriter(schema); } @Override protected DatumReader getDatumReader(Schema schema) { - return new ReflectDatumReader(schema); + return new ReflectDatumReader(schema); } } Modified: hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumReader.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumReader.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumReader.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumReader.java Mon Jan 11 19:13:17 2010 @@ -25,10 +25,10 @@ import org.apache.avro.generic.GenericDatumReader; /** {@link org.apache.avro.io.DatumReader DatumReader} for generated Java classes. */ -public class SpecificDatumReader extends GenericDatumReader { +public class SpecificDatumReader extends GenericDatumReader { public SpecificDatumReader() {} - public SpecificDatumReader(Class c) { + public SpecificDatumReader(Class c) { this(SpecificData.get().getSchema(c)); } Modified: hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumWriter.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumWriter.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumWriter.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificDatumWriter.java Mon Jan 11 19:13:17 2010 @@ -24,10 +24,10 @@ import org.apache.avro.io.Encoder; /** {@link org.apache.avro.io.DatumWriter DatumWriter} for generated Java classes. */ -public class SpecificDatumWriter extends GenericDatumWriter { +public class SpecificDatumWriter extends GenericDatumWriter { public SpecificDatumWriter() {} - public SpecificDatumWriter(Class c) { + public SpecificDatumWriter(Class c) { super(SpecificData.get().getSchema(c), SpecificData.get()); } Modified: hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificRequestor.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificRequestor.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificRequestor.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificRequestor.java Mon Jan 11 19:13:17 2010 @@ -54,11 +54,11 @@ } protected DatumWriter getDatumWriter(Schema schema) { - return new SpecificDatumWriter(schema); + return new SpecificDatumWriter(schema); } protected DatumReader getDatumReader(Schema schema) { - return new SpecificDatumReader(schema); + return new SpecificDatumReader(schema); } @Override Modified: hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificResponder.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificResponder.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificResponder.java (original) +++ hadoop/avro/trunk/src/java/org/apache/avro/specific/SpecificResponder.java Mon Jan 11 19:13:17 2010 @@ -55,11 +55,11 @@ } protected DatumWriter getDatumWriter(Schema schema) { - return new SpecificDatumWriter(schema); + return new SpecificDatumWriter(schema); } protected DatumReader getDatumReader(Schema schema) { - return new SpecificDatumReader(schema); + return new SpecificDatumReader(schema); } @Override Modified: hadoop/avro/trunk/src/test/java/org/apache/avro/TestCompare.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/test/java/org/apache/avro/TestCompare.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/test/java/org/apache/avro/TestCompare.java (original) +++ hadoop/avro/trunk/src/test/java/org/apache/avro/TestCompare.java Mon Jan 11 19:13:17 2010 @@ -172,28 +172,28 @@ s2.hash.bytes(new byte[] {0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,6}); Schema schema = SpecificData.get().getSchema(TestRecord.class); - check(schema, s1, s2, true, new SpecificDatumWriter(schema), + check(schema, s1, s2, true, new SpecificDatumWriter(schema), SpecificData.get()); s2.kind = Kind.BAZ; - check(schema, s1, s2, true, new SpecificDatumWriter(schema), + check(schema, s1, s2, true, new SpecificDatumWriter(schema), SpecificData.get()); } - private static void check(String schemaJson, Object o1, Object o2) + private static void check(String schemaJson, T o1, T o2) throws Exception { check(schemaJson, o1, o2, true); } - private static void check(String schemaJson, Object o1, Object o2, + private static void check(String schemaJson, T o1, T o2, boolean comparable) throws Exception { check(Schema.parse(schemaJson), o1, o2, comparable, - new GenericDatumWriter(), GenericData.get()); + new GenericDatumWriter(), GenericData.get()); } - private static void check(Schema schema, Object o1, Object o2, + private static void check(Schema schema, T o1, T o2, boolean comparable, - DatumWriter writer, + DatumWriter writer, GenericData comparator) throws Exception { @@ -229,8 +229,8 @@ : comparator.compare(o1, o2, schema); } - private static byte[] render(Object datum, Schema schema, - DatumWriter writer) + private static byte[] render(T datum, Schema schema, + DatumWriter writer) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); writer.setSchema(schema); Modified: hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFile.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFile.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFile.java (original) +++ hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFile.java Mon Jan 11 19:13:17 2010 @@ -180,7 +180,7 @@ @Test public void testGeneratedSpecific() throws IOException { - readFiles(new SpecificDatumReader()); + readFiles(new SpecificDatumReader()); } // Can't use same Interop.java as specific for reflect, since its stringField Modified: hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFileReflect.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFileReflect.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFileReflect.java (original) +++ hadoop/avro/trunk/src/test/java/org/apache/avro/TestDataFileReflect.java Mon Jan 11 19:13:17 2010 @@ -53,18 +53,18 @@ reflectData.getSchema(BarRecord.class) }); Schema union = Schema.createUnion(schemas); DataFileWriter writer = - new DataFileWriter(new ReflectDatumWriter(union)) + new DataFileWriter(new ReflectDatumWriter(union)) .create(union, fos); // test writing to a file - CheckList check = new CheckList(); + CheckList check = new CheckList(); write(writer, new BarRecord("One beer please"), check); write(writer, new FooRecord(10), check); write(writer, new BarRecord("Two beers please"), check); write(writer, new FooRecord(20), check); writer.close(); - ReflectDatumReader din = new ReflectDatumReader(); + ReflectDatumReader din = new ReflectDatumReader(); SeekableFileInput sin = new SeekableFileInput(FILE); DataFileReader reader = new DataFileReader(sin, din); int count = 0; @@ -83,23 +83,23 @@ ReflectData reflectData = ReflectData.AllowNull.get(); Schema schema = reflectData.getSchema(BarRecord.class); - DataFileWriter writer = new DataFileWriter - (new ReflectDatumWriter(BarRecord.class, reflectData)) + DataFileWriter writer = new DataFileWriter + (new ReflectDatumWriter(BarRecord.class, reflectData)) .create(schema, fos); // test writing to a file - CheckList check = new CheckList(); + CheckList check = new CheckList(); write(writer, new BarRecord("One beer please"), check); // null record here, fails when using the default reflectData instance write(writer, new BarRecord(), check); write(writer, new BarRecord("Two beers please"), check); writer.close(); - ReflectDatumReader din = new ReflectDatumReader(); + ReflectDatumReader din = new ReflectDatumReader(); SeekableFileInput sin = new SeekableFileInput(FILE); - DataFileReader reader = new DataFileReader(sin, din); + DataFileReader reader = new DataFileReader(sin, din); int count = 0; - for (Object datum : reader) + for (BarRecord datum : reader) check.assertEquals(datum, count++); Assert.assertEquals(count, check.size()); reader.close(); @@ -113,34 +113,34 @@ FileOutputStream fos = new FileOutputStream(FILE); Schema schema = ReflectData.get().getSchema(BazRecord.class); - DataFileWriter writer = - new DataFileWriter(new ReflectDatumWriter(schema)) + DataFileWriter writer = + new DataFileWriter(new ReflectDatumWriter(schema)) .create(schema, fos); // test writing to a file - CheckList check = new CheckList(); + CheckList check = new CheckList(); write(writer, new BazRecord(10), check); write(writer, new BazRecord(20), check); writer.close(); - ReflectDatumReader din = new ReflectDatumReader(); + ReflectDatumReader din = new ReflectDatumReader(); SeekableFileInput sin = new SeekableFileInput(FILE); - DataFileReader reader = new DataFileReader(sin, din); + DataFileReader reader = new DataFileReader(sin, din); int count = 0; - for (Object datum : reader) + for (BazRecord datum : reader) check.assertEquals(datum, count++); Assert.assertEquals(count, check.size()); reader.close(); } - private void write(DataFileWriter writer, Object o, CheckList l) + private void write(DataFileWriter writer, T o, CheckList l) throws IOException { writer.append(l.addAndReturn(o)); } @SuppressWarnings("serial") - private static class CheckList extends ArrayList { - Object addAndReturn(Object check) { + private static class CheckList extends ArrayList { + T addAndReturn(T check) { add(check); return check; } Modified: hadoop/avro/trunk/src/test/java/org/apache/avro/TestReflect.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/test/java/org/apache/avro/TestReflect.java?rev=898014&r1=898013&r2=898014&view=diff ============================================================================== --- hadoop/avro/trunk/src/test/java/org/apache/avro/TestReflect.java (original) +++ hadoop/avro/trunk/src/test/java/org/apache/avro/TestReflect.java Mon Jan 11 19:13:17 2010 @@ -268,10 +268,10 @@ checkReadWrite(object, ReflectData.get().getSchema(object.getClass())); } void checkReadWrite(Object object, Schema s) throws Exception { - ReflectDatumWriter writer = new ReflectDatumWriter(s); + ReflectDatumWriter writer = new ReflectDatumWriter(s); ByteArrayOutputStream out = new ByteArrayOutputStream(); writer.write(object, new BinaryEncoder(out)); - ReflectDatumReader reader = new ReflectDatumReader(s); + ReflectDatumReader reader = new ReflectDatumReader(s); Object after = reader.read(null, new BinaryDecoder (new ByteArrayInputStream(out.toByteArray()))); @@ -303,14 +303,16 @@ @Test public void testRecordIO() throws IOException { Schema schm = ReflectData.get().getSchema(SampleRecord.class); - ReflectDatumWriter writer = new ReflectDatumWriter(schm); + ReflectDatumWriter writer = + new ReflectDatumWriter(schm); ByteArrayOutputStream out = new ByteArrayOutputStream(); SampleRecord record = new SampleRecord(); record.x = 5; record.y = 10; writer.write(record, new BinaryEncoder(out)); - ReflectDatumReader reader = new ReflectDatumReader(schm); - Object decoded = + ReflectDatumReader reader = + new ReflectDatumReader(schm); + SampleRecord decoded = reader.read(null, new BinaryDecoder (new ByteArrayInputStream(out.toByteArray()))); assertEquals(record, decoded); @@ -320,16 +322,18 @@ public void testRecordWithNullIO() throws IOException { ReflectData reflectData = ReflectData.AllowNull.get(); Schema schm = reflectData.getSchema(AnotherSampleRecord.class); - ReflectDatumWriter writer = new ReflectDatumWriter(schm); + ReflectDatumWriter writer = + new ReflectDatumWriter(schm); ByteArrayOutputStream out = new ByteArrayOutputStream(); // keep record.a null and see if that works AnotherSampleRecord a = new AnotherSampleRecord(); writer.write(a, new BinaryEncoder(out)); AnotherSampleRecord b = new AnotherSampleRecord(10); writer.write(b, new BinaryEncoder(out)); - ReflectDatumReader reader = new ReflectDatumReader(schm); + ReflectDatumReader reader = + new ReflectDatumReader(schm); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); - Object decoded = reader.read(null, new BinaryDecoder(in)); + AnotherSampleRecord decoded = reader.read(null, new BinaryDecoder(in)); assertEquals(a, decoded); decoded = reader.read(null, new BinaryDecoder(in)); assertEquals(b, decoded);