Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
Avro >> mail # user >> 1.7.3 regression?


Copy link to this message
-
1.7.3 regression?
When trying to compile generated code for the following schema:

{code}
 {
  "type" : "record",
  "namespace" : "com.mycompany.hadoop",
  "name" : "AvroDisk",
  "fields" : [ {
    "name" : "serial_num",
    "type" : [ "null", "string" ],
    "doc" : "Serial Number"
  }, {
    "name" : "seq",
    "type" : [ "null", "long" ],
    "doc" : "Sequence #"
  }, {
    "name" : "attributes",
    "type" : [ "null", {
      "type" : "map",
      "values" : "string"
    } ],
    "doc" : "Attributes of a disk"
  } ]
}
{code}

I get errors:

{code}
[ERROR] /Users/akozlov/.../AvroDisk.java:[137,41] incompatible types
[ERROR] found   : java.lang.Object
[ERROR] required: java.lang.CharSequence
[ERROR] /Users/akozlov/.../AvroDisk.java:[141,34] incompatible types
[ERROR] found   : java.lang.Object
[ERROR] required: java.lang.Long
[ERROR] /Users/akozlov/.../AvroDisk.java:[145,41] incompatible types
[ERROR] found   : java.lang.Object
[ERROR] required: java.util.Map<java.lang.CharSequence,java.lang.CharSequence>
{code}

It appears that the 1.7.3 code is missing an explicit cast to
((java.lang.{CharSequence, Long,Map}) in the Builder method:

{code}
  133     /** Creates a Builder by copying an existing AvroDisk instance */
    134     private Builder(com.seagate.hadoop.avro.AvroDisk other) {
    135             super(com.seagate.hadoop.avro.AvroDisk.SCHEMA$);
    136       if (isValidValue(fields()[0], other.serial_num)) {
    137         this.serial_num data().deepCopy(fields()[0].schema(), other.serial_num);
    138         fieldSetFlags()[0] = true;
    139       }
    140       if (isValidValue(fields()[1], other.seq)) {
    141         this.seq = data().deepCopy(fields()[1].schema(), other.seq);
    142         fieldSetFlags()[1] = true;
    143       }
    144       if (isValidValue(fields()[2], other.attributes)) {
    145         this.attributes data().deepCopy(fields()[2].schema(), other.attributes);
    146         fieldSetFlags()[2] = true;
    147       }
    148     }
{code}

The compiler works fine for 1.7.1 and 1.7.2 versions.  The java
version I am using is:

$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

Has anyone else seen this error?

Thx,

--
Alex Kozlov
(408) 507-4987
(408) 830-9982 fax
(650) 887-2135 efax
[EMAIL PROTECTED]
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB