[jboss-cvs] jboss-seam/src/main/org/jboss/seam/interceptors ...
Gavin King
gavin.king at jboss.com
Sun Oct 15 12:30:45 EDT 2006
User: gavin
Date: 06/10/15 12:30:45
Modified: src/main/org/jboss/seam/interceptors
TransactionInterceptor.java
Log:
fix JBSEAM-416
Revision Changes Path
1.8 +18 -33 jboss-seam/src/main/org/jboss/seam/interceptors/TransactionInterceptor.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: TransactionInterceptor.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/interceptors/TransactionInterceptor.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- TransactionInterceptor.java 10 Oct 2006 06:43:16 -0000 1.7
+++ TransactionInterceptor.java 15 Oct 2006 16:30:45 -0000 1.8
@@ -4,56 +4,41 @@
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
-import javax.transaction.UserTransaction;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jboss.seam.annotations.Interceptor;
import org.jboss.seam.annotations.Transactional;
-import org.jboss.seam.util.Transactions;
+import org.jboss.seam.util.Work;
@Interceptor(stateless=true,
around={RollbackInterceptor.class, BusinessProcessInterceptor.class, ConversationInterceptor.class})
public class TransactionInterceptor extends AbstractInterceptor
{
- private static final Log log = LogFactory.getLog(TransactionInterceptor.class);
@AroundInvoke
- public Object doInTransactionIfNecessary(InvocationContext invocation) throws Exception
+ public Object doInTransactionIfNecessary(final InvocationContext invocation) throws Exception
{
- boolean begin = ( isTransactional( invocation.getMethod() ) || isTransactional( getComponent().getBeanClass() ) ) &&
- !Transactions.isTransactionActiveOrMarkedRollback();
- UserTransaction userTransaction = begin ? Transactions.getUserTransaction() : null;
-
- if (begin)
- {
- log.debug("beginning transaction");
- userTransaction.begin();
- }
- try
+ return new Work()
{
- Object result = invocation.proceed();
- if (begin)
+
+ @Override
+ protected Object work() throws Exception
{
- log.debug("committing transaction");
- userTransaction.commit();
- }
- return result;
+ return invocation.proceed();
}
- catch (Exception e)
- {
- if (begin)
+
+ @Override
+ protected boolean isTransactional()
{
- log.debug("rolling back transaction");
- userTransaction.rollback();
- }
- throw e;
- }
+ return isTransactional( invocation.getMethod() ) ||
+ isTransactional( getComponent().getBeanClass() );
}
- private static boolean isTransactional(AnnotatedElement element)
+ private boolean isTransactional(AnnotatedElement element)
{
return element.isAnnotationPresent(Transactional.class);
}
+ }.workInTransaction();
+ }
+
}
More information about the jboss-cvs-commits
mailing list