[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...

Gavin King gavin.king at jboss.com
Fri Feb 2 15:03:38 EST 2007


  User: gavin   
  Date: 07/02/02 15:03:38

  Modified:    src/main/org/jboss/seam/core   ManagedHibernateSession.java
                        ManagedPersistenceContext.java
  Log:
  work around evil Tomcat JBSEAM-760
  
  Revision  Changes    Path
  1.29      +16 -25    jboss-seam/src/main/org/jboss/seam/core/ManagedHibernateSession.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedHibernateSession.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ManagedHibernateSession.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -b -r1.28 -r1.29
  --- ManagedHibernateSession.java	2 Feb 2007 19:41:36 -0000	1.28
  +++ ManagedHibernateSession.java	2 Feb 2007 20:03:38 -0000	1.29
  @@ -1,4 +1,4 @@
  -//$Id: ManagedHibernateSession.java,v 1.28 2007/02/02 19:41:36 gavin Exp $
  +//$Id: ManagedHibernateSession.java,v 1.29 2007/02/02 20:03:38 gavin Exp $
   package org.jboss.seam.core;
   
   import static org.jboss.seam.InterceptionType.NEVER;
  @@ -53,8 +53,6 @@
      private ValueBinding<SessionFactory> sessionFactory;
      private List<Filter> filters = new ArrayList<Filter>(0);
      
  -   private FlushModeType flushMode;
  -   
      public boolean clearDirty()
      {
         return true;
  @@ -69,26 +67,22 @@
            sessionFactoryJndiName = "java:/" + componentName;
         }
         
  -      flushMode = PersistenceContexts.instance().getFlushMode();
  -      
  -      createSession();
  -      
         PersistenceContexts.instance().touch(componentName);
  -      
  -      if ( log.isDebugEnabled() )
  -      {
  -         log.debug("created seam managed session for session factory: "+ sessionFactoryJndiName);
  -      }
      }
   
  -   private void createSession()
  +   private void initSession()
      {
         session = getSessionFactoryFromJndiOrValueBinding().openSession();
  -      setSessionFlushMode();
  +      setSessionFlushMode( PersistenceContexts.instance().getFlushMode() );
         for (Filter f: filters)
         {
            enableFilter(f);
         }
  +
  +      if ( log.isDebugEnabled() )
  +      {
  +         log.debug("created seam managed session for session factory: "+ sessionFactoryJndiName);
  +      }
      }
   
      private void enableFilter(Filter f)
  @@ -104,10 +98,14 @@
      @Unwrap
      public Session getSession()
      {
  +      if (session==null) initSession();
  +      
  +      //join the transaction
         if ( !Lifecycle.isDestroying() ) 
         {
            session.isOpen();
         }
  +      
         return session;
      }
      
  @@ -122,13 +120,7 @@
      }
      
      //we can't use @PostActivate because it is intercept NEVER
  -   public void sessionDidActivate(HttpSessionEvent event)
  -   {
  -      if (session==null)
  -      {
  -         createSession();
  -      }
  -   }
  +   public void sessionDidActivate(HttpSessionEvent event) {}
      
      @Destroy
      public void destroy()
  @@ -170,11 +162,10 @@
      
      public void changeFlushMode(FlushModeType flushMode)
      {
  -      this.flushMode = flushMode;
  -      setSessionFlushMode();
  +      setSessionFlushMode(flushMode);
      }
   
  -   public void setSessionFlushMode()
  +   protected void setSessionFlushMode(FlushModeType flushMode)
      {
         switch (flushMode)
         {
  
  
  
  1.34      +21 -24    jboss-seam/src/main/org/jboss/seam/core/ManagedPersistenceContext.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedPersistenceContext.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ManagedPersistenceContext.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -b -r1.33 -r1.34
  --- ManagedPersistenceContext.java	2 Feb 2007 19:41:36 -0000	1.33
  +++ ManagedPersistenceContext.java	2 Feb 2007 20:03:38 -0000	1.34
  @@ -1,4 +1,4 @@
  -//$Id: ManagedPersistenceContext.java,v 1.33 2007/02/02 19:41:36 gavin Exp $
  +//$Id: ManagedPersistenceContext.java,v 1.34 2007/02/02 20:03:38 gavin Exp $
   package org.jboss.seam.core;
   
   import static org.jboss.seam.InterceptionType.NEVER;
  @@ -54,8 +54,6 @@
      private ValueBinding<EntityManagerFactory> entityManagerFactory;
      private List<Filter> filters = new ArrayList<Filter>(0);
      
  -   private FlushModeType flushMode;
  -  
      public boolean clearDirty()
      {
         return true;
  @@ -70,11 +68,18 @@
            persistenceUnitJndiName = "java:/" + componentName;
         }
         
  -      flushMode = PersistenceContexts.instance().getFlushMode(); //can't do this inside createEntityManager()
  +      PersistenceContexts.instance().touch(componentName);      
  +   }
         
  -      createEntityManager();
  +   private void initEntityManager()
  +   {
  +      entityManager = getEntityManagerFactoryFromJndiOrValueBinding().createEntityManager();
  +      setEntityManagerFlushMode( PersistenceContexts.instance().getFlushMode() );
         
  -      PersistenceContexts.instance().touch(componentName);
  +      for (Filter f: filters)
  +      {
  +         PersistenceProvider.instance().enableFilter(f, entityManager);
  +      }
         
         if ( log.isDebugEnabled() )
         {
  @@ -89,24 +94,17 @@
         }
      }
      
  -   private void createEntityManager()
  -   {
  -      entityManager = getEntityManagerFactoryFromJndiOrValueBinding().createEntityManager();
  -      setEntityManagerFlushMode();
  -
  -      for (Filter f: filters)
  -      {
  -         PersistenceProvider.instance().enableFilter(f, entityManager);
  -      }
  -   }
  -   
      @Unwrap
      public EntityManager getEntityManager() throws NamingException, SystemException
      {
  +      if (entityManager==null) initEntityManager();
  +      
  +      //join the transaction
         if ( !Lifecycle.isDestroying() && Transactions.isTransactionActive() )
         {
            entityManager.joinTransaction();
         }
  +      
         return entityManager;
      }
      
  @@ -141,7 +139,7 @@
         {
            if (entityManager==null)
            {
  -            createEntityManager();
  +            initEntityManager();
            }
         }
         finally
  @@ -226,11 +224,10 @@
      
      public void changeFlushMode(FlushModeType flushMode)
      {
  -      this.flushMode = flushMode;
  -      setEntityManagerFlushMode();
  +      setEntityManagerFlushMode(flushMode);
      }
      
  -   public void setEntityManagerFlushMode()
  +   protected void setEntityManagerFlushMode(FlushModeType flushMode)
      {
         switch (flushMode)
         {
  
  
  



More information about the jboss-cvs-commits mailing list