[seam-commits] Seam SVN: r13782 - modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Mon Sep 27 11:28:46 EDT 2010


Author: pete.muir at jboss.org
Date: 2010-09-27 11:28:45 -0400 (Mon, 27 Sep 2010)
New Revision: 13782

Modified:
   modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextBeanLifecycle.java
   modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextProxyHandler.java
Log:
work around lack of conversation context

Modified: modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextBeanLifecycle.java
===================================================================
--- modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextBeanLifecycle.java	2010-09-26 22:25:36 UTC (rev 13781)
+++ modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextBeanLifecycle.java	2010-09-27 15:28:45 UTC (rev 13782)
@@ -110,10 +110,19 @@
          EntityManagerFactory emf = getEntityManagerFactory();
          EntityManager entityManager = emf.createEntityManager();
          entityManager = getPersistenceProvider(entityManager).proxyEntityManager(entityManager);
-         ManagedPersistenceContextProxyHandler handler = new ManagedPersistenceContextProxyHandler(entityManager, manager, bean.getQualifiers(), getPersistenceContexts(), getPersistenceProvider(entityManager));
+         PersistenceContexts persistenceContexts = null;
+         try
+         {
+            persistenceContexts = getPersistenceContexts();
+         }
+         catch (ContextNotActiveException e) 
+         {
+            // it's null already
+         }
+         ManagedPersistenceContextProxyHandler handler = new ManagedPersistenceContextProxyHandler(entityManager, manager, bean.getQualifiers(), persistenceContexts, getPersistenceProvider(entityManager));
          EntityManager proxy = (EntityManager) proxyConstructor.newInstance(handler);
          arg0.push(proxy);
-         getPersistenceProvider(entityManager).setFlushMode(proxy, getPersistenceContexts().getFlushMode());
+         getPersistenceProvider(entityManager).setFlushMode(proxy, getFlushMode());
          manager.fireEvent(new SeamManagedPersistenceContextCreated(proxy), qualifiers);
 
          return proxy;
@@ -123,6 +132,19 @@
          throw new RuntimeException(e);
       }
    }
+   
+   private FlushModeType getFlushMode()
+   {
+      try
+      {
+         return getPersistenceContexts().getFlushMode();
+      }
+      catch (ContextNotActiveException e) 
+      {
+         // TODO Set the default flush mode for the app
+         return FlushModeType.AUTO;
+      }
+   }
 
    public void destroy(Bean<EntityManager> bean, EntityManager em, CreationalContext<EntityManager> arg1)
    {

Modified: modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextProxyHandler.java
===================================================================
--- modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextProxyHandler.java	2010-09-26 22:25:36 UTC (rev 13781)
+++ modules/persistence/trunk/impl/src/main/java/org/jboss/seam/persistence/ManagedPersistenceContextProxyHandler.java	2010-09-27 15:28:45 UTC (rev 13782)
@@ -173,7 +173,10 @@
          {
             // we need to do this first to prevent an infinite loop
             persistenceContextsTouched = true;
-            persistenceContexts.touch(delegate);
+            if (persistenceContexts != null)
+            {
+               persistenceContexts.touch(delegate);
+            }
          }
          catch (ContextNotActiveException e)
          {



More information about the seam-commits mailing list