Hi,

It might be better to have this discussion attached to a JIRA issue. Is the test case checked in?

Craig

On Nov 23, 2005, at 2:56 AM, Michael Watzek wrote:

Hi Andy,

I'm implementing test cases for deletion by query. Assertion A14.8-4 specifies (amongst others) that dirty instances are flushed to the datastore before they are deleted.

The test case implementing this assertion adds a lifecycle listener to the persistence manager. The listener checks the order of events fired by JPOX. The test case fails if store events are fired after the first delete event was fired.

JPOX fires the right order of events when instances are involved not having any relationships. Involving instances having relationships JPOX does not stick to that order.

For example:

The test case updates all employees. Afterwards, it deletes these employees using Query.deletePersistentAll inside the same transaction. If the test case uses employees having relationships, it appears, that some store events are fired between preDelete and postDelete events fired on the same instance. On the other hand, if the test case uses employees without relationships the order of events meets the spec. Please have a look below.

Is the different event handling concerning relationships intentional?

Regards,
Michael

Events fired on persons without relationships:
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 1
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 1
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 2
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 2
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 3
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 3
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 4
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 4
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 5
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 5 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 1 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 1 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 2 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 2 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 3 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 3 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 4 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 4 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 5 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 5


Events fired on persons with relationships:
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 5
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 5
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 1
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 1
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 2
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 2
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 3
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 3
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 4
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 4 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 5
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 1
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 1
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 2
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 2
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 3
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 3
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 4
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 4 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 5 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 1 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 1 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 2
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 3
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 3
    [java] preStore event: org.apache.jdo.tck.pc.company.Person$Oid: 4
[java] postStore event: org.apache.jdo.tck.pc.company.Person $Oid: 4 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 2 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 3 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 3 [java] preDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 4 [java] postDelete event: org.apache.jdo.tck.pc.company.Person $Oid: 4
--
-------------------------------------------------------------------
Michael Watzek                  [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]        Buelowstr. 66
Tel.:  ++49/30/235 520 36       10783 Berlin - Germany
Fax.:  ++49/30/217 520 12       http://www.spree.de/
-------------------------------------------------------------------

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!

Reply via email to