Package org.wso2.carbon.atomikos

Source Code of org.wso2.carbon.atomikos.TransactionFactory$TransactionManagerWrapper

package org.wso2.carbon.atomikos;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.Name;
import javax.naming.spi.ObjectFactory;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.InvalidTransactionException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.atomikos.icatch.jta.UserTransactionFactory;
import com.atomikos.icatch.jta.UserTransactionManager;
import com.atomikos.icatch.system.Configuration;

public class TransactionFactory extends UserTransactionFactory implements ObjectFactory {

  private static Log log = LogFactory.getLog(TransactionFactory.class);
 
  private static UserTransactionManager txManager;
 
  public static void initTxManager() {
    try {
      if (txManager == null) {
        log.info("Starting Atomikos Transaction Manager " + Configuration.getVersion());
        txManager = new UserTransactionManager();
      }
      txManager.init();
    } catch (SystemException e) {
      log.error("Error in initializing Atomikos Transaction Manager", e);
    }
  }
 
  public static void closeTxManager() {
    if (txManager != null) {
      log.info("Shutting down Atomikos Transaction Manager");
      txManager.close();
      txManager = null;
    }
  }
 
  @SuppressWarnings("unchecked")
  @Override
  public Object getObjectInstance(Object obj, Name name, Context nameCtx,
      Hashtable environment) throws Exception {
    UserTransaction userTx = (UserTransaction) super.getObjectInstance(obj, name, nameCtx, environment);
    return new TransactionManagerWrapper(userTx);
  }
 
  private class TransactionManagerWrapper implements UserTransaction, TransactionManager {

    private UserTransaction userTx;
   
    public TransactionManagerWrapper(UserTransaction userTx) {
      this.userTx = userTx;
    }
   
    @Override
    public void begin() throws NotSupportedException, SystemException {
      this.userTx.begin();
    }

    @Override
    public void commit() throws HeuristicMixedException,
        HeuristicRollbackException, IllegalStateException,
        RollbackException, SecurityException, SystemException {
      this.userTx.commit();
    }

    @Override
    public int getStatus() throws SystemException {
      return this.userTx.getStatus();
    }

    @Override
    public void rollback() throws IllegalStateException, SecurityException,
        SystemException {
      this.userTx.rollback();
    }

    @Override
    public void setRollbackOnly() throws IllegalStateException,
        SystemException {
      this.userTx.setRollbackOnly();
    }

    @Override
    public void setTransactionTimeout(int secs) throws SystemException {
      this.userTx.setTransactionTimeout(secs);
    }

    @Override
    public Transaction getTransaction() throws SystemException {
      return txManager.getTransaction();
    }

    @Override
    public void resume(Transaction tx) throws IllegalStateException,
        InvalidTransactionException, SystemException {
      txManager.resume(tx);
    }

    @Override
    public Transaction suspend() throws SystemException {
      return txManager.suspend();
    }
   
  }
 
}
TOP

Related Classes of org.wso2.carbon.atomikos.TransactionFactory$TransactionManagerWrapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.