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/02/02 23:51:58 UTC

svn commit: r905827 - 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 Feb  2 22:51:57 2010
New Revision: 905827

URL: http://svn.apache.org/viewvc?rev=905827&view=rev
Log:
AVRO-350.  Fix GenericData.Record#get(String) to return null rather than throw NPE when passed a field name not in the record.  Contributed by Kevin Oliver.

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=905827&r1=905826&r2=905827&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Tue Feb  2 22:51:57 2010
@@ -414,6 +414,10 @@
 
     AVRO-361. Specific Compiler fails to handle union with two fixed branches (Scott Carey via philz)
 
+    AVRO-350. Fix GenericData.Record#get(String) to return null rather than
+    throw NPE when passed a field name that's not in the record.
+    (Kevin Oliver via cutting)
+
 Avro 1.2.0 (14 October 2009)
 
   INCOMPATIBLE CHANGES

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=905827&r1=905826&r2=905827&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 Feb  2 22:51:57 2010
@@ -56,7 +56,9 @@
     }
     @Override public void put(int i, Object v) { values[i] = v; }
     @Override public Object get(String key) {
-      return values[schema.getFields().get(key).pos()];
+      Field field = schema.getFields().get(key);
+      if (field == null) return null;
+      return values[field.pos()];
     }
     @Override public Object get(int i) { return values[i]; }
     @Override public boolean equals(Object o) {

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=905827&r1=905826&r2=905827&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 Feb  2 22:51:57 2010
@@ -17,11 +17,14 @@
  */
 package org.apache.avro.generic;
 
+import java.util.LinkedHashMap;
+
 import static org.junit.Assert.*;
 
 import java.util.Arrays;
 
 import org.apache.avro.Schema;
+import org.apache.avro.Schema.Field;
 import org.apache.avro.AvroRuntimeException;
 import org.apache.avro.Schema.Type;
 
@@ -57,4 +60,12 @@
         Arrays.asList(Schema.create(Type.BOOLEAN), Schema.create(Type.STRING))));
   }
 
+  @Test
+  public void testRecordGetFieldDoesntExist() throws Exception {
+    LinkedHashMap<String, Field> fields = new LinkedHashMap<String, Field>();
+    Schema schema = Schema.createRecord(fields);
+    GenericData.Record record = new GenericData.Record(schema);
+    assertNull(record.get("does not exist"));
+  }
+    
 }