Package com.sleepycat.je.jca.ra

Source Code of com.sleepycat.je.jca.ra.JELocalTransaction

/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2005
*      Sleepycat Software.  All rights reserved.
*
* $Id: JELocalTransaction.java,v 1.11 2005/04/05 18:01:11 cwl Exp $
*/

package com.sleepycat.je.jca.ra;

import javax.resource.ResourceException;
import javax.resource.spi.ConnectionEvent;

import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.TransactionConfig;
import com.sleepycat.je.XAEnvironment;

public class JELocalTransaction
    implements javax.resource.cci.LocalTransaction,
         javax.resource.spi.LocalTransaction {

    private static boolean DEBUG = false;

    private transient XAEnvironment env;
    private transient TransactionConfig transConfig;
    private transient JEManagedConnection mgdConn;

    JELocalTransaction(XAEnvironment env,
           TransactionConfig transConfig,
           JEManagedConnection mgdConn) {
  this.env = env;
  this.transConfig = transConfig;
  this.mgdConn = mgdConn;
    }

    public Transaction getTransaction()
  throws DatabaseException {

  return env.getThreadTransaction();
    }

    protected XAEnvironment getEnv() {
  return env;
    }

    private void checkEnv(String methodName)
  throws ResourceException {

  if (env == null) {
      throw new ResourceException("env is null in " + methodName);
  }
    }

    /*
     * Methods for LocalTransaction.
     */

    public void begin()
  throws ResourceException {

  long id = -1;
  try {
      Transaction txn = env.beginTransaction(null, transConfig);
      env.setThreadTransaction(txn);
      id = txn.getId();
  } catch (DatabaseException DE) {
      throw new ResourceException("During begin: " + DE.toString());
  }

  ConnectionEvent connEvent = new ConnectionEvent
      (mgdConn, ConnectionEvent.LOCAL_TRANSACTION_STARTED);
  connEvent.setConnectionHandle(mgdConn);
  mgdConn.sendConnectionEvent(connEvent);

  if (DEBUG) {
      System.out.println("JELocalTransaction.begin " + id);
  }
    }

    public void commit()
  throws ResourceException {

  try {
      env.getThreadTransaction().commit();
  } catch (DatabaseException DE) {
      ResourceException ret = new ResourceException(DE.toString());
      ret.initCause(DE);
      throw ret;
  } finally {
      env.setThreadTransaction(null);
  }

  ConnectionEvent connEvent = new ConnectionEvent
      (mgdConn, ConnectionEvent.LOCAL_TRANSACTION_COMMITTED);
  connEvent.setConnectionHandle(mgdConn);
  mgdConn.sendConnectionEvent(connEvent);

  if (DEBUG) {
      System.out.println("JELocalTransaction.commit");
  }
    }

    public void rollback()
  throws ResourceException {

  try {
      env.getThreadTransaction().abort();
  } catch (DatabaseException DE) {
      ResourceException ret = new ResourceException(DE.toString());
      ret.initCause(DE);
      throw ret;
  } finally {
      env.setThreadTransaction(null);
  }

  ConnectionEvent connEvent = new ConnectionEvent
      (mgdConn, ConnectionEvent.LOCAL_TRANSACTION_ROLLEDBACK);
  connEvent.setConnectionHandle(mgdConn);
  mgdConn.sendConnectionEvent(connEvent);

  if (DEBUG) {
      System.out.println("JELocalTransaction.rollback");
  }
    }
}
TOP

Related Classes of com.sleepycat.je.jca.ra.JELocalTransaction

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.