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

Gavin King gavin.king at jboss.com
Sun Oct 15 12:30:45 EDT 2006


  User: gavin   
  Date: 06/10/15 12:30:45

  Added:       src/main/org/jboss/seam/util  Work.java
  Log:
  fix JBSEAM-416
  
  Revision  Changes    Path
  1.1      date: 2006/10/15 16:30:45;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/util/Work.java
  
  Index: Work.java
  ===================================================================
  package org.jboss.seam.util;
  
  import javax.transaction.UserTransaction;
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  
  public abstract class Work<T>
  {
     private static final Log log = LogFactory.getLog(Work.class);
     
     protected abstract T work() throws Exception;
     
     protected boolean isTransactional()
     {
        return true;
     }
     
     public final T workInTransaction() throws Exception
     {
        boolean begin = isTransactional() && !Transactions.isTransactionActiveOrMarkedRollback();
        UserTransaction userTransaction = begin ? Transactions.getUserTransaction() : null;
        
        if (begin) 
        {
           log.debug("beginning transaction");
           userTransaction.begin();
        }
        try
        {
           T result = work();
           if (begin) 
           {
              log.debug("committing transaction");
              userTransaction.commit();
           }
           return result;
        }
        catch (Exception e)
        {
           if (begin) 
           {
              log.debug("rolling back transaction");
              userTransaction.rollback();
           }
           throw e;
        }
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list