You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/07/29 22:07:38 UTC

svn commit: r560801 - /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/CayenneContextWithDataContextTest.java

Author: aadamchik
Date: Sun Jul 29 13:07:36 2007
New Revision: 560801

URL: http://svn.apache.org/viewvc?view=rev&rev=560801
Log:
ROP callbacks unit tests

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/CayenneContextWithDataContextTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/CayenneContextWithDataContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/CayenneContextWithDataContextTest.java?view=diff&rev=560801&r1=560800&r2=560801
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/CayenneContextWithDataContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/CayenneContextWithDataContextTest.java Sun Jul 29 13:07:36 2007
@@ -46,6 +46,117 @@
         return CayenneResources.getResources().getAccessStack(MULTI_TIER_ACCESS_STACK);
     }
 
+    public void testPrePersistCallback() throws Exception {
+
+        ClientServerChannel csChannel = new ClientServerChannel(getDomain());
+
+        // an exception was triggered within POST_LOAD callback
+        LifecycleCallbackRegistry callbackRegistry = csChannel
+                .getEntityResolver()
+                .getCallbackRegistry();
+
+        final boolean[] flag = new boolean[1];
+
+        try {
+            callbackRegistry.addListener(MtTable1.class, new LifecycleListener() {
+
+                public void postLoad(Object entity) {
+                }
+
+                public void postPersist(Object entity) {
+                }
+
+                public void postRemove(Object entity) {
+                }
+
+                public void postUpdate(Object entity) {
+                }
+
+                public void prePersist(Object entity) {
+                    flag[0] = true;
+                }
+
+                public void preRemove(Object entity) {
+                }
+
+                public void preUpdate(Object entity) {
+                }
+            });
+
+            ClientConnection connection = new LocalConnection(csChannel);
+            ClientChannel channel = new ClientChannel(connection);
+
+            CayenneContext context = new CayenneContext(channel);
+
+            context.newObject(ClientMtTable1.class);
+
+            assertFalse(flag[0]);
+            context.commitChanges();
+            assertTrue(flag[0]);
+        }
+        finally {
+            callbackRegistry.clear();
+        }
+    }
+
+    public void testPreRemoveCallback() throws Exception {
+
+        ClientServerChannel csChannel = new ClientServerChannel(getDomain());
+
+        // an exception was triggered within POST_LOAD callback
+        LifecycleCallbackRegistry callbackRegistry = csChannel
+                .getEntityResolver()
+                .getCallbackRegistry();
+
+        final boolean[] flag = new boolean[1];
+
+        try {
+            callbackRegistry.addListener(MtTable1.class, new LifecycleListener() {
+
+                public void postLoad(Object entity) {
+                }
+
+                public void postPersist(Object entity) {
+                }
+
+                public void postRemove(Object entity) {
+                }
+
+                public void postUpdate(Object entity) {
+                }
+
+                public void prePersist(Object entity) {
+                }
+
+                public void preRemove(Object entity) {
+                    flag[0] = true;
+                }
+
+                public void preUpdate(Object entity) {
+                }
+            });
+
+            ClientConnection connection = new LocalConnection(csChannel);
+            ClientChannel channel = new ClientChannel(connection);
+
+            CayenneContext context = new CayenneContext(channel);
+
+            ClientMtTable1 object = (ClientMtTable1) context
+                    .newObject(ClientMtTable1.class);
+
+            assertFalse(flag[0]);
+            context.commitChanges();
+            assertFalse(flag[0]);
+
+            context.deleteObject(object);
+            context.commitChanges();
+            assertTrue(flag[0]);
+        }
+        finally {
+            callbackRegistry.clear();
+        }
+    }
+
     public void testCAY830() throws Exception {
 
         deleteTestData();