You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by cl...@apache.org on 2021/05/07 23:11:55 UTC

[db-jdo] 13/43: JDO-364 - Completness tests fail with generated implementation classes for interfaces

This is an automated email from the ASF dual-hosted git repository.

clr pushed a commit to branch origin/2.0.1
in repository https://gitbox.apache.org/repos/asf/db-jdo.git

commit 45a6ae134a2b7dc1697cfdf6cf5982f15064148f
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Fri Apr 7 10:31:46 2006 +0000

    JDO-364 - Completness tests fail with generated implementation classes for interfaces
---
 .../org/apache/jdo/tck/pc/company/Address.java     | 30 +++++++++----
 .../org/apache/jdo/tck/pc/company/Company.java     | 30 +++++++++----
 .../org/apache/jdo/tck/pc/company/Department.java  | 20 +++++++--
 .../jdo/tck/pc/company/FullTimeEmployee.java       |  2 +-
 .../org/apache/jdo/tck/pc/company/Insurance.java   | 31 ++++++++-----
 .../java/org/apache/jdo/tck/pc/company/Person.java | 33 +++++++++-----
 .../org/apache/jdo/tck/pc/company/Project.java     | 30 +++++++++----
 .../org/apache/jdo/tck/util/EqualityHelper.java    | 52 ++++++++++++++++++----
 8 files changed, 166 insertions(+), 62 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
index 49e4985..08f6406 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
@@ -206,13 +206,6 @@ public class Address
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Address)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object 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. 
@@ -227,6 +220,13 @@ public class Address
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IAddress)o1, (IAddress)o2);
+    }
+
+    /** 
      * Compares this object with the specified Address object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -237,10 +237,22 @@ public class Address
      * object. 
      */
     public int compareTo(IAddress other) {
-        long otherId = other.getAddrid();
-        return (addrid < otherId ? -1 : (addrid == otherId ? 0 : 1));
+        return compare(this, other);
     }
     
+    /**
+     * Compares its two IAddress arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IAddress object to be compared. 
+     * @param o2 the second IAddress 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(IAddress o1, IAddress o2) {
+        return EqualityHelper.compare(o1.getAddrid(), o2.getAddrid());
+    }
+
     /** 
      * Indicates whether some other object is "equal to" this one.
      * @param obj the object with which to compare.
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
index 44af95c..c240187 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
@@ -230,13 +230,6 @@ public class Company
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Company)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object 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. 
@@ -251,6 +244,13 @@ public class Company
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((ICompany)o1, (ICompany)o2);
+    }
+
+    /** 
      * Compares this object with the specified Company object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -261,8 +261,20 @@ public class Company
      * object. 
      */
     public int compareTo(ICompany other) {
-        long otherId = other.getCompanyid();
-        return (companyid < otherId ? -1 : (companyid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two ICompany arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first ICompany object to be compared. 
+     * @param o2 the second ICompany 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(ICompany o1, ICompany o2) {
+        return EqualityHelper.compare(o1.getCompanyid(), o2.getCompanyid());
     }
     
     /** 
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
index 6a98477..1c9e9bc 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
@@ -246,7 +246,7 @@ public class Department
      */
     public boolean deepCompareFields(Object other, 
                                      EqualityHelper helper) {
-        Department otherDept = (Department)other;
+        IDepartment otherDept = (IDepartment)other;
         String where = "Department<" + deptid + ">";
         return 
             helper.equals(deptid, otherDept.getDeptid(), where + ".deptid") & 
@@ -294,7 +294,7 @@ public class Department
      * Compare two instances. This is a method in Comparator.
      */
     public int compare(Object o1, Object o2) {
-        return ((Department)o1).compareTo(o2);
+        return compare((IDepartment)o1, (IDepartment)o2);
     }
 
     /** 
@@ -308,8 +308,20 @@ public class Department
      * Department object. 
      */
     public int compareTo(IDepartment other) {
-        long otherId = other.getDeptid();
-        return (deptid < otherId ? -1 : (deptid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IDepartment arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IDepartment object to be compared. 
+     * @param o2 the second IDepartment 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(IDepartment o1, IDepartment o2) {
+        return EqualityHelper.compare(o1.getDeptid(), o2.getDeptid());
     }
     
     /** 
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java b/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
index d3d1e41..2af011e 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
@@ -117,7 +117,7 @@ public class FullTimeEmployee extends Employee implements IFullTimeEmployee {
      */
     public boolean deepCompareFields(Object other, 
                                      EqualityHelper helper) {
-        FullTimeEmployee otherEmp = (FullTimeEmployee)other;
+        IFullTimeEmployee otherEmp = (IFullTimeEmployee)other;
         String where = "FullTimeEmployee<" + getPersonid() + ">";
         return super.deepCompareFields(otherEmp, helper) &
             helper.closeEnough(salary, otherEmp.getSalary(), where + ".salary");
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
index 2791165..a095f3a 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
@@ -150,13 +150,6 @@ public abstract class Insurance
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Insurance)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object 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. 
@@ -171,6 +164,13 @@ public abstract class Insurance
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IInsurance)o1, (IInsurance)o2);
+    }
+
+    /** 
      * Compares this object with the specified Insurance object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -181,10 +181,21 @@ public abstract class Insurance
      * Insurance object. 
      */
     public int compareTo(IInsurance other) {
-        long otherId = other.getInsid();
-        return (insid < otherId ? -1 : (insid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IInsurance arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @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());
     }
-    
     
     /** 
      * Indicates whether some other object is "equal to" this one.
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
index 830cd5a..e5e2020 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
@@ -289,14 +289,7 @@ public class Person
             helper.deepEquals(phoneNumbers, otherPerson.getPhoneNumbers(), where + ".phoneNumbers");
     }
 
-     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Person)o1).compareTo(o2);
-    }
-
-   /** 
+    /** 
      * Compares this object with the specified object 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. 
@@ -311,6 +304,13 @@ public class Person
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IPerson)o1, (IPerson)o2);
+    }
+
+    /** 
      * Compares this object with the specified Person object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -321,10 +321,21 @@ public class Person
      * object. 
      */
     public int compareTo(IPerson other) {
-        long otherId = other.getPersonid();
-        return (personid < otherId ? -1 : (personid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IPerson arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IPerson object to be compared. 
+     * @param o2 the second IPerson 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(IPerson o1, IPerson o2) {
+        return EqualityHelper.compare(o1.getPersonid(), o2.getPersonid());
     }
-    
     
     /** 
      * Indicates whether some other object is "equal to" this one.
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
index 8aa66b5..39158a0 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
@@ -230,13 +230,6 @@ public class Project
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Project)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object 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. 
@@ -251,6 +244,13 @@ public class Project
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IProject)o1, (IProject)o2);
+    }
+
+    /** 
      * Compares this object with the specified Project object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -261,8 +261,20 @@ public class Project
      * object. 
      */
     public int compareTo(IProject other) {
-        long otherId = other.getProjid();
-        return (projid < otherId ? -1 : (projid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IProject arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IProject object to be compared. 
+     * @param o2 the second IProject 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(IProject o1, IProject o2) {
+        return EqualityHelper.compare(o1.getProjid(), o2.getProjid());
     }
 
     /** 
diff --git a/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java b/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
index 3d19a82..2c63e5b 100644
--- a/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
+++ b/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
@@ -177,8 +177,6 @@ public class EqualityHelper {
             return true;
         if ((me == null) || (other == null))
             return false;
-        if (!me.getClass().isAssignableFrom(other.getClass()))
-            return false; 
         if (isProcessed(me))
             return true;
         markProcessed(me);
@@ -229,11 +227,19 @@ public class EqualityHelper {
         // Return false, if the size differs
         if (mine.size() != other.size())
             return false;
+
+        if (mine.size() == 0) 
+            return true;
+
         // Now check the elements 
         List myList = new ArrayList(mine);
         Collections.sort(myList);
         List otherList = new ArrayList(other);
-        Collections.sort(otherList);
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
+        Comparator comparator = 
+                (Comparator)myList.get(0);
+        Collections.sort(otherList, comparator);
         for (int i = 0; i < myList.size(); i++) {
             if (!deepEquals(myList.get(i), otherList.get(i)))
                 return false;
@@ -269,6 +275,8 @@ public class EqualityHelper {
         List myList = new ArrayList(mine.entrySet());
         Collections.sort(myList, entryKeyComparator);
         List otherList = new ArrayList(other.entrySet());
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
         Comparator comparator = 
                 (Comparator)((Map.Entry)myList.get(0)).getKey();
         Collections.sort(otherList, 
@@ -306,11 +314,19 @@ public class EqualityHelper {
         // Return false, if the size differs
         if (mine.size() != other.size())
             return false;
+
+        if (mine.size() == 0) 
+            return true;
+
         // Now check the elements 
         List myList = new ArrayList(mine);
         Collections.sort(myList);
         List otherList = new ArrayList(other);
-        Collections.sort(otherList);
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
+        Comparator comparator = 
+                (Comparator)myList.get(0);
+        Collections.sort(otherList, comparator);
         return myList.equals(otherList);
     }
 
@@ -375,10 +391,6 @@ public class EqualityHelper {
             logUnequal(me, other, where + msgOtherNull);
             return false;
         }
-        if (!me.getClass().isAssignableFrom(other.getClass())) {
-            logUnequal(me, other, where + msgIncompatibleTypes);
-            return false; 
-        }
         if (isProcessed(me))
             return true;
         markProcessed(me);
@@ -599,11 +611,19 @@ public class EqualityHelper {
                     ", counted size= " + count);
             return false;
         }
+
+        if (me.size() == 0) 
+            return true;
+
         // Now check the elements 
         List myList = new ArrayList(me);
         Collections.sort(myList);
         List otherList = new ArrayList(other);
-        Collections.sort(otherList);
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
+        Comparator comparator = 
+                (Comparator)myList.get(0);
+        Collections.sort(otherList, comparator);
         boolean result = myList.equals(otherList);
         if (!result) 
             logUnequal(me,  other, 
@@ -847,4 +867,18 @@ public class EqualityHelper {
         return result;
     }
 
+    // Methods to support compare methods as specified in Comparator 
+    
+    /** 
+     * Compares its two arguments for order. Returns a negative integer, zero,
+     * or a positive integer as the first argument is less than, equal to, or
+     * greater than the second. 
+     * @param l1 the first long to be compared
+     * @param l2 the second long to be compared
+     * @return a negative integer, zero, or a positive integer as the first
+     * argument is less than, equal to, or greater than the second. 
+     */
+    public static int compare (long l1, long l2) {
+        return (l1 < l2 ? -1 : (l1 == l2 ? 0 : 1));
+    }
 }