You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (JIRA)" <ji...@apache.org> on 2010/11/10 20:24:16 UTC
[jira] Created: (CAY-1505) Callbacks: POST_UPDATE is called on
updated removed object, instead of POST_REMOVE
Callbacks: POST_UPDATE is called on updated removed object, instead of POST_REMOVE
----------------------------------------------------------------------------------
Key: CAY-1505
URL: https://issues.apache.org/jira/browse/CAY-1505
Project: Cayenne
Issue Type: Bug
Affects Versions: 3.0.1, 3.1M1
Reporter: Andrus Adamchik
Assignee: Andrus Adamchik
Fix For: 3.0.2, 3.1M1
Here is a test demonstrating the problem:
diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainCallbacksTest.java b/framework/cayenne-jdk1.5-unpu
index cab44ec..c7d56e9 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainCallbacksTest.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainCallbacksTest.java
@@ -219,6 +219,42 @@ public class DataDomainCallbacksTest extends CayenneCase {
assertTrue(a1.isPostRemoved());
assertSame(a1, listener2.getPublicCalledbackEntity());
}
+
+ public void testPostRemove_Updated() {
+
+ LifecycleCallbackRegistry registry = getDomain()
+ .getEntityResolver()
+ .getCallbackRegistry();
+
+ ObjectContext context = createDataContext();
+
+ Artist a1 = context.newObject(Artist.class);
+ a1.setArtistName("XX");
+ context.commitChanges();
+
+ MockCallingBackListener listener1 = new MockCallingBackListener();
+ registry.addListener(
+ LifecycleEvent.POST_REMOVE,
+ Artist.class,
+ listener1,
+ "publicCallback");
+
+ MockCallingBackListener listener2 = new MockCallingBackListener();
+ registry.addListener(
+ LifecycleEvent.POST_UPDATE,
+ Artist.class,
+ listener2,
+ "publicCallback");
+
+
+ // change before removing
+ a1.setArtistName("YY");
+ context.deleteObject(a1);
+ context.commitChanges();
+
+ assertNull(listener2.getPublicCalledbackEntity());
+ assertSame(a1, listener1.getPublicCalledbackEntity());
+ }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Closed: (CAY-1505) Callbacks: POST_UPDATE is called on
updated removed object, instead of POST_REMOVE
Posted by "Andrus Adamchik (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1505?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrus Adamchik closed CAY-1505.
--------------------------------
Resolution: Fixed
> Callbacks: POST_UPDATE is called on updated removed object, instead of POST_REMOVE
> ----------------------------------------------------------------------------------
>
> Key: CAY-1505
> URL: https://issues.apache.org/jira/browse/CAY-1505
> Project: Cayenne
> Issue Type: Bug
> Affects Versions: 3.0.1, 3.1M1
> Reporter: Andrus Adamchik
> Assignee: Andrus Adamchik
> Fix For: 3.0.2, 3.1M1
>
>
> Here is a test demonstrating the problem:
> diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainCallbacksTest.java b/framework/cayenne-jdk1.5-unpu
> index cab44ec..c7d56e9 100644
> --- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainCallbacksTest.java
> +++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainCallbacksTest.java
> @@ -219,6 +219,42 @@ public class DataDomainCallbacksTest extends CayenneCase {
> assertTrue(a1.isPostRemoved());
> assertSame(a1, listener2.getPublicCalledbackEntity());
> }
> +
> + public void testPostRemove_Updated() {
> +
> + LifecycleCallbackRegistry registry = getDomain()
> + .getEntityResolver()
> + .getCallbackRegistry();
> +
> + ObjectContext context = createDataContext();
> +
> + Artist a1 = context.newObject(Artist.class);
> + a1.setArtistName("XX");
> + context.commitChanges();
> +
> + MockCallingBackListener listener1 = new MockCallingBackListener();
> + registry.addListener(
> + LifecycleEvent.POST_REMOVE,
> + Artist.class,
> + listener1,
> + "publicCallback");
> +
> + MockCallingBackListener listener2 = new MockCallingBackListener();
> + registry.addListener(
> + LifecycleEvent.POST_UPDATE,
> + Artist.class,
> + listener2,
> + "publicCallback");
> +
> +
> + // change before removing
> + a1.setArtistName("YY");
> + context.deleteObject(a1);
> + context.commitChanges();
> +
> + assertNull(listener2.getPublicCalledbackEntity());
> + assertSame(a1, listener1.getPublicCalledbackEntity());
> + }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.