Return-Path: Delivered-To: apmail-avro-commits-archive@www.apache.org Received: (qmail 17830 invoked from network); 31 Mar 2011 00:03:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 31 Mar 2011 00:03:26 -0000 Received: (qmail 70587 invoked by uid 500); 30 Mar 2011 23:36:45 -0000 Delivered-To: apmail-avro-commits-archive@avro.apache.org Received: (qmail 70564 invoked by uid 500); 30 Mar 2011 23:36:45 -0000 Mailing-List: contact commits-help@avro.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@avro.apache.org Delivered-To: mailing list commits@avro.apache.org Received: (qmail 70552 invoked by uid 99); 30 Mar 2011 23:36:45 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Mar 2011 23:36:45 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.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; Wed, 30 Mar 2011 23:36:42 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 3CE102388A19; Wed, 30 Mar 2011 23:36:21 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1087136 - in /avro/trunk: ./ lang/java/avro/src/main/java/org/apache/avro/reflect/ lang/java/avro/src/test/java/org/apache/avro/ Date: Wed, 30 Mar 2011 23:36:21 -0000 To: commits@avro.apache.org From: cutting@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110330233621.3CE102388A19@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cutting Date: Wed Mar 30 23:36:20 2011 New Revision: 1087136 URL: http://svn.apache.org/viewvc?rev=1087136&view=rev Log: AVRO-780. Java: Fix a NullPointerException with reflect data when a union contains an array and null. Modified: avro/trunk/CHANGES.txt avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectDatumWriter.java avro/trunk/lang/java/avro/src/test/java/org/apache/avro/TestReflect.java Modified: avro/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1087136&r1=1087135&r2=1087136&view=diff ============================================================================== --- avro/trunk/CHANGES.txt (original) +++ avro/trunk/CHANGES.txt Wed Mar 30 23:36:20 2011 @@ -29,6 +29,9 @@ Avro 1.5.1 (unreleased) AVRO-786. Java: Fix equals() to work on objects containing maps. (cutting) + AVRO-780. Java: Fix a NullPointerException with reflect data when + a union contains an array and null. (cutting) + Avro 1.5.0 (10 March 2011) INCOMPATIBLE CHANGES Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java?rev=1087136&r1=1087135&r2=1087136&view=diff ============================================================================== --- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java (original) +++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectData.java Wed Mar 30 23:36:20 2011 @@ -106,6 +106,7 @@ public class ReflectData extends Specifi @Override protected boolean isArray(Object datum) { + if (datum == null) return false; return (datum instanceof Collection) || datum.getClass().isArray(); } Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectDatumWriter.java URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectDatumWriter.java?rev=1087136&r1=1087135&r2=1087136&view=diff ============================================================================== --- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectDatumWriter.java (original) +++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/reflect/ReflectDatumWriter.java Wed Mar 30 23:36:20 2011 @@ -103,7 +103,7 @@ public class ReflectDatumWriter exten } catch (NullPointerException e) { // improve error message NullPointerException result = new NullPointerException("in "+schema.getFullName()+" "+e.getMessage()); - result.initCause(e); + result.initCause(e.getCause() == null ? e : e.getCause()); throw result; } } Modified: avro/trunk/lang/java/avro/src/test/java/org/apache/avro/TestReflect.java URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/test/java/org/apache/avro/TestReflect.java?rev=1087136&r1=1087135&r2=1087136&view=diff ============================================================================== --- avro/trunk/lang/java/avro/src/test/java/org/apache/avro/TestReflect.java (original) +++ avro/trunk/lang/java/avro/src/test/java/org/apache/avro/TestReflect.java Wed Mar 30 23:36:20 2011 @@ -550,6 +550,14 @@ public class TestReflect { checkBinary(schema, record); } + /** Test union of null and an array. */ + @Test + public void testNullArray() throws Exception { + String json = "[{\"type\":\"array\", \"items\": \"long\"}, \"null\"]"; + Schema schema = Schema.parse(json); + checkBinary(schema, null); + } + public static void checkBinary(Schema schema, Object datum) throws IOException { ReflectDatumWriter writer = new ReflectDatumWriter(schema);