You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2010/01/11 20:13:18 UTC
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/
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<MD5,Protocol> REMOTE_PROTOCOLS =
Collections.synchronizedMap(new HashMap<MD5,Protocol>());
- private static final SpecificDatumWriter HANDSHAKE_WRITER =
- new SpecificDatumWriter(HandshakeRequest.class);
+ private static final SpecificDatumWriter<HandshakeRequest> HANDSHAKE_WRITER =
+ new SpecificDatumWriter<HandshakeRequest>(HandshakeRequest.class);
- private static final SpecificDatumReader HANDSHAKE_READER =
- new SpecificDatumReader(HandshakeResponse.class);
+ private static final SpecificDatumReader<HandshakeResponse> HANDSHAKE_READER =
+ new SpecificDatumReader<HandshakeResponse>(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<HandshakeResponse> handshakeWriter =
+ new SpecificDatumWriter<HandshakeResponse>(HandshakeResponse.class);
+ private SpecificDatumReader<HandshakeRequest> handshakeReader =
+ new SpecificDatumReader<HandshakeRequest>(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<T> extends SpecificDatumReader<T> {
public ReflectDatumReader() {}
- public ReflectDatumReader(Class c) {
+ public ReflectDatumReader(Class<T> 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<T> extends SpecificDatumWriter<T> {
public ReflectDatumWriter() {
this(ReflectData.get());
}
- public ReflectDatumWriter(Class c) {
+ public ReflectDatumWriter(Class<T> c) {
this(c, ReflectData.get());
}
- public ReflectDatumWriter(Class c, ReflectData data) {
+ public ReflectDatumWriter(Class<T> 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<Object> getDatumWriter(Schema schema) {
- return new ReflectDatumWriter(schema);
+ return new ReflectDatumWriter<Object>(schema);
}
@Override
protected DatumReader<Object> getDatumReader(Schema schema) {
- return new ReflectDatumReader(schema);
+ return new ReflectDatumReader<Object>(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<Object> getDatumWriter(Schema schema) {
- return new ReflectDatumWriter(schema);
+ return new ReflectDatumWriter<Object>(schema);
}
@Override
protected DatumReader<Object> getDatumReader(Schema schema) {
- return new ReflectDatumReader(schema);
+ return new ReflectDatumReader<Object>(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<Object> {
+public class SpecificDatumReader<T> extends GenericDatumReader<T> {
public SpecificDatumReader() {}
- public SpecificDatumReader(Class c) {
+ public SpecificDatumReader(Class<T> 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<Object> {
+public class SpecificDatumWriter<T> extends GenericDatumWriter<T> {
public SpecificDatumWriter() {}
- public SpecificDatumWriter(Class c) {
+ public SpecificDatumWriter(Class<T> 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<Object> getDatumWriter(Schema schema) {
- return new SpecificDatumWriter(schema);
+ return new SpecificDatumWriter<Object>(schema);
}
protected DatumReader<Object> getDatumReader(Schema schema) {
- return new SpecificDatumReader(schema);
+ return new SpecificDatumReader<Object>(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<Object> getDatumWriter(Schema schema) {
- return new SpecificDatumWriter(schema);
+ return new SpecificDatumWriter<Object>(schema);
}
protected DatumReader<Object> getDatumReader(Schema schema) {
- return new SpecificDatumReader(schema);
+ return new SpecificDatumReader<Object>(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<TestRecord>(schema),
SpecificData.get());
s2.kind = Kind.BAZ;
- check(schema, s1, s2, true, new SpecificDatumWriter(schema),
+ check(schema, s1, s2, true, new SpecificDatumWriter<TestRecord>(schema),
SpecificData.get());
}
- private static void check(String schemaJson, Object o1, Object o2)
+ private static <T> 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 <T> void check(String schemaJson, T o1, T o2,
boolean comparable)
throws Exception {
check(Schema.parse(schemaJson), o1, o2, comparable,
- new GenericDatumWriter<Object>(), GenericData.get());
+ new GenericDatumWriter<T>(), GenericData.get());
}
- private static void check(Schema schema, Object o1, Object o2,
+ private static <T> void check(Schema schema, T o1, T o2,
boolean comparable,
- DatumWriter<Object> writer,
+ DatumWriter<T> writer,
GenericData comparator)
throws Exception {
@@ -229,8 +229,8 @@
: comparator.compare(o1, o2, schema);
}
- private static byte[] render(Object datum, Schema schema,
- DatumWriter<Object> writer)
+ private static <T> byte[] render(T datum, Schema schema,
+ DatumWriter<T> 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<Object>());
}
// 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<Object> writer =
- new DataFileWriter<Object>(new ReflectDatumWriter(union))
+ new DataFileWriter<Object>(new ReflectDatumWriter<Object>(union))
.create(union, fos);
// test writing to a file
- CheckList check = new CheckList();
+ CheckList<Object> check = new CheckList<Object>();
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<Object> din = new ReflectDatumReader<Object>();
SeekableFileInput sin = new SeekableFileInput(FILE);
DataFileReader<Object> reader = new DataFileReader<Object>(sin, din);
int count = 0;
@@ -83,23 +83,23 @@
ReflectData reflectData = ReflectData.AllowNull.get();
Schema schema = reflectData.getSchema(BarRecord.class);
- DataFileWriter<Object> writer = new DataFileWriter<Object>
- (new ReflectDatumWriter(BarRecord.class, reflectData))
+ DataFileWriter<BarRecord> writer = new DataFileWriter<BarRecord>
+ (new ReflectDatumWriter<BarRecord>(BarRecord.class, reflectData))
.create(schema, fos);
// test writing to a file
- CheckList check = new CheckList();
+ CheckList<BarRecord> check = new CheckList<BarRecord>();
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<BarRecord> din = new ReflectDatumReader<BarRecord>();
SeekableFileInput sin = new SeekableFileInput(FILE);
- DataFileReader<Object> reader = new DataFileReader<Object>(sin, din);
+ DataFileReader<BarRecord> reader = new DataFileReader<BarRecord>(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<Object> writer =
- new DataFileWriter<Object>(new ReflectDatumWriter(schema))
+ DataFileWriter<BazRecord> writer =
+ new DataFileWriter<BazRecord>(new ReflectDatumWriter<BazRecord>(schema))
.create(schema, fos);
// test writing to a file
- CheckList check = new CheckList();
+ CheckList<BazRecord> check = new CheckList<BazRecord>();
write(writer, new BazRecord(10), check);
write(writer, new BazRecord(20), check);
writer.close();
- ReflectDatumReader din = new ReflectDatumReader();
+ ReflectDatumReader<BazRecord> din = new ReflectDatumReader<BazRecord>();
SeekableFileInput sin = new SeekableFileInput(FILE);
- DataFileReader<Object> reader = new DataFileReader<Object>(sin, din);
+ DataFileReader<BazRecord> reader = new DataFileReader<BazRecord>(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<Object> writer, Object o, CheckList l)
+ private <T> void write(DataFileWriter<T> writer, T o, CheckList<T> l)
throws IOException {
writer.append(l.addAndReturn(o));
}
@SuppressWarnings("serial")
- private static class CheckList extends ArrayList<Object> {
- Object addAndReturn(Object check) {
+ private static class CheckList<T> extends ArrayList<T> {
+ 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<Object> writer = new ReflectDatumWriter<Object>(s);
ByteArrayOutputStream out = new ByteArrayOutputStream();
writer.write(object, new BinaryEncoder(out));
- ReflectDatumReader reader = new ReflectDatumReader(s);
+ ReflectDatumReader<Object> reader = new ReflectDatumReader<Object>(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<SampleRecord> writer =
+ new ReflectDatumWriter<SampleRecord>(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<SampleRecord> reader =
+ new ReflectDatumReader<SampleRecord>(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<AnotherSampleRecord> writer =
+ new ReflectDatumWriter<AnotherSampleRecord>(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<AnotherSampleRecord> reader =
+ new ReflectDatumReader<AnotherSampleRecord>(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);