[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Wed May 30 14:53:46 EDT 2007
User: gavin
Date: 07/05/30 14:53:46
Modified: src/main/org/jboss/seam/core Init.java
ManagedJbpmContext.java
ManagedPersistenceContext.java
Added: src/main/org/jboss/seam/core Transaction.java
Log:
apply JBSEAM-1144
make Transaction management be a component that implements UserTransaction
no longer need to roll back txns at end of request, due to JBAS-3242 being fixed
Revision Changes Path
1.46 +2 -16 jboss-seam/src/main/org/jboss/seam/core/Init.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Init.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Init.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- Init.java 1 May 2007 16:43:51 -0000 1.45
+++ Init.java 30 May 2007 18:53:46 -0000 1.46
@@ -1,4 +1,4 @@
-//$Id: Init.java,v 1.45 2007/05/01 16:43:51 gavin Exp $
+//$Id: Init.java,v 1.46 2007/05/30 18:53:46 gavin Exp $
package org.jboss.seam.core;
@@ -25,7 +25,6 @@
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Expressions.MethodExpression;
import org.jboss.seam.core.Expressions.ValueExpression;
-import org.jboss.seam.util.Transactions;
/**
* A Seam component that holds Seam configuration settings
@@ -77,7 +76,7 @@
}*/
if (userTransactionName!=null)
{
- Transactions.setUserTransactionName(userTransactionName);
+ Transaction.setUserTransactionName(userTransactionName);
}
}
@@ -337,19 +336,6 @@
}
/**
- * The JNDI name of the JTA TransactionManager
- */
- /*protected String getTransactionManagerName()
- {
- return transactionManagerName;
- }
-
- protected void setTransactionManagerName(String transactionManagerName)
- {
- this.transactionManagerName = transactionManagerName;
- }*/
-
- /**
* The JNDI name of the JTA UserTransaction
*/
public String getUserTransactionName()
1.24 +5 -6 jboss-seam/src/main/org/jboss/seam/core/ManagedJbpmContext.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ManagedJbpmContext.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/ManagedJbpmContext.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- ManagedJbpmContext.java 26 Jan 2007 23:38:30 -0000 1.23
+++ ManagedJbpmContext.java 30 May 2007 18:53:46 -0000 1.24
@@ -14,8 +14,6 @@
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
-import org.jboss.seam.log.LogProvider;
-import org.jboss.seam.log.Logging;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
@@ -27,7 +25,8 @@
import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
-import org.jboss.seam.util.Transactions;
+import org.jboss.seam.log.LogProvider;
+import org.jboss.seam.log.Logging;
import org.jbpm.JbpmContext;
import org.jbpm.persistence.db.DbPersistenceServiceFactory;
import org.jbpm.svc.Services;
@@ -36,7 +35,7 @@
* Manages a reference to a JbpmSession.
*
* @author <a href="mailto:steve at hibernate.org">Steve Ebersole </a>
- * @version $Revision: 1.23 $
+ * @version $Revision: 1.24 $
*/
@Scope(ScopeType.EVENT)
@Name("org.jboss.seam.core.jbpmContext")
@@ -70,11 +69,11 @@
@Unwrap
public JbpmContext getJbpmContext() throws NamingException, RollbackException, SystemException
{
- if ( !Transactions.isTransactionActiveOrMarkedRollback() )
+ if ( !Transaction.instance().isActiveOrMarkedRollback() )
{
throw new IllegalStateException("JbpmContext may only be used inside a transaction");
}
- if ( !synchronizationRegistered && !Lifecycle.isDestroying() && Transactions.isTransactionActive() )
+ if ( !synchronizationRegistered && !Lifecycle.isDestroying() && Transaction.instance().isActive() )
{
jbpmContext.getSession().getTransaction().registerSynchronization(this);
//Transactions.registerSynchronization(this);
1.42 +2 -3 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.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- ManagedPersistenceContext.java 29 May 2007 02:56:25 -0000 1.41
+++ ManagedPersistenceContext.java 30 May 2007 18:53:46 -0000 1.42
@@ -1,4 +1,4 @@
-//$Id: ManagedPersistenceContext.java,v 1.41 2007/05/29 02:56:25 gavin Exp $
+//$Id: ManagedPersistenceContext.java,v 1.42 2007/05/30 18:53:46 gavin Exp $
package org.jboss.seam.core;
import static org.jboss.seam.InterceptionType.NEVER;
@@ -31,7 +31,6 @@
import org.jboss.seam.persistence.EntityManagerProxy;
import org.jboss.seam.persistence.PersistenceProvider;
import org.jboss.seam.util.Naming;
-import org.jboss.seam.util.Transactions;
/**
* A Seam component that manages a conversation-scoped extended
@@ -105,7 +104,7 @@
if (entityManager==null) initEntityManager();
//join the transaction
- if ( !Lifecycle.isDestroying() && Transactions.isTransactionActive() )
+ if ( !Lifecycle.isDestroying() && Transaction.instance().isActive() )
{
entityManager.joinTransaction();
}
1.1 date: 2007/05/30 18:53:46; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/core/Transaction.java
Index: Transaction.java
===================================================================
package org.jboss.seam.core;
import static javax.transaction.Status.STATUS_ACTIVE;
import static javax.transaction.Status.STATUS_MARKED_ROLLBACK;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.TransactionException;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.util.EJB;
import org.jboss.seam.util.Naming;
/**
* Wraps JTA and EJBContext transaction management into a single Seam component
* that implements UserTransaction. This component can then be extended for more
* specific transaction management situations.
*
* @author Mike Youngstrom
*
*/
@Name("org.jboss.seam.core.transaction")
@Scope(ScopeType.STATELESS)
@Install(precedence=BUILT_IN)
public class Transaction implements UserTransaction
{
private static final String STANDARD_USER_TRANSACTION_NAME = "java:comp/UserTransaction";
private static String userTransactionName = "UserTransaction";
public static void setUserTransactionName(String name)
{
userTransactionName = name;
}
public static String getUserTransactionName()
{
return userTransactionName;
}
public static Transaction instance()
{
if (!Contexts.isApplicationContextActive())
{
throw new IllegalStateException("No application context active, cannot obtain Transaction component");
}
return (Transaction) Component.getInstance(Transaction.class, ScopeType.APPLICATION);
}
private UserTransaction getUserTransaction() throws NamingException
{
try
{
return (UserTransaction) Naming.getInitialContext().lookup(userTransactionName);
}
catch (NameNotFoundException nnfe)
{
return (UserTransaction) Naming.getInitialContext().lookup(STANDARD_USER_TRANSACTION_NAME);
}
}
public void begin() throws NotSupportedException, SystemException
{
try
{
getUserTransaction().begin();
}
catch (NamingException ne)
{
throw new TransactionException("Unable to begin UserTransaction", ne);
}
}
public void commit() throws RollbackException, HeuristicMixedException,
HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
{
try
{
getUserTransaction().commit();
}
catch (NamingException ne)
{
throw new TransactionException("Unable to commit UserTransaction", ne);
}
}
public int getStatus() throws SystemException
{
try
{
return getUserTransaction().getStatus();
}
catch (NamingException ne)
{
try
{
if ( !EJB.getEJBContext().getRollbackOnly() )
{
return Status.STATUS_ACTIVE;
}
else
{
return Status.STATUS_MARKED_ROLLBACK;
}
}
catch (NamingException e)
{
throw new TransactionException("Unable to get UserTransaction status", ne);
}
catch (IllegalStateException e)
{
return Status.STATUS_NO_TRANSACTION;
}
}
}
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
try
{
getUserTransaction().rollback();
}
catch (NamingException ne)
{
throw new TransactionException("Unable to rollback UserTransaction", ne);
}
}
public void setRollbackOnly() throws IllegalStateException, SystemException
{
try
{
getUserTransaction().setRollbackOnly();
}
catch (NamingException ne)
{
try
{
EJB.getEJBContext().setRollbackOnly();
}
catch (NamingException e)
{
throw new TransactionException("Unable to set UserTransaction or EJBContext to rollback only", ne);
}
}
}
public void setTransactionTimeout(int timeout) throws SystemException
{
try
{
getUserTransaction().setTransactionTimeout(timeout);
}
catch (NamingException ne)
{
throw new TransactionException("Unable set transaction timeout", ne);
}
}
public boolean isActive() throws SystemException
{
return getStatus() == STATUS_ACTIVE;
}
public boolean isActiveOrMarkedRollback() throws SystemException
{
int status = getStatus();
return status == STATUS_ACTIVE || status == STATUS_MARKED_ROLLBACK;
}
public boolean isMarkedRollback() throws SystemException
{
return getStatus() == STATUS_MARKED_ROLLBACK;
}
}
More information about the jboss-cvs-commits
mailing list