You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Scott Carey (JIRA)" <ji...@apache.org> on 2010/09/16 06:53:33 UTC

[jira] Updated: (AVRO-667) GenericArray fails to compare with List. SpecificRecord compare gets ClassCastException

     [ https://issues.apache.org/jira/browse/AVRO-667?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Scott Carey updated AVRO-667:
-----------------------------

    Attachment: AVRO-667.patch

This patch makes GenericData compatible with Lists and CharSequence for equals() and hashCode().

It also adds unit tests for those two functions that are more complete and demonstrate the issue.  The current code coverage, after these tests, is 32% for GenericData.  We should increase that to 90%+, but perhaps in another ticket.

> GenericArray fails to compare with List.  SpecificRecord compare gets ClassCastException
> ----------------------------------------------------------------------------------------
>
>                 Key: AVRO-667
>                 URL: https://issues.apache.org/jira/browse/AVRO-667
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.4.0
>            Reporter: Scott Carey
>            Assignee: Scott Carey
>            Priority: Blocker
>             Fix For: 1.4.1
>
>         Attachments: AVRO-667.patch
>
>
> AVRO-637 is incomplete.
> I am unable to convert my SpecificRecord project to 1.4.  It compiles, but unit tests get runtime exceptions.
> compareTo in GenericData does not handle List vs GenericArray and I get class cast exceptions.
> {noformat}
> java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.apache.avro.generic.GenericArray
> 	at org.apache.avro.generic.GenericData.compare(GenericData.java:502)
> 	at org.apache.avro.specific.SpecificData.compare(SpecificData.java:190)
> 	at org.apache.avro.generic.GenericData.compare(GenericData.java:494)
> 	at org.apache.avro.specific.SpecificData.compare(SpecificData.java:190)
> 	at org.apache.avro.specific.SpecificRecordBase.compareTo(SpecificRecordBase.java:45)
> 	at org.apache.avro.specific.SpecificRecordBase.equals(SpecificRecordBase.java:35)
> 	at com.rr.eventdata.ViewRecord.equals(ViewRecord.java:350)
> 	at com.rr.eventdata.WriteStuffTest.main(WriteStuffTest.java:143)
> 	at com.rr.eventdata.WriteStuffTest.testReadWriteDataFile(WriteStuffTest.java:55)
> {noformat}
> Also,  an array of string in SpecificRecord ends up as List<CharSequence>.  
> However, it should be List<? extends CharSequence> or else you can't assign a List<String> to it.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.