db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Russell (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-364) Completness tests fail with generated implementation classes for interfaces
Date Thu, 06 Apr 2006 22:33:57 GMT
    [ http://issues.apache.org/jira/browse/JDO-364?page=comments#action_12373551 ] 

Craig Russell commented on JDO-364:
-----------------------------------

Nice.

Just one comment. The javadoc for the static compare methods have the description appropriate
for compareTo, not compare.

+    /**
+     * Compares two instance of IInsurance for order. Returns a negative
+     * integer, zero, or a positive integer as this object is less than, equal
+     * to, or greater than the specified object.  
+     * @param o1 The first IInsurance object to be compared. 
+     * @param o2 The second IInsurance object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(IInsurance o1, IInsurance o2) {
+        return EqualityHelper.compare(o1.getInsid(), o2.getInsid());
+    }


> 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


Mime
View raw message