Equals() on SpecificRecord fails (java) ---------------------------------------
Key: AVRO-336 URL: https://issues.apache.org/jira/browse/AVRO-336 Project: Avro Issue Type: Bug Components: java Affects Versions: 1.3.0 Reporter: Scott Carey Fix For: 1.3.0 rev 899520, trunk. Calling equals() on an object generated by the SpecificAPI fails. The object is a record with several fields, one is an array. This object can serialize and deserialize, binary and json. But equals() fails, as well as hashCode() in some cases. It fails in Schema.java, line 217. {code} /** If this is an array, returns its element type. */ public Schema getElementType() { throw new AvroRuntimeException("Not an array: "+this); } {code} This looks unimplemented. The stack trace is: {noformat} Exception in thread "main" org.apache.avro.AvroRuntimeException: Not an array: {"type":"record","name":"Variable","namespace":"com.rr.avro","fields":[{"name":"variableId","type":"int"},{"name":"selectedValue","type":"string"}]} at org.apache.avro.Schema.getElementType(Schema.java:217) at org.apache.avro.generic.GenericData.compare(GenericData.java:468) at org.apache.avro.specific.SpecificData.compare(SpecificData.java:250) at org.apache.avro.specific.SpecificData.compare(SpecificData.java:242) at org.apache.avro.specific.SpecificRecordBase.compareTo(SpecificRecordBase.java:45) at org.apache.avro.specific.SpecificRecordBase.equals(SpecificRecordBase.java:35) {noformat} That record is the element type of the array, so I think this is just due to the implementation being incomplete. The specific compiler could also generate equals() methods (which would be more efficient than traversing the schema). I wonder if eclipse's "generate hashcode and equals" code is usable. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.