You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by th...@apache.org on 2010/07/05 05:17:07 UTC

svn commit: r960427 - in /avro/trunk: ./ lang/java/src/java/org/apache/avro/io/parsing/ lang/java/src/test/java/org/apache/avro/io/

Author: thiru
Date: Mon Jul  5 03:17:04 2010
New Revision: 960427

URL: http://svn.apache.org/viewvc?rev=960427&view=rev
Log:
AVRO-589. ClassCastException: org.apache.avro.io.parsing.Symbol$Alternative cannot be cast to org.apache.avro.io.parsing.Symbol$UnionAdjustAction

Modified:
    avro/trunk/CHANGES.txt
    avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
    avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIO.java
    avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java

Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=960427&r1=960426&r2=960427&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Mon Jul  5 03:17:04 2010
@@ -77,6 +77,8 @@ Avro 1.4.0 (unreleased)
     AVRO-571. Fix how we handle out-of-bounds indexes for union and 
     enum parsing in Python (hammer)
 
+    AVRO-589. ClassCastException: org.apache.avro.io.parsing.Symbol$Alternative cannot be cast to org.apache.avro.io.parsing.Symbol$UnionAdjustAction (thiru)
+
 Avro 1.3.3 (7 June 2010)
 
   IMPROVEMENTS

Modified: avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java?rev=960427&r1=960426&r2=960427&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java Mon Jul  5 03:17:04 2010
@@ -249,8 +249,7 @@ public class ResolvingGrammarGenerator e
         Field rf = reader.getField(fname);
         if (rf == null) {
           production[--count] =
-            new Symbol.SkipAction(super.generate(wf.schema(),
-              seen));
+            new Symbol.SkipAction(generate(wf.schema(), wf.schema(), seen));
         } else {
           production[--count] =
             generate(wf.schema(), rf.schema(), seen);

Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIO.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIO.java?rev=960427&r1=960426&r2=960427&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIO.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIO.java Mon Jul  5 03:17:04 2010
@@ -54,7 +54,7 @@ public class TestResolvingIO {
   
   @Test
   public void testIdentical() throws IOException {
-    performTest(eEnc, iSkipL, sJsWrtSchm, sWrtCls, sJsRdrSchm, sRdrCls);
+    performTest(eEnc, iSkipL, sJsWrtSchm, sWrtCls, sJsWrtSchm, sWrtCls);
   }
 
   private static final int COUNT = 10;

Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java?rev=960427&r1=960426&r2=960427&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java Mon Jul  5 03:17:04 2010
@@ -175,6 +175,19 @@ public class TestResolvingIOResolving {
             "[ \"long\", \"string\"]", "U0L", new Object[] { 100L } },
         { "[ \"int\", \"string\"]", "U0I", new Object[] { 100 },
             "\"long\"", "L", new Object[] { 100 } },
+        // Record where union field is skipped.
+        { "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
+          + "{\"name\":\"f0\", \"type\":\"boolean\"},"
+          + "{\"name\":\"f1\", \"type\":\"int\"},"
+          + "{\"name\":\"f2\", \"type\":[\"int\", \"long\"]},"
+          + "{\"name\":\"f3\", \"type\":\"float\"}"
+          + "]}", "BIU0IF",
+          new Object[] { true, 100, 121, 10.75f },
+          "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
+          + "{\"name\":\"f0\", \"type\":\"boolean\"},"
+          + "{\"name\":\"f1\", \"type\":\"long\"},"
+          + "{\"name\":\"f3\", \"type\":\"double\"}]}", "BLD",
+          new Object[] { true, 100L, 10.75d } },
     };
   }
 }