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/12/03 17:39:42 UTC

svn commit: r1041903 - in /avro/trunk: CHANGES.txt lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java lang/java/src/test/java/org/apache/avro/io/TestResolvingIO.java

Author: thiru
Date: Fri Dec  3 16:39:42 2010
New Revision: 1041903

URL: http://svn.apache.org/viewvc?rev=1041903&view=rev
Log:
Fixed AVRO-706. Java: Type promotion not succeeding for long -> float

Modified:
    avro/trunk/CHANGES.txt
    avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java
    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

Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1041903&r1=1041902&r2=1041903&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Fri Dec  3 16:39:42 2010
@@ -56,6 +56,8 @@ Avro 1.5.0 (unreleased)
 
     AVRO-702. Java: Fix a bug printing nested record namespaces. (cutting)
 
+    AVRO-706. Java: Type promotion not succeeding for long -> float. (thiru)
+
 Avro 1.4.1 (13 October 2010)
 
   NEW FEATURES

Modified: avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java?rev=1041903&r1=1041902&r2=1041903&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java Fri Dec  3 16:39:42 2010
@@ -155,6 +155,19 @@ public class ResolvingDecoder extends Va
   }
 
   @Override
+  public float readFloat() throws IOException {
+    Symbol actual = parser.advance(Symbol.FLOAT);
+    if (actual == Symbol.INT) {
+      return (float) in.readInt();
+    } else if (actual == Symbol.LONG) {
+      return (float) in.readLong();
+    } else {
+      assert actual == Symbol.FLOAT;
+      return (float) in.readFloat();
+    }
+  }
+  
+  @Override
   public double readDouble() throws IOException {
     Symbol actual = parser.advance(Symbol.DOUBLE);
     if (actual == Symbol.INT) {

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=1041903&r1=1041902&r2=1041903&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 Fri Dec  3 16:39:42 2010
@@ -130,12 +130,18 @@ public class ResolvingGrammarGenerator e
       case LONG:
         switch (writerType) {
         case INT:
-        case DOUBLE:
-        case FLOAT:
           return Symbol.resolve(super.generate(writer, seen), Symbol.LONG);
         }
         break;
   
+      case FLOAT:
+        switch (writerType) {
+        case INT:
+        case LONG:
+          return Symbol.resolve(super.generate(writer, seen), Symbol.FLOAT);
+        }
+        break;
+  
       case DOUBLE:
         switch (writerType) {
         case INT:
@@ -156,7 +162,6 @@ public class ResolvingGrammarGenerator e
       case BOOLEAN:
       case INT:
       case STRING:
-      case FLOAT:
       case BYTES:
       case ENUM:
       case ARRAY:

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=1041903&r1=1041902&r2=1041903&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 Fri Dec  3 16:39:42 2010
@@ -124,12 +124,12 @@ public class TestResolvingIO {
   private static Object[][] testSchemas() {
     // The mnemonics are the same as {@link TestValidatingIO#testSchemas}
     return new Object[][] {
-        // { "\"int\"", "I", "\"float\"", "F" }, // makes sense?
+        { "\"int\"", "I", "\"float\"", "F" },
         { "\"int\"", "I", "\"double\"", "D" },
-        // { "\"long\"", "L", "\"float\"", "F" }, // And this?
+        { "\"int\"", "I", "\"long\"", "L" },
+        { "\"long\"", "L", "\"float\"", "F" },
         { "\"long\"", "L", "\"double\"", "D" },
         { "\"float\"", "F", "\"double\"", "D" },
-        { "\"double\"", "D", "\"long\"", "L" },
 
         { "{\"type\":\"array\", \"items\": \"int\"}", "[]",
           "{\"type\":\"array\", \"items\": \"long\"}", "[]", },