[ http://issues.apache.org/jira/browse/JDO-364?page=all ]

Michael Bouschen updated JDO-364:
---------------------------------

    Attachment: JDO-364.patch

Attached you find a patch (JDO-364.patch) implementing the proposed compare 
changes. I added the static compare helper method to the EqualityHelper. I 
removed two isAssignableFrom checks from the EqualityHelper class.

> Completness tests fail with generated implementation classes for interfaces
> ---------------------------------------------------------------------------
>
>          Key: JDO-364
>          URL: http://issues.apache.org/jira/browse/JDO-364
>      Project: JDO
>         Type: Bug

>   Components: tck20
>     Versions: JDO 2 rc1
>     Reporter: Craig Russell
>     Assignee: Michael Bouschen
>      Fix For: JDO 2 final
>  Attachments: JDO-364.patch
>
> Completeness tests fail while comparing collections of persistent interfaces. 
> This is because EqualityHelper invokes Collections.sort(Collection), which 
> requires that the instances in the parameter Collection implement compareTo. 
> The instances are not required by the specification to implement compareTo; 
> therefore a Comparator must be provided to the sort method.
> Further, classes Department and FullTimeEmployee incorrectly cast to the 
> class instead of the interface in the deepCompareFields method.
> Finally, the root classes Address, Company, Department, Insurance, Person, 
> and Project need to implement the compare(Object, Object) methods directly, 
> as there are three instances involved: the Comparator instance, which is an 
> instance of the class, and the two instances to be compared. Both of the 
> instances to be compared might be of the JDO-generated classes, which don't 
> implement any comparison methods. The compare(Object, Object), 
> compareTo(Object), and compareTo(SpecificInterface) should be refactored to 
> use a common implementation using only the interface for comparison.
> As a specification activity beyond JDO 2.0, we might consider adding metadata 
> to require the JDO implementation to generate comparison methods from the 
> Comparable or Comparator interfaces based on field values. For datastore 
> identity, simply tagging the interfaces, e.g. "interface IDepartment extends 
> Comparable", doesn't give the implementation enough information as to which 
> fields to compare.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to