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/03/07 18:56:25 UTC
svn commit: r515663 - in /cayenne/main/trunk/itests/jpa-chapter3/src:
main/java/org/apache/cayenne/jpa/itest/ch3/entity/CallbackEntity.java
test/java/org/apache/cayenne/jpa/itest/ch3/_3_5_1_LifecycleCallbackMethodsTest.java
Author: aadamchik
Date: Wed Mar 7 09:56:24 2007
New Revision: 515663
URL: http://svn.apache.org/viewvc?view=rev&rev=515663
Log:
Attempting to reproduce CAY-766 in JPA environment - it works! (since temp id is not exposed to the code)
Modified:
cayenne/main/trunk/itests/jpa-chapter3/src/main/java/org/apache/cayenne/jpa/itest/ch3/entity/CallbackEntity.java
cayenne/main/trunk/itests/jpa-chapter3/src/test/java/org/apache/cayenne/jpa/itest/ch3/_3_5_1_LifecycleCallbackMethodsTest.java
Modified: cayenne/main/trunk/itests/jpa-chapter3/src/main/java/org/apache/cayenne/jpa/itest/ch3/entity/CallbackEntity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/itests/jpa-chapter3/src/main/java/org/apache/cayenne/jpa/itest/ch3/entity/CallbackEntity.java?view=diff&rev=515663&r1=515662&r2=515663
==============================================================================
--- cayenne/main/trunk/itests/jpa-chapter3/src/main/java/org/apache/cayenne/jpa/itest/ch3/entity/CallbackEntity.java (original)
+++ cayenne/main/trunk/itests/jpa-chapter3/src/main/java/org/apache/cayenne/jpa/itest/ch3/entity/CallbackEntity.java Wed Mar 7 09:56:24 2007
@@ -40,6 +40,9 @@
@Transient
protected transient boolean postPersistCalled;
+
+ @Transient
+ protected transient int postPersistedId;
@Transient
protected transient boolean preRemoveCalled;
@@ -64,6 +67,7 @@
@PostPersist
public void postPersistMethod() {
postPersistCalled = true;
+ postPersistedId = id;
}
@PreRemove
@@ -101,6 +105,10 @@
public boolean isPostPersistCalled() {
return postPersistCalled;
+ }
+
+ public int getPostPersistedId() {
+ return postPersistedId;
}
public boolean isPostRemoveCalled() {
Modified: cayenne/main/trunk/itests/jpa-chapter3/src/test/java/org/apache/cayenne/jpa/itest/ch3/_3_5_1_LifecycleCallbackMethodsTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/itests/jpa-chapter3/src/test/java/org/apache/cayenne/jpa/itest/ch3/_3_5_1_LifecycleCallbackMethodsTest.java?view=diff&rev=515663&r1=515662&r2=515663
==============================================================================
--- cayenne/main/trunk/itests/jpa-chapter3/src/test/java/org/apache/cayenne/jpa/itest/ch3/_3_5_1_LifecycleCallbackMethodsTest.java (original)
+++ cayenne/main/trunk/itests/jpa-chapter3/src/test/java/org/apache/cayenne/jpa/itest/ch3/_3_5_1_LifecycleCallbackMethodsTest.java Wed Mar 7 09:56:24 2007
@@ -21,6 +21,7 @@
import javax.persistence.EntityManager;
import org.apache.cayenne.itest.jpa.EntityManagerCase;
+import org.apache.cayenne.itest.jpa.ItestSetup;
import org.apache.cayenne.jpa.itest.ch3.entity.CallbackEntity;
import org.apache.cayenne.jpa.itest.ch3.entity.CallbackEntity2;
import org.apache.cayenne.jpa.itest.ch3.entity.EntityListener1;
@@ -71,5 +72,49 @@
+ ":"
+ EntityListener1.class.getName(), EntityListenerState
.getPrePersistCalled());
+ }
+
+ public void testPostPersist() {
+
+ // regular entity
+ CallbackEntity e = new CallbackEntity();
+ assertFalse(e.isPostPersistCalled());
+
+ // don't use super getEntityManager - it starts a tran
+ EntityManager em = ItestSetup.getInstance().createEntityManager();
+
+ // spec reqires the callback to be invoked as a part of persist, without waiting
+ // for flush or commit.
+ em.getTransaction().begin();
+ em.persist(e);
+ assertFalse(e.isPostPersistCalled());
+ assertEquals(0, e.getPostPersistedId());
+ em.getTransaction().commit();
+
+ assertTrue(e.isPostPersistCalled());
+
+ // Per spec, id must be availble during PostPersist
+ assertEquals(e.getId(), e.getPostPersistedId());
+
+ // external listeners
+ EntityListenerState.reset();
+ assertEquals("", EntityListenerState.getPostPersistCalled());
+ ListenerEntity1 e3 = new ListenerEntity1();
+
+ // reset EM
+ em = ItestSetup.getInstance().createEntityManager();
+ assertEquals("", EntityListenerState.getPostPersistCalled());
+ em.getTransaction().begin();
+ em.persist(e3);
+ assertEquals(":" + EntityListener2.class.getName(), EntityListenerState
+ .getPostPersistCalled(), EntityListenerState.getPostPersistCalled());
+ EntityListenerState.reset();
+
+ em.getTransaction().commit();
+ assertEquals(":"
+ + EntityListener1.class.getName()
+ + ":"
+ + EntityListener2.class.getName(), EntityListenerState
+ .getPostPersistCalled());
}
}