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/19 01:49:33 UTC
svn commit: r900628 - in /hadoop/avro/trunk: CHANGES.txt
lang/java/src/java/org/apache/avro/generic/GenericData.java
lang/java/src/test/java/org/apache/avro/generic/TestGenericData.java
Author: cutting
Date: Tue Jan 19 00:49:33 2010
New Revision: 900628
URL: http://svn.apache.org/viewvc?rev=900628&view=rev
Log:
AVRO-336. Check that appropriate schemas are passed to GenericRecord#Array and #Record.
Modified:
hadoop/avro/trunk/CHANGES.txt
hadoop/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java
hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/generic/TestGenericData.java
Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=900628&r1=900627&r2=900628&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Tue Jan 19 00:49:33 2010
@@ -224,6 +224,9 @@
AVRO-198. Fix specification of protocol name, also clarify which
properties are required. (cutting)
+ AVRO-336. Check that appropriate schemas are passed to
+ GenericData#Record and #Array. (cutting)
+
OPTIMIZATIONS
AVRO-172. More efficient schema processing (massie)
Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java?rev=900628&r1=900627&r2=900628&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java Tue Jan 19 00:49:33 2010
@@ -45,7 +45,8 @@
private final Schema schema;
private final Object[] values;
public Record(Schema schema) {
- if (schema == null) throw new NullPointerException();
+ if (schema == null || !Type.RECORD.equals(schema.getType()))
+ throw new AvroRuntimeException("Not a record schema: "+schema);
this.schema = schema;
this.values = new Object[schema.getFields().size()];
}
@@ -86,7 +87,8 @@
private int size;
private Object[] elements = EMPTY;
public Array(int capacity, Schema schema) {
- if (schema == null) throw new NullPointerException();
+ if (schema == null || !Type.ARRAY.equals(schema.getType()))
+ throw new AvroRuntimeException("Not an array schema: "+schema);
this.schema = schema;
if (capacity != 0)
elements = new Object[capacity];
Modified: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/generic/TestGenericData.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/generic/TestGenericData.java?rev=900628&r1=900627&r2=900628&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/generic/TestGenericData.java (original)
+++ hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/generic/TestGenericData.java Tue Jan 19 00:49:33 2010
@@ -19,18 +19,31 @@
import static org.junit.Assert.*;
+import org.apache.avro.Schema;
+import org.apache.avro.AvroRuntimeException;
+
import org.junit.Test;
public class TestGenericData {
- @Test(expected=NullPointerException.class)
+ @Test(expected=AvroRuntimeException.class)
public void testrecordConstructorNullSchema() throws Exception {
new GenericData.Record(null);
}
- @Test(expected=NullPointerException.class)
+ @Test(expected=AvroRuntimeException.class)
+ public void testrecordConstructorWrongSchema() throws Exception {
+ new GenericData.Record(Schema.create(Schema.Type.INT));
+ }
+
+ @Test(expected=AvroRuntimeException.class)
public void testArrayConstructorNullSchema() throws Exception {
new GenericData.Array<Object>(1, null);
}
+ @Test(expected=AvroRuntimeException.class)
+ public void testArrayConstructorWrongSchema() throws Exception {
+ new GenericData.Array<Object>(1, Schema.create(Schema.Type.INT));
+ }
+
}