[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