[jboss-user] [JBoss Seam] - Re: StaleStateException from entity activation
matt.drees
do-not-reply at jboss.com
Thu Jul 12 15:25:09 EDT 2007
Ok, I've reproduced this situation in a simple test:
| public class PassivatedEntityInParentConversationTest extends SeamTest {
|
| @Test
| public void test() throws Exception {
| String cid = new FacesRequest("/page.xhtml") {
| @Override
| protected void invokeApplication() throws Exception {
| Bar bar = new Bar();
| bar.setName("bar1");
| EntityManager entityManager = (EntityManager) getValue("#{entityManager}");
| entityManager.persist(bar);
| Contexts.getConversationContext().set("bar", bar );
| Manager.instance().beginConversation();
| }
| }.run();
|
| //bar is not passivated, because it was just added
|
| cid = new FacesRequest("/page.xhtml", cid) {
| }.run();
|
| //bar is now passivated
|
| cid = new FacesRequest("/page2.xhtml", cid) {
| @Override
| protected void invokeApplication() throws Exception {
| Manager.instance().beginNestedConversation();
| }
| }.run();
|
| cid = new FacesRequest("/page.xhtml", cid) {
| @Override
| protected void invokeApplication() throws Exception {
| Bar bar = (Bar) Contexts.getConversationContext().get("bar");
| bar.setName("bar2");
| EntityManager entityManager = (EntityManager) getValue("#{entityManager}");
| entityManager.flush();
| }
| }.run();
|
| //bar is not passivated, because it is not in the current conversation, so its wrapper still holds the old version
|
| cid = new FacesRequest("/page.xhtml", cid) {
| @Override
| protected void invokeApplication() throws Exception {
| Manager.instance().endConversation(false);
| }
| }.run();
|
| cid = new FacesRequest("/page.xhtml", cid) {
| }.run(); //exception occurs here at ConversationContext.unflush
| }
| }
|
Exception:
| org.hibernate.StaleStateException: current database version number does not match passivated version number
| at org.jboss.seam.persistence.HibernatePersistenceProvider.checkVersion(HibernatePersistenceProvider.java:174)
| at org.jboss.seam.persistence.HibernatePersistenceProvider.checkVersion(HibernatePersistenceProvider.java:134)
| at org.jboss.seam.contexts.PassivatedEntity.checkVersion(PassivatedEntity.java:133)
| at org.jboss.seam.contexts.PassivatedEntity.getEntityFromEntityManager(PassivatedEntity.java:118)
| at org.jboss.seam.contexts.PassivatedEntity.toEntityReference(PassivatedEntity.java:73)
| at org.jboss.seam.contexts.EntityBean.activate(EntityBean.java:67)
| at org.jboss.seam.contexts.ServerConversationContext.unflush(ServerConversationContext.java:234)
| at org.jboss.seam.contexts.FacesLifecycle.resumeConversation(FacesLifecycle.java:129)
| at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:373)
| at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:211)
| at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:184)
| at org.jboss.seam.mock.BaseSeamTest$Request.restoreViewPhase(BaseSeamTest.java:706)
| at org.jboss.seam.mock.BaseSeamTest$Request.emulateJsfLifecycle(BaseSeamTest.java:544)
| at org.jboss.seam.mock.BaseSeamTest$Request.run(BaseSeamTest.java:487)
| at org.uscm.crs.PassivatedEntityInParentConversationTest.test(PassivatedEntityInParentConversationTest.java:59)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:645)
| at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:479)
| at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:715)
| at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
| at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
| at org.testng.TestRunner.runWorkers(TestRunner.java:673)
| at org.testng.TestRunner.privateRun(TestRunner.java:620)
| at org.testng.TestRunner.run(TestRunner.java:480)
| at org.testng.SuiteRunner.runTest(SuiteRunner.java:278)
| at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:273)
| at org.testng.SuiteRunner.privateRun(SuiteRunner.java:253)
| at org.testng.SuiteRunner.run(SuiteRunner.java:168)
| at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:987)
| at org.testng.TestNG.runSuitesLocally(TestNG.java:951)
| at org.testng.TestNG.run(TestNG.java:719)
| at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
| at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:122)
|
I created a jira issue.
http://jira.jboss.com/jira/browse/JBSEAM-1656
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4063690#4063690
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4063690
More information about the jboss-user
mailing list