[jboss-cvs] jboss-seam/src/main/org/jboss/seam/transaction ...
Gavin King
gavin.king at jboss.com
Sun Jun 24 02:34:34 EDT 2007
User: gavin
Date: 07/06/24 02:34:34
Modified: src/main/org/jboss/seam/transaction
EntityTransaction.java HibernateTransaction.java
NoTransaction.java Transaction.java
UTTransaction.java UserTransaction.java
package-info.java
Added: src/main/org/jboss/seam/transaction
AbstractUserTransaction.java CMTTransaction.java
LocalEjbTransaction.java
SynchronizationRegistry.java
Removed: src/main/org/jboss/seam/transaction
EJBTransaction.java
Log:
got rid of TransactionListener, merged with the Transaction package, for more consistent behavior across diff types of tx management
Revision Changes Path
1.5 +33 -20 jboss-seam/src/main/org/jboss/seam/transaction/EntityTransaction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: EntityTransaction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/EntityTransaction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- EntityTransaction.java 23 Jun 2007 07:51:11 -0000 1.4
+++ EntityTransaction.java 24 Jun 2007 06:34:34 -0000 1.5
@@ -8,6 +8,7 @@
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
+import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import org.jboss.seam.ScopeType;
@@ -20,8 +21,8 @@
/**
* Support for the JPA EntityTransaction API.
*
- * Adapts JPA transaction management to a
- * UserTransaction interface.
+ * Adapts JPA transaction management to a Seam UserTransaction
+ * interface.For use in non-JTA-capable environments.
*
* @author Gavin King
*
@@ -30,9 +31,9 @@
@Scope(ScopeType.EVENT)
@Install(value=false, precedence=FRAMEWORK)
@BypassInterceptors
-public class EntityTransaction extends UserTransaction
+public class EntityTransaction extends AbstractUserTransaction
{
-
+ private SynchronizationRegistry synchronizations = new SynchronizationRegistry();
private ValueExpression<EntityManager> entityManager;
private EntityManager currentEntityManager;
@@ -75,6 +76,7 @@
HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
{
assertActive();
+ boolean success = false;
try
{
javax.persistence.EntityTransaction delegate = getDelegate();
@@ -85,28 +87,15 @@
}
else
{
+ synchronizations.beforeTransactionCompletion();
delegate.commit();
+ success = true;
}
}
finally
{
clearEntityManager();
- }
- }
-
- public int getStatus() throws SystemException
- {
- if ( isEntityManagerSet() && getDelegate().getRollbackOnly() )
- {
- return Status.STATUS_MARKED_ROLLBACK;
- }
- else if ( isEntityManagerSet() && getDelegate().isActive() )
- {
- return Status.STATUS_ACTIVE;
- }
- else
- {
- return Status.STATUS_NO_TRANSACTION;
+ synchronizations.afterTransactionCompletion(success);
}
}
@@ -121,6 +110,7 @@
finally
{
clearEntityManager();
+ synchronizations.afterTransactionCompletion(false);
}
}
@@ -130,6 +120,22 @@
getDelegate().setRollbackOnly();
}
+ public int getStatus() throws SystemException
+ {
+ if ( isEntityManagerSet() && getDelegate().getRollbackOnly() )
+ {
+ return Status.STATUS_MARKED_ROLLBACK;
+ }
+ else if ( isEntityManagerSet() && getDelegate().isActive() )
+ {
+ return Status.STATUS_ACTIVE;
+ }
+ else
+ {
+ return Status.STATUS_NO_TRANSACTION;
+ }
+ }
+
public void setTransactionTimeout(int timeout) throws SystemException
{
throw new UnsupportedOperationException();
@@ -162,6 +168,13 @@
}
@Override
+ public void registerSynchronization(Synchronization sync)
+ {
+ assertActive();
+ synchronizations.registerSynchronization(sync);
+ }
+
+ @Override
public boolean isConversationContextRequired()
{
return true;
1.4 +27 -19 jboss-seam/src/main/org/jboss/seam/transaction/HibernateTransaction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: HibernateTransaction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/HibernateTransaction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- HibernateTransaction.java 23 Jun 2007 07:38:07 -0000 1.3
+++ HibernateTransaction.java 24 Jun 2007 06:34:34 -0000 1.4
@@ -7,6 +7,7 @@
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
+import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import org.hibernate.Session;
@@ -20,8 +21,8 @@
/**
* Support for the Hibernate Transaction API.
*
- * Adapts Hibernate transaction management to a
- * UserTransaction interface.
+ * Adapts Hibernate transaction management to a Seam UserTransaction
+ * interface. For use in non-JTA-capable environments.
*
* @author Gavin King
*
@@ -30,7 +31,7 @@
@Scope(ScopeType.EVENT)
@Install(value=false, precedence=FRAMEWORK)
@BypassInterceptors
-public class HibernateTransaction extends UserTransaction
+public class HibernateTransaction extends AbstractUserTransaction
{
private ValueExpression<Session> session;
@@ -93,22 +94,6 @@
}
}
- public int getStatus() throws SystemException
- {
- if (rollbackOnly)
- {
- return Status.STATUS_MARKED_ROLLBACK;
- }
- else if ( isSessionSet() && getDelegate().isActive() )
- {
- return Status.STATUS_ACTIVE;
- }
- else
- {
- return Status.STATUS_NO_TRANSACTION;
- }
- }
-
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
//TODO: translate exceptions that occur into the correct JTA exception
@@ -129,6 +114,22 @@
rollbackOnly = true;
}
+ public int getStatus() throws SystemException
+ {
+ if (rollbackOnly)
+ {
+ return Status.STATUS_MARKED_ROLLBACK;
+ }
+ else if ( isSessionSet() && getDelegate().isActive() )
+ {
+ return Status.STATUS_ACTIVE;
+ }
+ else
+ {
+ return Status.STATUS_NO_TRANSACTION;
+ }
+ }
+
public void setTransactionTimeout(int timeout) throws SystemException
{
assertActive();
@@ -163,6 +164,13 @@
}
@Override
+ public void registerSynchronization(Synchronization sync)
+ {
+ assertActive();
+ getDelegate().registerSynchronization(sync);
+ }
+
+ @Override
public boolean isConversationContextRequired()
{
return true;
1.2 +14 -8 jboss-seam/src/main/org/jboss/seam/transaction/NoTransaction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NoTransaction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/NoTransaction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- NoTransaction.java 30 May 2007 20:16:00 -0000 1.1
+++ NoTransaction.java 24 Jun 2007 06:34:34 -0000 1.2
@@ -5,28 +5,28 @@
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
+import javax.transaction.Synchronization;
import javax.transaction.SystemException;
/**
- * When no kind of transaction management
- * exists.
+ * When no kind of transaction management exists.
*
* @author Mike Youngstrom
* @author Gavin King
*
*/
-public class NoTransaction extends UserTransaction
+public class NoTransaction extends AbstractUserTransaction
{
public void begin() throws NotSupportedException, SystemException
{
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("no transaction");
}
public void commit() throws RollbackException, HeuristicMixedException,
HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
{
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("no transaction");
}
public int getStatus() throws SystemException
@@ -36,17 +36,23 @@
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("no transaction");
}
public void setRollbackOnly() throws IllegalStateException, SystemException
{
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("no transaction");
}
public void setTransactionTimeout(int timeout) throws SystemException
{
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException("no transaction");
+ }
+
+ @Override
+ public void registerSynchronization(Synchronization sync)
+ {
+ throw new UnsupportedOperationException("no transaction");
}
}
1.10 +42 -13 jboss-seam/src/main/org/jboss/seam/transaction/Transaction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Transaction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/Transaction.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- Transaction.java 23 Jun 2007 07:11:45 -0000 1.9
+++ Transaction.java 24 Jun 2007 06:34:34 -0000 1.10
@@ -4,6 +4,7 @@
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
+import javax.transaction.Synchronization;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
@@ -16,17 +17,13 @@
import org.jboss.seam.util.Naming;
/**
- * Abstracts all possible transaction management APIs behind a
- * JTA-compatible interface. Unfortunately, many
- * otherwise-perfectly-intelligent-looking Java developers like
- * to invent their own transaction management APIs when they get
- * bored, even though JTA is well-known to be more than good
- * enough. For example, one of the co-authors of this class was
- * present at the creation of not one but two "alternative"
- * transaction APIs (org.hibernate.Transaction and
- * javax.persistence.EntityTransaction), and is more
- * embarrassed by this than by any other of his many professional
- * blunders.
+ * Supports injection of a Seam UserTransaction object that
+ * wraps the current JTA transaction or EJB container managed
+ * transaction. This base implementation does not have access
+ * to the JTA TransactionManager, so it is not fully aware
+ * of container managed transaction lifecycle, and is not
+ * able to register Synchronizations with a container managed
+ * transaction.
*
* @author Mike Youngstrom
* @author Gavin King
@@ -43,6 +40,38 @@
private static String userTransactionName = "UserTransaction";
+ private SynchronizationRegistry synchronizations = new SynchronizationRegistry();
+
+ protected SynchronizationRegistry getSynchronizations()
+ {
+ return synchronizations;
+ }
+
+ protected void afterCommit(boolean success)
+ {
+ synchronizations.afterTransactionCompletion(success);
+ }
+
+ protected void afterRollback()
+ {
+ synchronizations.afterTransactionCompletion(false);
+ }
+
+ protected void beforeCommit()
+ {
+ synchronizations.beforeTransactionCompletion();
+ }
+
+ protected void registerSynchronization(Synchronization sync)
+ {
+ synchronizations.registerSynchronization(sync);
+ }
+
+ protected boolean isAwareOfContainerTransactions()
+ {
+ return false;
+ }
+
public static void setUserTransactionName(String name)
{
userTransactionName = name;
@@ -85,12 +114,12 @@
protected UserTransaction createEJBTransaction() throws NamingException
{
- return new EJBTransaction( EJB.getEJBContext() );
+ return new CMTTransaction( EJB.getEJBContext(), this );
}
protected UserTransaction createUTTransaction() throws NamingException
{
- return new UTTransaction( getUserTransaction() );
+ return new UTTransaction( getUserTransaction(), this );
}
protected javax.transaction.UserTransaction getUserTransaction() throws NamingException
1.4 +33 -7 jboss-seam/src/main/org/jboss/seam/transaction/UTTransaction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UTTransaction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/UTTransaction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- UTTransaction.java 22 Jun 2007 23:04:44 -0000 1.3
+++ UTTransaction.java 24 Jun 2007 06:34:34 -0000 1.4
@@ -4,23 +4,26 @@
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
+import javax.transaction.Synchronization;
import javax.transaction.SystemException;
/**
- * Wraps JTA transaction management in a
- * UserTransaction interface.
+ * Wraps JTA transaction management in a Seam UserTransaction
+ * interface.
*
* @author Mike Youngstrom
* @author Gavin King
*
*/
-public class UTTransaction extends UserTransaction
+public class UTTransaction extends AbstractUserTransaction
{
- private javax.transaction.UserTransaction delegate;
+ private final javax.transaction.UserTransaction delegate;
+ private final Transaction parent;
- UTTransaction(javax.transaction.UserTransaction delegate)
+ UTTransaction(javax.transaction.UserTransaction delegate, Transaction parent)
{
+ this.parent = parent;
this.delegate = delegate;
if (delegate==null)
{
@@ -36,7 +39,17 @@
public void commit() throws RollbackException, HeuristicMixedException,
HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
{
+ boolean success = false;
+ parent.beforeCommit();
+ try
+ {
delegate.commit();
+ success = true;
+ }
+ finally
+ {
+ parent.afterCommit(success);
+ }
}
public int getStatus() throws SystemException
@@ -46,8 +59,15 @@
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
+ try
+ {
delegate.rollback();
}
+ finally
+ {
+ parent.afterRollback();
+ }
+ }
public void setRollbackOnly() throws IllegalStateException, SystemException
{
@@ -59,4 +79,10 @@
delegate.setTransactionTimeout(timeout);
}
+ @Override
+ public void registerSynchronization(Synchronization sync)
+ {
+ parent.registerSynchronization(sync);
+ }
+
}
1.5 +12 -48 jboss-seam/src/main/org/jboss/seam/transaction/UserTransaction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UserTransaction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/UserTransaction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- UserTransaction.java 23 Jun 2007 07:38:07 -0000 1.4
+++ UserTransaction.java 24 Jun 2007 06:34:34 -0000 1.5
@@ -1,11 +1,6 @@
package org.jboss.seam.transaction;
-import static javax.transaction.Status.STATUS_ACTIVE;
-import static javax.transaction.Status.STATUS_MARKED_ROLLBACK;
-import static javax.transaction.Status.STATUS_ROLLEDBACK;
-import static javax.transaction.Status.STATUS_COMMITTED;
-import static javax.transaction.Status.STATUS_NO_TRANSACTION;
-
+import javax.transaction.Synchronization;
import javax.transaction.SystemException;
/**
@@ -15,49 +10,18 @@
* @author Gavin King
*
*/
-public abstract class UserTransaction implements javax.transaction.UserTransaction
+public interface UserTransaction extends javax.transaction.UserTransaction
{
- 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 isRolledBackOrMarkedRollback() throws SystemException
- {
- int status = getStatus();
- return status == STATUS_ROLLEDBACK || status == STATUS_MARKED_ROLLBACK;
- }
-
- public boolean isMarkedRollback() throws SystemException
- {
- return getStatus() == STATUS_MARKED_ROLLBACK;
- }
-
- public boolean isNoTransaction() throws SystemException
- {
- return getStatus() == STATUS_NO_TRANSACTION;
- }
-
- public boolean isRolledBack() throws SystemException
- {
- return getStatus() == STATUS_ROLLEDBACK;
- }
-
- public boolean isCommitted() throws SystemException
- {
- return getStatus() == STATUS_COMMITTED;
- }
+ public boolean isActive() throws SystemException;
+ public boolean isActiveOrMarkedRollback() throws SystemException;
+ public boolean isRolledBackOrMarkedRollback() throws SystemException;
+ public boolean isMarkedRollback() throws SystemException;
+ public boolean isNoTransaction() throws SystemException;
+ public boolean isRolledBack() throws SystemException;
+ public boolean isCommitted() throws SystemException;
- public boolean isConversationContextRequired()
- {
- return false;
- }
+ public boolean isConversationContextRequired();
+ public abstract void registerSynchronization(Synchronization sync);
}
1.4 +11 -1 jboss-seam/src/main/org/jboss/seam/transaction/package-info.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: package-info.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/package-info.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- package-info.java 23 Jun 2007 10:17:30 -0000 1.3
+++ package-info.java 24 Jun 2007 06:34:34 -0000 1.4
@@ -1,5 +1,15 @@
/**
- * Transaction management abstraction layer.
+ * Abstracts all possible transaction management APIs behind a
+ * JTA-compatible interface. Unfortunately, many
+ * otherwise-perfectly-intelligent-looking Java developers like
+ * to invent their own transaction management APIs when they get
+ * bored, even though JTA is well-known to be more than good
+ * enough. For example, one of the co-authors of this class was
+ * present at the creation of not one but two "alternative"
+ * transaction APIs (org.hibernate.Transaction and
+ * javax.persistence.EntityTransaction), and is more
+ * embarrassed by this than by any other of his many professional
+ * blunders.
*
* @see org.jboss.seam.transaction.Transaction
* @see org.jboss.seam.transaction.UserTransaction
1.1 date: 2007/06/24 06:34:34; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/transaction/AbstractUserTransaction.java
Index: AbstractUserTransaction.java
===================================================================
package org.jboss.seam.transaction;
import static javax.transaction.Status.STATUS_ACTIVE;
import static javax.transaction.Status.STATUS_MARKED_ROLLBACK;
import static javax.transaction.Status.STATUS_ROLLEDBACK;
import static javax.transaction.Status.STATUS_COMMITTED;
import static javax.transaction.Status.STATUS_NO_TRANSACTION;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
/**
* Base implementation of UserTransaction
*
* @author Gavin King
*
*/
public abstract class AbstractUserTransaction implements UserTransaction
{
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 isRolledBackOrMarkedRollback() throws SystemException
{
int status = getStatus();
return status == STATUS_ROLLEDBACK || status == STATUS_MARKED_ROLLBACK;
}
public boolean isMarkedRollback() throws SystemException
{
return getStatus() == STATUS_MARKED_ROLLBACK;
}
public boolean isNoTransaction() throws SystemException
{
return getStatus() == STATUS_NO_TRANSACTION;
}
public boolean isRolledBack() throws SystemException
{
return getStatus() == STATUS_ROLLEDBACK;
}
public boolean isCommitted() throws SystemException
{
return getStatus() == STATUS_COMMITTED;
}
public boolean isConversationContextRequired()
{
return false;
}
public abstract void registerSynchronization(Synchronization sync);
}
1.1 date: 2007/06/24 06:34:34; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/transaction/CMTTransaction.java
Index: CMTTransaction.java
===================================================================
package org.jboss.seam.transaction;
import javax.ejb.EJBContext;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
/**
* Wraps EJBContext transaction management in a
* UserTransaction interface. Note that container managed
* transaction cannot be controlled by the application,
* so begin(), commit() and rollback() all throw
* UnsupportOperationException.
*
*
* @author Mike Youngstrom
* @author Gavin King
*
*/
public class CMTTransaction extends AbstractUserTransaction
{
private final EJBContext ejbContext;
private final Transaction parent;
public CMTTransaction(EJBContext ejbContext, Transaction parent)
{
this.parent = parent;
this.ejbContext = ejbContext;
if (ejbContext==null)
{
throw new IllegalArgumentException("null EJBContext");
}
}
public void begin() throws NotSupportedException, SystemException
{
throw new UnsupportedOperationException("container managed transaction");
}
public void commit() throws RollbackException, HeuristicMixedException,
HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
{
throw new UnsupportedOperationException("container managed transaction");
}
public int getStatus() throws SystemException
{
try
{
if ( !ejbContext.getRollbackOnly() )
{
return Status.STATUS_ACTIVE;
}
else
{
return Status.STATUS_MARKED_ROLLBACK;
}
}
catch (IllegalStateException ise)
{
return Status.STATUS_NO_TRANSACTION;
}
}
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
throw new UnsupportedOperationException("container managed transaction");
}
public void setRollbackOnly() throws IllegalStateException, SystemException
{
ejbContext.setRollbackOnly();
}
public void setTransactionTimeout(int timeout) throws SystemException
{
throw new UnsupportedOperationException("container managed transaction");
}
@Override
public void registerSynchronization(Synchronization sync)
{
if ( parent.isAwareOfContainerTransactions() )
{
parent.registerSynchronization(sync);
}
else
{
throw new UnsupportedOperationException("cannot register synchronization with container transaction, use <transaction:ejb-transaction/>");
}
}
}
1.1 date: 2007/06/24 06:34:34; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/transaction/LocalEjbTransaction.java
Index: LocalEjbTransaction.java
===================================================================
package org.jboss.seam.transaction;
import javax.ejb.Local;
import javax.naming.NamingException;
/**
* Local interface for EjbTransaction
* @author Gavin King
*
*/
@Local
public interface LocalEjbTransaction
{
public UserTransaction getTransaction() throws NamingException;
public void destroy();
}
1.1 date: 2007/06/24 06:34:34; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/transaction/SynchronizationRegistry.java
Index: SynchronizationRegistry.java
===================================================================
package org.jboss.seam.transaction;
import java.util.ArrayList;
import java.util.List;
import javax.transaction.Status;
import javax.transaction.Synchronization;
import org.jboss.seam.core.Events;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
/**
* A list of Synchronizations to be invoked before and after transaction
* completion. This class is used when we can't register a synchronization
* directly with JTA.
*
* @author Gavin King
*
*/
class SynchronizationRegistry
{
private static final LogProvider log = Logging.getLogProvider(SynchronizationRegistry.class);
private List<Synchronization> synchronizations = new ArrayList<Synchronization>();
void registerSynchronization(Synchronization sync)
{
synchronizations.add(sync);
}
void afterTransactionCompletion(boolean success)
{
Events.instance().raiseEvent("org.jboss.seam.afterTransactionCompletion", success);
for (Synchronization sync: synchronizations)
{
try
{
sync.afterCompletion(success ? Status.STATUS_COMMITTED : Status.STATUS_ROLLEDBACK);
}
catch (Exception e)
{
log.error("Exception processing transaction Synchronization after completion", e);
}
}
synchronizations.clear();
}
void beforeTransactionCompletion()
{
Events.instance().raiseEvent("org.jboss.seam.beforeTransactionCompletion");
for (Synchronization sync: synchronizations)
{
try
{
sync.beforeCompletion();
}
catch (Exception e)
{
log.error("Exception processing transaction Synchronization before completion", e);
}
}
}
}
More information about the jboss-cvs-commits
mailing list