[
http://issues.apache.org/jira/browse/JDO-186?page=comments#action_12332876 ]
Andy Jefferson commented on JDO-186:
------------------------------------
JPOX CVS is now updated to match Craigs' proposed spec change
<proposed>
package javax.jdo.listener;
public interface AttachLifecycleListener
extends InstanceLifecycleListener {
A12.15-13 [void preAttach(InstanceLifecycleEvent event);
}
This method is called before a detached instance is attached. The
source instance is the detached instance. This method is called
before the corresponding jdoPreAttach on the detached instance].
A12.15-14 [void postAttach(InstanceLifecycleEvent event);
}
This method is called after a detached instance is attached. The
source instance is the corresponding persistent instance in the
cache; the target instance is the detached instance. This method is
called after the corresponding jdoPostAttach on the persistent
instance.]
</proposed>
but the test still fails. The issue is that in the test it does
pm.makePersistent(pc);
detachedPc = pm.detachCopy(pc);
pm.attachCopy(detachedPc);
but the "detachedPc" has no "listener" field set (it was set on the "pc", but
the detached is created using the default constructor and so has no listener
object) and so the callback is received but not registered with the listener
object. The test should be changed to be
pm.makePersistent(pc);
detachedPc = pm.detachCopy(pc);
detachedPc.listener = listener;
pm.attachCopy(detachedPc);
and then the test passes.
> Attach lifecycle listeners are incorrectly implemented
> ------------------------------------------------------
>
> Key: JDO-186
> URL: http://issues.apache.org/jira/browse/JDO-186
> Project: JDO
> Type: Bug
> Components: tck20
> Environment: JPOX
> Reporter: Craig Russell
> Assignee: Craig Russell
>
> The InstanceLifecycleListenerAttach test case fails with these errors.
> [java]
> testAttach(org.apache.jdo.tck.api.instancecallbacks.InstanceLifecycleListenerAttach)junit.framework.AssertionFailedError:
> Assertion A12.15-13 (TestInstanceLifecycleListener) failed:
> [java] Assertion A12.15-14 (TestInstanceLifecycleListener) failed: in
> postAttach, source object should be persistent.
> [java] Assertion A12.15-14 (TestInstanceLifecycleListener) failed: in
> postAttach, target expected <[EMAIL PROTECTED]>, actual <null>
> [java]
> [java] Sequence verification failed for PRE_ATTACH_CALLBACK; expected:
> <2> actual: <0>
> [java]
> [java] Sequence verification failed for POST_ATTACH_LISTENER; expected:
> <3> actual: <2>
> [java]
> [java] at
> org.apache.jdo.tck.api.instancecallbacks.AbstractInstanceLifecycleListener$InstanceLifecycleListenerImpl.verifyCallbacks(AbstractInstanceLifecycleListener.java:464)
> [java] at
> org.apache.jdo.tck.api.instancecallbacks.InstanceLifecycleListenerAttach.testAttach(InstanceLifecycleListenerAttach.java:111)
> [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