[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