Hi Andy,

Thanks for the analysis and the fix.

You're right that the relevant part of the spec for the detach ordering doesn't specify the order of the callback and the listener.

The intent is for all the listeners and callbacks to use the same order: the pre-listener is called; the pre-callback is called; the post callback is called; and the post-listener is called. This is what all the other listeners do. What's missing is the description for the attach listener.

Here's the proposed change for the detach listener:

<spec>
package javax.jdo.listener;
public interface DetachLifecycleListener
    extends InstanceLifecycleListener {
A12.15-11 [void preDetach(InstanceLifecycleEvent event);
}
This method is called before a persistent instance is copied for detachment.]
A12.15-12 [void postDetach(InstanceLifecycleEvent event);
}
This method is called whenever a persistent instance is copied for detachment. The source instance is the detached copy; the target instance is the persistent instance.]
<spec>

<proposed>
package javax.jdo.listener;
public interface DetachLifecycleListener
    extends InstanceLifecycleListener {
A12.15-11 [void preDetach(InstanceLifecycleEvent event);
}
This method is called before a persistent instance is copied for detachment.] It is called before the jdoPreDetach callback.

A12.15-12 [void postDetach(InstanceLifecycleEvent event);
}
This method is called whenever a persistent instance is copied for detachment. The source instance is the detached copy; the target instance is the persistent instance. It is called after the jdoPostDetach callback on the detached copy.]
</proposed>

Thanks,

Craig


On Oct 22, 2005, at 12:54 AM, Andy Jefferson (JIRA) wrote:

[ http://issues.apache.org/jira/browse/JDO-187? page=comments#action_12332756 ]

Andy Jefferson commented on JDO-187:
------------------------------------

Actually was an issue in InstanceCallbacks and not InstanceLifecycleListener. JPOX CVS now uses the objects the other way around on the postDetach and that part of the test passes. The issue about

[java] Sequence verification failed for PRE_DETACH_LISTENER; expected: <1> actual: <2>
    [java]
[java] Sequence verification failed for PRE_DETACH_CALLBACK; expected: <2> actual: <1>
    [java]

remains. This is down to the TCK test making the assumption that the callback will appear before the lifecycle listener. Where is this specifed in the JDO2 spec ? If there's no reference in the spec then it can't be imposed in the TCK.


Detach lifecycle listeners are incorrectly implemented
------------------------------------------------------

         Key: JDO-187
         URL: http://issues.apache.org/jira/browse/JDO-187
     Project: JDO
        Type: Bug
  Components: tck20
 Environment: JPOX
    Reporter: Craig Russell
    Assignee: Andy Jefferson




The following errors are reported for test case InstanceLifecycleListenerDetach. [java] testDetach (org.apache.jdo.tck.api.instancecallbacks.InstanceLifecycleListenerDe tach)junit.framework.AssertionFailedError: Assertion A12.15-11 (TestInstanceLifecycleListener) failed: [java] Assertion A12.15-12 (TestInstanceLifecycleListener) failed: in postDetach, target expected <org.apache.jdo.tck.api.instancecallbacks.InstanceLifecycleListenerDe [EMAIL PROTECTED]>, actual <null> [java] Assertion A12.15-12 (TestInstanceLifecycleListener) failed: in postDetach, target object should be persistent. [java] Assertion A12.15-12 (TestInstanceLifecycleListener) failed: in postDetach, source wasPostDetachCalled() was not true.
    [java]
[java] Sequence verification failed for PRE_DETACH_LISTENER; expected: <1> actual: <2>
    [java]
[java] Sequence verification failed for PRE_DETACH_CALLBACK; expected: <2> actual: <1>
    [java]
[java] at org.apache.jdo.tck.api.instancecallbacks.AbstractInstanceLifecycleLis tener$InstanceLifecycleListenerImpl.verifyCallbacks (AbstractInstanceLifecycleListener.java:464) [java] at org.apache.jdo.tck.api.instancecallbacks.InstanceLifecycleListenerDet ach.testDetach(InstanceLifecycleListenerDetach.java:108) [java] at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) [java] at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) [java] at org.apache.jdo.tck.JDO_Test.runBare (JDO_Test.java:204) [java] at org.apache.jdo.tck.util.BatchTestRunner.start (BatchTestRunner.java:120) [java] at org.apache.jdo.tck.util.BatchTestRunner.main (BatchTestRunner.java:95)


--
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



Reply via email to