[ 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