Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

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


Copy link to this message
-
Re: 1.7.3 regression?
This was done as a part of AVRO-1199.

http://svn.apache.org/viewvc?view=revision&revision=1409542

The deepCopy() method is now generic.  This works for me in Java 7.
Do others see this problem in Java 6?  If so, please file a bug in
Jira.

Thanks,

Doug

On Sun, Feb 10, 2013 at 5:21 PM, Alex Kozlov <[EMAIL PROTECTED]> wrote:
> 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]