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.