Hi I have a patch here for some issues. It may be useful or not for you.
There are other issues that I'm working on.
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
(working
copy)
@@ -246,7 +246,7 @@
*/
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,9 @@
* Compare two instances. This is a method in Comparator.
*/
public int compare(Object o1, Object o2) {
- return ((Department)o1).compareTo(o2);
+ IDepartment other = (IDepartment)o2;
+ long otherId = other.getDeptid();
+ return (((IDepartment)o1).getDeptid() < otherId ? -1 :
(((IDepartment)o1).getDeptid() == otherId ? 0 : 1));
}
/**
Index:
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryAbstractImpl.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryAbstractImpl.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryAbstractImpl.java
(working
copy)
@@ -132,6 +132,7 @@
public IFullTimeEmployee newFullTimeEmployee(long personid, String first,
String last, String middle, java.util.Date born, java.util.Date hired, double
sal) {
IFullTimeEmployee result = newFullTimeEmployee();
if (debug) logger.debug("newFullTimeEmployee returned" + result);
+ logger.warn("newFullTimeEmployee returned. born" + born);
result.setPersonid(personid);
result.setFirstname(first);
result.setLastname(last);
@@ -145,6 +146,7 @@
public IFullTimeEmployee newFullTimeEmployee(long personid, String first,
String last, String middle, java.util.Date born, IAddress addr, java.util.Date
hired, double sal) {
IFullTimeEmployee result = newFullTimeEmployee();
if (debug) logger.debug("newFullTimeEmployee returned" + result);
+ logger.warn("newFullTimeEmployee returned. born" + born);
result.setPersonid(personid);
result.setFirstname(first);
result.setLastname(last);
@@ -178,6 +180,7 @@
public IPartTimeEmployee newPartTimeEmployee(long personid, String first,
String last, String middle, java.util.Date born, java.util.Date hired, double
wage) {
IPartTimeEmployee result = newPartTimeEmployee();
if (debug) logger.debug("newPartTimeEmployee returned" + result);
+ logger.warn("newPartTimeEmployee returned. born" + born);
result.setPersonid(personid);
result.setFirstname(first);
result.setLastname(last);
@@ -191,6 +194,7 @@
public IPartTimeEmployee newPartTimeEmployee(long personid, String first,
String last, String middle, java.util.Date born, IAddress addr, java.util.Date
hired, double wage) {
IPartTimeEmployee result = newPartTimeEmployee();
if (debug) logger.debug("newPartTimeEmployee returned" + result);
+ logger.warn("newPartTimeEmployee returned. born" + born);
result.setPersonid(personid);
result.setFirstname(first);
result.setLastname(last);
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java (working
copy)
@@ -233,7 +233,9 @@
* Compare two instances. This is a method in Comparator.
*/
public int compare(Object o1, Object o2) {
- return ((Project)o1).compareTo(o2);
+ IProject other = (IProject)o2;
+ long otherId = other.getProjid();
+ return (((IProject)o1).getProjid() < otherId ? -1 :
(((IProject)o1).getProjid() == otherId ? 0 : 1));
}
/**
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java (working
copy)
@@ -293,7 +293,9 @@
* Compare two instances. This is a method in Comparator.
*/
public int compare(Object o1, Object o2) {
- return ((Person)o1).compareTo(o2);
+ IPerson other = (IPerson)o2;
+ long otherId = other.getPersonid();
+ return (((IPerson)o1).getPersonid() < otherId ? -1 :
(((IPerson)o1).getPersonid() == otherId ? 0 : 1));
}
/**
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java (working
copy)
@@ -233,7 +233,9 @@
* Compare two instances. This is a method in Comparator.
*/
public int compare(Object o1, Object o2) {
- return ((Company)o1).compareTo(o2);
+ ICompany other = (ICompany)o2;
+ long otherId = other.getCompanyid();
+ return (((ICompany)o1).getCompanyid() < otherId ? -1 :
(((ICompany)o1).getCompanyid() == otherId ? 0 : 1));
}
/**
Index:
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
(working
copy)
@@ -117,7 +117,7 @@
*/
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");
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java (working
copy)
@@ -209,7 +209,9 @@
* Compare two instances. This is a method in Comparator.
*/
public int compare(Object o1, Object o2) {
- return ((Address)o1).compareTo(o2);
+ IAddress other = (IAddress)o2;
+ long otherId = other.getAddrid();
+ return (((IAddress)o1).getAddrid() < otherId ? -1 :
(((IAddress)o1).getAddrid() == otherId ? 0 : 1));
}
/**
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
(working
copy)
@@ -153,7 +153,9 @@
* Compare two instances. This is a method in Comparator.
*/
public int compare(Object o1, Object o2) {
- return ((Insurance)o1).compareTo(o2);
+ IInsurance other = (IInsurance)o2;
+ long otherId = other.getInsid();
+ return (((IInsurance)o1).getInsid() < otherId ? -1 :
(((IInsurance)o1).getInsid() == otherId ? 0 : 1));
}
/**
Index: D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
===================================================================
---
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
(revision
391636)
+++
D:/jdo/trunk/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java (working
copy)
@@ -375,10 +375,12 @@
logUnequal(me, other, where + msgOtherNull);
return false;
}
+ /* no need to check since the deepCompareFields with cast to the
expected type
if (!me.getClass().isAssignableFrom(other.getClass())) {
logUnequal(me, other, where + msgIncompatibleTypes);
return false;
}
+ */
if (isProcessed(me))
return true;
markProcessed(me);
Quoting Craig L Russell <[EMAIL PROTECTED]>:
> Hi Michael,
>
> I haven't started on this. If possible, could you file a JIRA and
> attach your patch to it.
>
> Without Erik's changes, I can't test it either.
>
> Erik,
>
> Is there a way you can make the JPOX jar file available?
>
> Thanks,
>
> Craig
>
> On Apr 6, 2006, at 7:34 AM, Michael Bouschen wrote:
>
> > Hi Craig,
> >
> > I think this issue appears at two different places:
> >
> > (1) Method compare(Object o1, Object o2) in all company classes
> > delegates to the compareTo method and casts the first argument to
> > the class instead of the interface:
> > public int compare(Object o1, Object o2) {
> > return ((Insurance)o1).compareTo(o2);
> > }
> > This requires adding the compareTo methods to the interfaces.
> >
> > (2) Method deepCompareFields in Department and FullTimeEmployee
> > cast the argument to the class instead of the interface:
> > public boolean deepCompareFields(Object other,
> > EqualityHelper helper) {
> > Department otherDept = (Department)other;
> >
> > I understood you already started to fix this, correct? Anyway, you
> > find my changed attached. They compile, but I could not test it.
> >
> > Regards Michael
> >
> >> Hi Erik,
> >> Great news. If you are this far, then you have succeeded in
> >> storing and retrieving instances to the database. I'll have a fix
> >> for you shortly.
> >> Craig
> >> On Apr 6, 2006, at 4:06 AM, Erik Bengtson wrote:
> >>> Craig,
> >>>
> >>> The "null" issue is over. It was a reachability issue where JPOX
> >>> nullify all
> >>> fields before deleting from the database.
> >>>
> >>> Now there is another issue in the CompletenessTest.test method
> >>> where it falls
> >>> the expected object tree back to the concrete classes. It
> >>> compares a concrete
> >>> object tree to the tree of objects generated by JPOX.
> >>>
> >>> The code has a cast to Department and invoke to compareTo, and
> >>> this code will
> >>> not work for interfaces.
> >>>
> >>> [java] 1) test(org.apache.jdo.tck.mapping.CompletenessTest)
> >>> java.lang.ClassCa
> >>> stException: org.apache.jdo.tck.pc.company.IDepartmentImpl
> >>> [java] at
> >>> org.apache.jdo.tck.pc.company.Department.compare (Department.j
> >>> ava:297)
> >>> [java] at java.util.Arrays.mergeSort(Arrays.java:1284)
> >>> [java] at java.util.Arrays.sort(Arrays.java:1223)
> >>> [java] at java.util.Collections.sort(Collections.java:159)
> >>> [java] at
> >>> org.apache.jdo.tck.util.EqualityHelper.deepEquals (EqualityHel
> >>> per.java:477)
> >>> [java] at
> >>> org.apache.jdo.tck.pc.company.Company.deepCompareFields(Compa
> >>> ny.java:224)
> >>> [java] at
> >>> org.apache.jdo.tck.mapping.CompletenessTest.test (Completeness
> >>> Test.java:108)
> >>>
> >>>
> >> Craig Russell
> >> Architect, Sun Java Enterprise System http://java.sun.com/products/
> >> jdo
> >> 408 276-5638 mailto:[EMAIL PROTECTED]
> >> P.S. A good JDO? O, Gasp!
> >
> >
> > --
> > Michael Bouschen [EMAIL PROTECTED] Engineering GmbH
> > mailto:[EMAIL PROTECTED] http://www.tech.spree.de/
> > Tel.:++49/30/235 520-33 Buelowstr. 66
> > Fax.:++49/30/2175 2012 D-10783 Berlin
> > Index: src/java/org/apache/jdo/tck/pc/company/IInsurance.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/IInsurance.java
> > (revision 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/IInsurance.java (working
> > copy)
> > @@ -30,4 +30,6 @@
> > void setInsid(long insid);
> > void setCarrier(String carrier);
> > void setEmployee(IEmployee employee);
> > +
> > + public int compareTo(Object o);
> > }
> > Index: src/java/org/apache/jdo/tck/pc/company/Department.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/Department.java
> > (revision 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/Department.java (working
> > copy)
> > @@ -246,7 +246,7 @@
> > */
> > 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 @@
> > * Compare two instances. This is a method in Comparator.
> > */
> > public int compare(Object o1, Object o2) {
> > - return ((Department)o1).compareTo(o2);
> > + return ((IDepartment)o1).compareTo(o2);
> > }
> >
> > /**
> > Index: src/java/org/apache/jdo/tck/pc/company/Company.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/Company.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/Company.java (working copy)
> > @@ -233,7 +233,7 @@
> > * Compare two instances. This is a method in Comparator.
> > */
> > public int compare(Object o1, Object o2) {
> > - return ((Company)o1).compareTo(o2);
> > + return ((ICompany)o1).compareTo(o2);
> > }
> >
> > /**
> > Index: src/java/org/apache/jdo/tck/pc/company/Person.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/Person.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/Person.java (working copy)
> > @@ -293,7 +293,7 @@
> > * Compare two instances. This is a method in Comparator.
> > */
> > public int compare(Object o1, Object o2) {
> > - return ((Person)o1).compareTo(o2);
> > + return ((IPerson)o1).compareTo(o2);
> > }
> >
> > /**
> > Index: src/java/org/apache/jdo/tck/pc/company/Project.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/Project.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/Project.java (working copy)
> > @@ -233,7 +233,7 @@
> > * Compare two instances. This is a method in Comparator.
> > */
> > public int compare(Object o1, Object o2) {
> > - return ((Project)o1).compareTo(o2);
> > + return ((IProject)o1).compareTo(o2);
> > }
> >
> > /**
> > Index: src/java/org/apache/jdo/tck/pc/company/IDepartment.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/IDepartment.java
> > (revision 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/IDepartment.java
> > (working copy)
> > @@ -39,4 +39,5 @@
> > void setEmployees(Set employees);
> > void setFundedEmps(Set employees);
> >
> > + public int compareTo(Object o);
> > }
> > Index: src/java/org/apache/jdo/tck/pc/company/ICompany.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/ICompany.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/ICompany.java (working
> > copy)
> > @@ -37,4 +37,6 @@
> > void setDepartments(Set depts);
> > void setFounded(Date date);
> > void setName(String string);
> > +
> > + public int compareTo(Object o);
> > }
> > Index: src/java/org/apache/jdo/tck/pc/company/IPerson.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/IPerson.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/IPerson.java (working copy)
> > @@ -42,4 +42,5 @@
> > void setBirthdate(Date birthdate);
> > void setPhoneNumbers(Map phoneNumbers);
> >
> > + public int compareTo(Object o);
> > }
> > Index: src/java/org/apache/jdo/tck/pc/company/IProject.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/IProject.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/IProject.java (working
> > copy)
> > @@ -36,5 +36,6 @@
> > void setBudget(BigDecimal budget);
> > void setReviewers(Set reviewers);
> > void setMembers(Set employees);
> > -
> > +
> > + public int compareTo(Object o);
> > }
> > Index: src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
> > (revision 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
> > (working copy)
> > @@ -117,7 +117,7 @@
> > */
> > 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");
> > Index: src/java/org/apache/jdo/tck/pc/company/Address.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/Address.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/Address.java (working copy)
> > @@ -209,7 +209,7 @@
> > * Compare two instances. This is a method in Comparator.
> > */
> > public int compare(Object o1, Object o2) {
> > - return ((Address)o1).compareTo(o2);
> > + return ((IAddress)o1).compareTo(o2);
> > }
> >
> > /**
> > Index: src/java/org/apache/jdo/tck/pc/company/Insurance.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/Insurance.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/Insurance.java (working
> > copy)
> > @@ -153,7 +153,7 @@
> > * Compare two instances. This is a method in Comparator.
> > */
> > public int compare(Object o1, Object o2) {
> > - return ((Insurance)o1).compareTo(o2);
> > + return ((IInsurance)o1).compareTo(o2);
> > }
> >
> > /**
> > Index: src/java/org/apache/jdo/tck/pc/company/IAddress.java
> > ===================================================================
> > --- src/java/org/apache/jdo/tck/pc/company/IAddress.java (revision
> > 391925)
> > +++ src/java/org/apache/jdo/tck/pc/company/IAddress.java (working
> > copy)
> > @@ -36,4 +36,6 @@
> > void setState(String state);
> > void setZipcode(String zipcode);
> > void setCountry(String country);
> > +
> > + public int compareTo(Object o);
> > }
>
> Craig Russell
> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
> 408 276-5638 mailto:[EMAIL PROTECTED]
> P.S. A good JDO? O, Gasp!
>
>