diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/InboundMessageProcessor.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/InboundMessageProcessor.java
index 5b7722021..2b8fcddc1 100644
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/InboundMessageProcessor.java
+++ b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/InboundMessageProcessor.java
@@ -79,8 +79,6 @@ import org.glassfish.openesb.databasebc.model.runtime.Db2DataAccess;
import org.glassfish.openesb.databasebc.model.runtime.DerbyDataAccess;
import org.glassfish.openesb.databasebc.model.runtime.OracleDataAccess;
import org.glassfish.openesb.databasebc.model.runtime.SqlServerDataAccess;
-import org.glassfish.openesb.databasebc.transaction.TransactionHelper;
-import org.glassfish.openesb.databasebc.transaction.XidImpl;
import com.sun.jbi.nms.exchange.ExchangePattern;
import com.sun.jbi.common.qos.messaging.MessagingChannel;
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/OutboundMessageProcessor.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/OutboundMessageProcessor.java
index a967842ec..a08a8e1f3 100644
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/OutboundMessageProcessor.java
+++ b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/OutboundMessageProcessor.java
@@ -54,7 +54,6 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import com.sun.jbi.internationalization.Messages;
-import org.glassfish.openesb.databasebc.transaction.*;
import javax.transaction.xa.XAResource;
import org.glassfish.openesb.databasebc.model.runtime.DBConnectionInfo;
@@ -95,9 +94,6 @@ public class OutboundMessageProcessor implements Runnable {
PreparedStatement ps = null;
ResultSet rs = null;
CallableStatement cs = null;
- //private TransactionManager mTxManager = null;
- private XidImpl xid = null;
- TransactionHelper mtxHelper = null;
private boolean mtxFlag;
XAResource xaResource = null;
// Settings for custom reliability header extensions
@@ -129,12 +125,9 @@ public class OutboundMessageProcessor implements Runnable {
mExchange = exchange;
mContext = context;
mInboundExchanges = inboundMessageExchanges;
- //mTxManager = (TransactionManager) context.getTransactionManager();
-
final DocumentBuilderFactory docBuilderFact = DocumentBuilderFactory.
newInstance();
mDocBuilder = docBuilderFact.newDocumentBuilder();
- // mtxHelper = new TransactionHelper();
dbConnectionInfo = new DBConnectionInfo();
}
@@ -1019,8 +1012,6 @@ public class OutboundMessageProcessor implements Runnable {
if (inout.isTransacted())
// Removing manual enlistment. Moving to automatic resource enlistment
- // mtxHelper.handleOutbound(mExchange);
- // enlistResource(epb);
transaction =
(Transaction) inout.getProperty(
MessageExchange.JTA_TRANSACTION_PROPERTY_NAME);
@@ -1299,8 +1290,6 @@ public class OutboundMessageProcessor implements Runnable {
if (spInput != null) {
if (inout.isTransacted())
// Removing manual enlistment. Moving to automatic resource enlistment
- // mtxHelper.handleOutbound(mExchange);
- // enlistResource(epb);
transaction =
(Transaction) inout.getProperty(
MessageExchange.JTA_TRANSACTION_PROPERTY_NAME);
@@ -1538,8 +1527,6 @@ public class OutboundMessageProcessor implements Runnable {
if (inonly.isTransacted())
// Removing manual enlistment. Moving to automatic resource enlistment
- // mtxHelper.handleOutbound(mExchange);
- // enlistResource(epb);
transaction = (Transaction) inonly.getProperty(
MessageExchange.JTA_TRANSACTION_PROPERTY_NAME);
@@ -1590,10 +1577,6 @@ public class OutboundMessageProcessor implements Runnable {
}
}
- /*
- * if (inonly.isTransacted()) { mtxHelper.handleInbound(mExchange); }
- */
-
if (transaction != null)
getTransactionManager().suspend();
mChannel.send(inonly);
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/GlobalId.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/GlobalId.java
deleted file mode 100644
index 9d060a6cd..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/GlobalId.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)GlobalId.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-/**
- *
- * @author Venkat P
- */
-import java.io.IOException;
-import javax.transaction.xa.Xid;
-
-/**
- * This object encapsulates the global transaction ID of a transaction.
- * It is similar to an Xid, but holds only the GlobalId part.
- * This implementation is immutable and always serializable at runtime.
- *
- * @see XidImpl
- * @author Narayana Rallabandi
- * @version
- */
-public class GlobalId implements java.io.Externalizable{
-
- static final long serialVersionUID = 234567891L;
- private int formatId;
- //Global Transaction Id
- private byte[] globalId;
- // hash code for the global id
- private int hash;
-
- public GlobalId(){
- }
-
- protected GlobalId(int formatId, byte[] globalId, int hash){
- this.formatId = formatId;
- this.globalId = globalId;
- this.hash = hash;
- }
-
- protected GlobalId(int formatId, byte[] globalId){
- this.formatId = formatId;
- this.globalId = globalId;
- hash = computeHash();
- }
-
- private GlobalId(Xid xid){
- formatId = xid.getFormatId();
- globalId = xid.getGlobalTransactionId();
- if (xid instanceof XidImpl) {
- hash = xid.hashCode();
- }else{
- hash = computeHash();
- }
- }
-
- private GlobalId(int formatId, int bqual_length, byte[] tid){
- this.formatId = formatId;
- if (bqual_length == 0)
- globalId = tid;
- else {
- int len = tid.length - bqual_length;
- globalId = new byte[len];
- System.arraycopy(tid, 0, globalId, 0, len);
- }
- hash = computeHash();
- }
-
- // @Override
- public boolean equals(Object obj){
- if (obj instanceof GlobalId) {
- GlobalId other = (GlobalId)obj;
- if (formatId != other.formatId)
- return false;
- if (globalId == other.globalId)
- return true;
- if (globalId.length != other.globalId.length)
- return false;
-
- int len = globalId.length;
- for (int i = 0; i < len; ++i)
- if (globalId[i] != other.globalId[i])
- return false;
- return true;
- }
- return false;
- }
-
- //@Override
- public int hashCode(){
- return hash;
- }
-
- //@Override
- public String toString() {
- return getClass().getName() + "[formatId=" + formatId
- + ", globalId=" + new String(globalId).trim()
- + ", hash=" + hash + "]";
- }
-
- //@Override
- public void writeExternal(java.io.ObjectOutput out) throws IOException {
- out.writeInt(formatId);
- out.writeObject(globalId);
- }
-
- // @Override
- public void readExternal(java.io.ObjectInput in) throws IOException, ClassNotFoundException{
- formatId = in.readInt();
- globalId = (byte[])in.readObject();
- hash = computeHash();
- }
-
- private int computeHash(){
- int len = globalId.length;
- int hashval = 0;
- // TODO: use a better hash function
- for (int i = 0; i < len; ++i)
- hashval = 3 * globalId[i] + hashval;
- hashval += formatId;
- return hashval;
- }
-
-}
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/LocalId.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/LocalId.java
deleted file mode 100644
index 28a43c563..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/LocalId.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)LocalId.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-/**
- *
- * @author Venkat P
- */
-/**
- * LocalId symbloizes the transaction id from the Application Server
- * This class implements the Externizable interface for making the object
- * serialiable during runtime.
- *
- * @author Narayana Rallabandi
- * @version
- */
-public class LocalId implements java.io.Externalizable{
-
- static final long serialVersionUID = 123456789L;
- private long localIdvalue; //
-
- public LocalId(){
- }
-
- protected LocalId(long localIdvalue){
- this.localIdvalue = localIdvalue;
- }
-
- protected LocalId(XidImpl xid){
- this(xid.getLocalIdValue());
- }
-
- private long getValue(){
- return localIdvalue;
- }
-
- //@Override
- public boolean equals(Object obj){
- return (obj instanceof LocalId) ?
- (localIdvalue == ((LocalId)obj).localIdvalue): false;
- }
-
- //@Override
- public int hashCode(){
- return (int)localIdvalue;
- }
-
- //@Override
- public void writeExternal(java.io.ObjectOutput out)
- throws java.io.IOException
- {
- out.writeLong(localIdvalue);
- }
-
- //@Override
- public void readExternal(java.io.ObjectInput in)
- throws java.io.IOException, ClassNotFoundException {
- localIdvalue = in.readLong();
- }
-
- // this morphs the long under consideration
- // which fecilitates to Obtain the global transaction identifier
- // part of XID as an array of bytes
- private static void toByteArray(long localId, byte[] destination, int dstBegin){
- destination[dstBegin + 0] = (byte)(0xff & (localId >>> 56));
- destination[dstBegin + 1] = (byte)(0xff & (localId >>> 48));
- destination[dstBegin + 2] = (byte)(0xff & (localId >>> 40));
- destination[dstBegin + 3] = (byte)(0xff & (localId >>> 32));
- destination[dstBegin + 4] = (byte)(0xff & (localId >>> 24));
- destination[dstBegin + 5] = (byte)(0xff & (localId >>> 16));
- destination[dstBegin + 6] = (byte)(0xff & (localId >>> 8));
- destination[dstBegin + 7] = (byte)(0xff & (localId >>> 0));
- }
-
- // this morphs the byrearray source under consideration
- // which fecilitates to Obtain the global transaction identifier
- // as long which is part of XID.
- private static long fromByteArray(byte[] source, int srcBegin) {
- return ((long)(source[srcBegin + 0] & 0xff) << 56)
- | ((long)(source[srcBegin + 1] & 0xff) << 48)
- | ((long)(source[srcBegin + 2] & 0xff) << 40)
- | ((long)(source[srcBegin + 3] & 0xff) << 32)
- | ((long)(source[srcBegin + 4] & 0xff) << 24)
- | ((long)(source[srcBegin + 5] & 0xff) << 16)
- | ((long)(source[srcBegin + 6] & 0xff) << 8)
- | ((long)(source[srcBegin + 7] & 0xff));
- }
-}
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/TransactionHelper.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/TransactionHelper.java
deleted file mode 100644
index 515d56f3f..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/TransactionHelper.java
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)TransactionHelper.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-import com.sun.jbi.internationalization.Messages;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-import javax.transaction.RollbackException;
-
-import java.util.ArrayList;
-
-import javax.jbi.component.ComponentContext;
-import javax.jbi.messaging.MessageExchange;
-import javax.jbi.messaging.ExchangeStatus;
-import javax.jbi.messaging.InOnly;
-
-import javax.sql.XAConnection;
-import javax.sql.XADataSource;
-import java.sql.SQLException;
-
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.transaction.NotSupportedException;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.xa.Xid;
-
-/**
- *
- * @author Narayanaa
- */
-public class TransactionHelper {
-
- //private static final Messages mMessages = Messages.getMessages(TransactionHelper.class);
-
- private static final Logger mLogger = Messages.getLogger(TransactionHelper.class);
-
-
- /** Creates a new instance of TransactionHelper */
- public TransactionHelper() {
- xid = xidFactory.newXid();
- gid = xid.getTrulyGlobalId();
- status = Status.STATUS_ACTIVE;
- start = System.currentTimeMillis();
- }
-
- public void setComponentContext(ComponentContext componentContext) throws Exception{
- manager = (TransactionManager)componentContext.getTransactionManager();
- transaction = manager.getTransaction();
- if(transaction == null){
- begin();
- transaction = manager.getTransaction();
- }
- status = manager.getStatus();
- xid = xidFactory.newXid();
- }
-
- public void setMessageExchange(MessageExchange messageExchange) throws Exception{
- this.messageExchange = messageExchange;
- }
-
- public boolean isInOnly(MessageExchange me) {
- return (me instanceof InOnly);
- }
-
- public boolean isTxEnabled(MessageExchange me) {
- return ((tx_enable==null || tx_enable.equalsIgnoreCase("true"))
- && !isInOnly(me));
- }
-
- public void setXAResource(XAResource xar){
- this.xar = xar;
- start = System.currentTimeMillis();
- try{
- this.timeoutPeriod = xar.getTransactionTimeout();
- }catch(XAException xae){
- mLogger.log(Level.SEVERE,"Error While setting the XA Resource",xae);
- }
- }
-
- public void setDataSource(XADataSource xads){
- this.xads = xads;
- try{
- xac = xads.getXAConnection();
- xar = xads.getXAConnection().getXAResource();
- start = System.currentTimeMillis();
- this.timeoutPeriod = xar.getTransactionTimeout();
- }catch(SQLException se){
- mLogger.log(Level.SEVERE,"Error While setting the Data Source",se);
- //se.getStackTrace();
- }catch(XAException xe){
- mLogger.log(Level.SEVERE,"Error While getting the XA Connection",xe);
- //xe.getStackTrace();
- }
- }
-
- public void registerXAResouce() {
-
-// componentContext = (com.sun.jbi.framework.ComponentContext)componentContext;
-// componentContext.registerXAResource(xar);
- }
-
- public XAConnection getXAConnection(){
- return this.xac;
- }
-
- public void handleInbound(MessageExchange me) throws Exception {
- if(!isTxEnabled(me))
- return;
- suspendTx(me);
- }
-
- public void handleOutbound(MessageExchange me) throws Exception {
- if(!isTxEnabled(me))
- return;
- resumeTx(me);
- }
-
- public TransactionManager getTransactionManager (){
- return this.manager;
- }
-
- public void suspendTx(MessageExchange me) throws SystemException {
- TransactionManager tm = getTransactionManager();
- Transaction tx = tm.getTransaction();
- if (tx != null) {
- if(me.getStatus().equals(ExchangeStatus.ERROR))
- tx.setRollbackOnly();
- tx = tm.suspend();
- me.setProperty(MessageExchange.JTA_TRANSACTION_PROPERTY_NAME, tx);
- }
- }
-
- public void resumeTx(MessageExchange me) throws
- SystemException,
- InvalidTransactionException {
- TransactionManager tm = getTransactionManager();
- Transaction tx = (Transaction)me.getProperty(MessageExchange.JTA_TRANSACTION_PROPERTY_NAME);
- if(tx != null) {
- if(me.getStatus().equals(ExchangeStatus.ERROR))
- tx.setRollbackOnly();
- manager.resume(tx);
- }
- }
-
- //@Override
- public int hashCode() {
- return xid.hashCode();
- }
-
- //@Override
- public String toString() {
- return "TransactionHelper:" + xidFactory.toString(xid);
- }
-
- //@Override
- public boolean equals(Object obj) {
- if (obj != null && obj instanceof TransactionHelper)
- return getLocalIdValue() == (((TransactionHelper)obj).getLocalIdValue());
- return false;
- }
-
-
- /**
- * Returns the local id of this transaction. The local id is used as
- * a transaction propagation context within the JBoss server, and
- * in the TxManager for mapping local transaction ids to transactions.
- */
- public long getLocalIdValue() {
- return xid.getLocalIdValue();
- }
-
- /**
- * Returns the local id of this transaction. The local id is used as
- * a transaction propagation context within the JBoss server, and
- * in the TxManager for mapping local transaction ids to transactions.
- */
- public LocalId getLocalId() {
- return xid.getLocalId();
- }
-
- /**
- * Returns the global id of this transaction. Ths global id is used in
- * the TxManager, which keeps a map from global ids to transactions.
- */
- public GlobalId getGlobalId() {
- return gid;
- }
-
- /**
- * Returns the xid of this transaction.
- */
- public XidImpl getXid() {
- return xid;
- }
-
- private long lastBranchId = 0;
- private Xid createXidBranch() {
- long branchId = ++lastBranchId;
- return xidFactory.newBranch(xid, branchId);
- }
-
- // commit the transaction underconsideration
- //
- public void commit()
- throws RollbackException,
- java.lang.SecurityException,
- java.lang.IllegalStateException,
- SystemException,
- Exception{
- status = transaction.getStatus();
- if(lock.tryLock()){
- try {
-
- if (status == Status.STATUS_COMMITTED){
- xar.commit(xid,true);
- transaction.commit();
- // checkHeuristics();
- }else{
- Throwable causedByThrowable = exceptionReason;
- //rollbackResources();
- //completeTransaction();
- xar.rollback(xid);
- transaction.rollback();
- // throw jboss rollback exception with the saved off exceptionReason
- mLogger.log(Level.SEVERE,"Error While Commiting the transaction",causedByThrowable);
- throw new Exception("Unable to commit, tx=" +
- toString() + " status=" + TransactionStateUtility.getStringStatus(status),
- causedByThrowable);
- }
- } finally {
- lock.unlock();
- }
- }
- }
-
- public void rollback()
- throws java.lang.IllegalStateException,
- java.lang.SecurityException,
- SystemException {
- status = transaction.getStatus();
- if(lock.tryLock()){
- try {
-
- switch (status) {
- case Status.STATUS_ACTIVE:
- status = Status.STATUS_MARKED_ROLLBACK;
- transaction.setRollbackOnly();
- case Status.STATUS_MARKED_ROLLBACK:
- //endResources();
- xar.end(xid,XAResource.TMFAIL);
- transaction.rollback();
- case Status.STATUS_PREPARING:
- status = Status.STATUS_MARKED_ROLLBACK;
- transaction.setRollbackOnly();
- return;
- default:
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new IllegalStateException("Cannot rollback(), " +
- "tx=" + toString() +
- " status=" +
- TransactionStateUtility.getStringStatus(status));
- }
- } catch(XAException xe){
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status",xe);
- //xe.getStackTrace();
- }finally {
- //Thread.interrupted();// clear timeout that did an interrupt
- lock.unlock();
- }
- }
- }
-
- public boolean enlist() throws RollbackException,
- java.lang.IllegalStateException,
- SystemException {
-
- if (xar == null)
- throw new IllegalArgumentException("null xaRes tx=" + this);
-
- //get status from the TM
- if(transaction != null)
- status = transaction.getStatus();
-
- if(lock.tryLock()){
- try {
- switch (status) {
- case Status.STATUS_ACTIVE:
- case Status.STATUS_PREPARING:
- break;
- case Status.STATUS_PREPARED:
- throw new IllegalStateException("Already prepared. " + this);
- case Status.STATUS_COMMITTING:
- throw new IllegalStateException("Already started committing. " + this);
- case Status.STATUS_COMMITTED:
- throw new IllegalStateException("Already committed. " + this);
- case Status.STATUS_MARKED_ROLLBACK:
- throw new RollbackException("Already marked for rollback " + this);
- case Status.STATUS_ROLLING_BACK:
- throw new RollbackException("Already started rolling back. " + this);
- case Status.STATUS_ROLLEDBACK:
- throw new RollbackException("Already rolled back. " + this);
- case Status.STATUS_NO_TRANSACTION:
- if(transaction == null)
- break;
- else
- throw new IllegalStateException("No transaction. " + this);
- case Status.STATUS_UNKNOWN:
- throw new IllegalStateException("Unknown state " + this);
- default:
- throw new IllegalStateException("Illegal status: " + TransactionStateUtility.getStringStatus(status) + " tx=" + this);
- }
- isEnlisted = transaction.enlistResource(xar);
- } finally {
- lock.unlock();
- }
- }
- return isEnlisted;
- }
-
- public void delist()throws java.lang.IllegalStateException,
- SystemException,XAException {
- if(lock.tryLock()){
- try{
- delist(transaction.getStatus());
- }finally{
- lock.unlock();
- }
- }
- }
-
- public void begin() throws NotSupportedException,SystemException{
- if(lock.tryLock()){
- try{
- manager.begin();
- }finally{
- lock.unlock();
- }
- }
- }
-
- public void TMCommit() throws RollbackException,
- HeuristicMixedException,
- HeuristicRollbackException,
- SystemException{
- if(lock.tryLock()){
- try{
- manager.commit();
- }catch(RollbackException re){
- try{
- manager.rollback();
- }catch(SystemException se){
- mLogger.log(Level.SEVERE,"Error While Commiting the Transaction",se);
- }
- }finally{
- lock.unlock();
- }
- }
- }
-
- public void suspend() throws SystemException{
- if(lock.tryLock()){
- try{
- manager.suspend();
- }finally{
- lock.unlock();
- }
- }
- }
-
- public void resume() throws SystemException,InvalidTransactionException{
- if(lock.tryLock()){
- try{
- manager.resume(transaction);
- }finally{
- lock.unlock();
- }
- }
- }
-
- private int getStatus() throws SystemException {
- if (done)
- return Status.STATUS_NO_TRANSACTION;
- return status;
- }
-
- public boolean isDone() {
- return done;
- }
-
- public boolean isEnlisted() {
- return this.isEnlisted;
- }
-
- public synchronized void instanceDone() {
- status = Status.STATUS_NO_TRANSACTION;
- notifyAll();
- done = true;
- }
-
- // for registering synchronizations during transaction
- public void registerSynchronization(Synchronization s)
- throws RollbackException,
- java.lang.IllegalStateException,
- SystemException {
- if (s == null)
- throw new IllegalArgumentException("Null synchronization " + this);
-
- //get status of the transaction
- status = transaction.getStatus();
-
- if(lock.tryLock()){
- try {
- switch (status) {
- case Status.STATUS_ACTIVE:
- case Status.STATUS_PREPARING:
- break;
- case Status.STATUS_PREPARED:
- throw new IllegalStateException("Already prepared. " + this);
- case Status.STATUS_COMMITTING:
- throw new IllegalStateException("Already started committing. " + this);
- case Status.STATUS_COMMITTED:
- throw new IllegalStateException("Already committed. " + this);
- case Status.STATUS_MARKED_ROLLBACK:
- throw new RollbackException("Already marked for rollback " + this);
- case Status.STATUS_ROLLING_BACK:
- throw new RollbackException("Already started rolling back. " + this);
- case Status.STATUS_ROLLEDBACK:
- throw new RollbackException("Already rolled back. " + this);
- case Status.STATUS_NO_TRANSACTION:
- throw new IllegalStateException("No transaction. " + this);
- case Status.STATUS_UNKNOWN:
- throw new IllegalStateException("Unknown state " + this);
- default:
- throw new IllegalStateException("Illegal status: " + TransactionStateUtility.getStringStatus(status) + " tx=" + this);
- }
-
- if (syncCount == syncAllocSize) {
- syncAllocSize = 2 * syncAllocSize;
- Synchronization[] sy = new Synchronization[syncAllocSize];
- System.arraycopy(sync, 0, sy, 0, syncCount);
- sync = sy;
- }
- sync[syncCount++] = s;
- } finally {
- lock.unlock();
- }
- }
- }
-
- public boolean delist(int flag)
- throws java.lang.IllegalStateException,
- SystemException, XAException{
- boolean isDelisted = false;
- if (xar == null)
- throw new IllegalArgumentException("null xaRes tx=" + this);
- if (flag != XAResource.TMSUCCESS &&
- flag != XAResource.TMSUSPEND &&
- flag != XAResource.TMFAIL)
- throw new IllegalArgumentException("Bad flag: " + flag + " tx=" + this);
-
- if(lock.tryLock()){
- try {
- status = transaction.getStatus();
- switch (status) {
- case Status.STATUS_ACTIVE:
- case Status.STATUS_MARKED_ROLLBACK:
- break;
- case Status.STATUS_PREPARING:
- throw new IllegalStateException("Already started preparing. " + this);
- case Status.STATUS_ROLLING_BACK:
- throw new IllegalStateException("Already started rolling back. " + this);
- case Status.STATUS_PREPARED:
- throw new IllegalStateException("Already prepared. " + this);
- case Status.STATUS_COMMITTING:
- throw new IllegalStateException("Already started committing. " + this);
- case Status.STATUS_COMMITTED:
- throw new IllegalStateException("Already committed. " + this);
- case Status.STATUS_ROLLEDBACK:
- throw new IllegalStateException("Already rolled back. " + this);
- case Status.STATUS_NO_TRANSACTION:
- throw new IllegalStateException("No transaction. " + this);
- case Status.STATUS_UNKNOWN:
- throw new IllegalStateException("Unknown state " + this);
- default:
- throw new IllegalStateException("Illegal status: " + TransactionStateUtility.getStringStatus(status) + " tx=" + this);
- }
- try{
- xar.end(xid,XAResource.TMSUCCESS);
- isDelisted= transaction.delistResource(xar,flag);
- }catch(XAException xae){
- xar.end(xid,XAResource.TMFAIL);
- transaction.setRollbackOnly();
- transaction.delistResource(xar,XAResource.TMFAIL);
- }
- } finally {
- lock.unlock();
- }
- }
- return isDelisted;
- }
-
- public void setRollbackOnly()
- throws java.lang.IllegalStateException,
- SystemException,
- XAException{
- status = transaction.getStatus();
- if(lock.tryLock()){
- try {
- switch (status) {
- case Status.STATUS_ACTIVE:
- case Status.STATUS_PREPARING:
- case Status.STATUS_PREPARED:
- status = Status.STATUS_MARKED_ROLLBACK;
- xar.rollback(xid);
- transaction.setRollbackOnly();
- case Status.STATUS_MARKED_ROLLBACK:
- case Status.STATUS_ROLLING_BACK:
- xar.rollback(xid);
- transaction.setRollbackOnly();
- return;
- case Status.STATUS_COMMITTING:
- throw new IllegalStateException("Already started committing. " + this);
- case Status.STATUS_COMMITTED:
- throw new IllegalStateException("Already committed. " + this);
- case Status.STATUS_ROLLEDBACK:
- throw new IllegalStateException("Already rolled back. " + this);
- case Status.STATUS_NO_TRANSACTION:
- throw new IllegalStateException("No transaction. " + this);
- case Status.STATUS_UNKNOWN:
- throw new IllegalStateException("Unknown state " + this);
- default:
- throw new IllegalStateException("Illegal status: " + TransactionStateUtility.getStringStatus(status) + " tx=" + this);
- }
- } finally {
- lock.unlock();
- }
- }
- }
-
- // this needs to be brought into the code for
- public void timedOut() throws SystemException{
- status = transaction.getStatus();
- if(lock.tryLock()){
- try {
- switch (status) {
- case Status.STATUS_ROLLEDBACK:
- case Status.STATUS_COMMITTED:
- case Status.STATUS_NO_TRANSACTION:
- return;
- case Status.STATUS_ROLLING_BACK:
- return;
- case Status.STATUS_COMMITTING:
- gotHeuristic(null, XAException.XA_HEURMIX);
- status = Status.STATUS_MARKED_ROLLBACK;
- return; // commit will fail
- case Status.STATUS_PREPARED:
- case Status.STATUS_ACTIVE:
- status = Status.STATUS_MARKED_ROLLBACK;
- case Status.STATUS_MARKED_ROLLBACK:
- return;
- case Status.STATUS_PREPARING:
- status = Status.STATUS_MARKED_ROLLBACK;
- return; // commit will fail
- default:
- return;
- }
- } catch(XAException xe){
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status",xe);
- //xe.printStackTrace();
- }finally {
- lock.unlock();
- }
- }
- }
-
- // need to do
- public void gotHeuristic(XAResource resource, int code) throws XAException{
- switch (code) {
- case XAException.XA_HEURMIX:
- heuristicCode = XAException.XA_HEURMIX;
- break;
- case XAException.XA_HEURRB:
- if (heuristicCode == HEUR_NONE)
- heuristicCode = XAException.XA_HEURRB;
- else if (heuristicCode == XAException.XA_HEURCOM ||
- heuristicCode == XAException.XA_HEURHAZ)
- heuristicCode = XAException.XA_HEURMIX;
- break;
- case XAException.XA_HEURCOM:
- if (heuristicCode == HEUR_NONE)
- heuristicCode = XAException.XA_HEURCOM;
- else if (heuristicCode == XAException.XA_HEURRB ||
- heuristicCode == XAException.XA_HEURHAZ)
- heuristicCode = XAException.XA_HEURMIX;
- break;
- case XAException.XA_HEURHAZ:
- if (heuristicCode == HEUR_NONE)
- heuristicCode = XAException.XA_HEURHAZ;
- else if (heuristicCode == XAException.XA_HEURCOM ||
- heuristicCode == XAException.XA_HEURRB)
- heuristicCode = XAException.XA_HEURMIX;
- break;
- default:
- throw new IllegalArgumentException();
- }
-
- if (resource != null)
- resource.forget(xid);
- }
-
- public void checkHeuristics()
- throws HeuristicMixedException, HeuristicRollbackException {
- switch (heuristicCode) {
- case XAException.XA_HEURHAZ:
- case XAException.XA_HEURMIX:
- heuristicCode = HEUR_NONE;
- throw new HeuristicMixedException();
- case XAException.XA_HEURRB:
- heuristicCode = HEUR_NONE;
- throw new HeuristicRollbackException();
- case XAException.XA_HEURCOM:
- heuristicCode = HEUR_NONE;
- return;
- }
- }
-
- private static final int HEUR_NONE = XAException.XA_RETRY;
- private XidImpl xid;
- private GlobalId gid;
- //callback synchronizations
- private Synchronization[] sync = new Synchronization[3];
- private int syncAllocSize = 3;
- private int syncCount = 0;
- private ArrayList resources = new ArrayList(3);
- private int heuristicCode = HEUR_NONE;
- private int status;
- private long start;
- private long timeoutPeriod;
-
- private boolean done = false;
- private Throwable exceptionReason;
-
- public static XidFactory xidFactory = new XidFactory();//XidFactory.getXidFactoryInstance();
-
- private final Lock lock = new ReentrantLock(true);
- private String tx_enable = System.getProperty("com.sun.enterprise.jbi.tx.enable");
-
- TransactionManager manager = null;
- Transaction transaction = null;
- XADataSource xads = null;
- XAResource xar = null;
- XAConnection xac = null;
- boolean isEnlisted = false;
-
-
- ComponentContext componentContext = null;
- MessageExchange messageExchange = null;
-}
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/TransactionStateUtility.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/TransactionStateUtility.java
deleted file mode 100644
index 0e1084a1d..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/TransactionStateUtility.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)TransactionStateUtility.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-
-import com.sun.jbi.internationalization.Messages;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.transaction.Status;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-/**
- *
- * @author Venkat P
- */
-public class TransactionStateUtility {
-
- private static final Messages mMessages = Messages.getMessages(TransactionStateUtility.class);
-
- private static final Logger mLogger = Messages.getLogger(TransactionStateUtility.class);
-
- /** Creates a new instance of TransactionStateUtility */
- private TransactionStateUtility() {
- }
-
- /** Transaction Status Strings */
- private static final String[] TxStatusStrings =
- {
- "STATUS_ACTIVE",
- "STATUS_MARKED_ROLLBACK",
- "STATUS_PREPARED",
- "STATUS_COMMITTED",
- "STATUS_ROLLEDBACK",
- "STATUS_UNKNOWN",
- "STATUS_NO_TRANSACTION",
- "STATUS_PREPARING",
- "STATUS_COMMITTING",
- "STATUS_ROLLING_BACK"
- };
-
- private static boolean isActive(Transaction tx) throws Exception{
- try {
- return tx != null && (tx.getStatus() == Status.STATUS_ACTIVE);
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isActive(TransactionManager tm) throws Exception{
- try {
- return isActive(tm.getTransaction());
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isActive(UserTransaction ut) throws Exception{
- try {
- return ut.getStatus() == Status.STATUS_ACTIVE;
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isUncommitted(Transaction tx) throws Exception{
- try {
- if (tx == null)
- return false;
- int status = tx.getStatus();
- return status == Status.STATUS_ACTIVE || status == Status.STATUS_MARKED_ROLLBACK;
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isUncommitted(TransactionManager tm)throws Exception {
- try {
- return isUncommitted(tm.getTransaction());
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isUncommitted(UserTransaction ut) throws Exception {
- try {
- int status = ut.getStatus();
- return status == Status.STATUS_ACTIVE || status == Status.STATUS_MARKED_ROLLBACK;
- } catch (SystemException error) {
- throw new Exception(error);
- }
- }
-
- private static boolean isCompleted(Transaction tx) throws Exception{
- try {
- if (tx == null)
- return true;
- int status = tx.getStatus();
- return status == Status.STATUS_COMMITTED
- || status == Status.STATUS_ROLLEDBACK
- || status == Status.STATUS_NO_TRANSACTION;
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isCompleted(TransactionManager tm) throws Exception{
- try {
- return isCompleted(tm.getTransaction());
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- private static boolean isCompleted(UserTransaction ut) throws Exception{
- try {
- int status = ut.getStatus();
- return status == Status.STATUS_COMMITTED
- || status == Status.STATUS_ROLLEDBACK
- || status == Status.STATUS_NO_TRANSACTION;
- } catch (SystemException error) {
- mLogger.log(Level.SEVERE,"Error While Setting the Transaction Status");
- throw new Exception(error);
- }
- }
-
- /**
- * Converts a tx Status index to a String
- *
- * @see javax.transaction.Status
- *
- * @param status the Status index
- * @return status as String or "STATUS_INVALID"
- */
- private static String getStatusAsString(int status) {
- if (status >= Status.STATUS_ACTIVE && status <= Status.STATUS_ROLLING_BACK) {
- return TxStatusStrings[status];
- } else {
- return "STATUS_INVALID";
- }
- }
-
- /**
- * Converts a XAResource flag to a String
- *
- * @see javax.transaction.xa.XAResource
- *
- * @param flags the flags passed in to start(), end(), recover()
- * @return the flags in String form
- */
- private static String getXAResourceFlagsAsString(int flags) {
- if (flags == XAResource.TMNOFLAGS) {
- return "|TMNOFLAGS";
- } else {
- StringBuffer sbuf = new StringBuffer(64);
-
- if ((flags & XAResource.TMONEPHASE) != 0) {
- sbuf.append("|TMONEPHASE");
- }
- if ((flags & XAResource.TMJOIN) != 0) {
- sbuf.append("|TMJOIN");
- }
- if ((flags & XAResource.TMRESUME) != 0) {
- sbuf.append("|TMRESUME");
- }
- if ((flags & XAResource.TMSUCCESS) != 0) {
- sbuf.append("|TMSUCCESS");
- }
- if ((flags & XAResource.TMFAIL) != 0) {
- sbuf.append("|TMFAIL");
- }
- if ((flags & XAResource.TMSUSPEND) != 0) {
- sbuf.append("|TMSUSPEND");
- }
- if ((flags & XAResource.TMSTARTRSCAN) != 0) {
- sbuf.append("|TMSTARTRSCAN");
- }
- if ((flags & XAResource.TMENDRSCAN) != 0) {
- sbuf.append("|TMENDRSCAN");
- }
- return sbuf.toString();
- }
- }
-
- /**
- * Return a string representation of the given status code.
- */
- static String getStringStatus(int status) {
- switch (status) {
- case Status.STATUS_PREPARING:
- return "STATUS_PREPARING";
- case Status.STATUS_PREPARED:
- return "STATUS_PREPARED";
- case Status.STATUS_ROLLING_BACK:
- return "STATUS_ROLLING_BACK";
- case Status.STATUS_ROLLEDBACK:
- return "STATUS_ROLLEDBACK";
- case Status.STATUS_COMMITTING:
- return "STATUS_COMMITING";
- case Status.STATUS_COMMITTED:
- return "STATUS_COMMITED";
- case Status.STATUS_NO_TRANSACTION:
- return "STATUS_NO_TRANSACTION";
- case Status.STATUS_UNKNOWN:
- return "STATUS_UNKNOWN";
- case Status.STATUS_MARKED_ROLLBACK:
- return "STATUS_MARKED_ROLLBACK";
- case Status.STATUS_ACTIVE:
- return "STATUS_ACTIVE";
- default:
- return "STATUS_UNKNOWN(" + status + ")";
- }
- }
-
- /**
- * Return a string representation of the given XA error code.
- */
- private static String getStringXAErrorCode(int errorCode) {
- switch (errorCode) {
- case XAException.XA_HEURCOM:
- return "XA_HEURCOM";
- case XAException.XA_HEURHAZ:
- return "XA_HEURHAZ";
- case XAException.XA_HEURMIX:
- return "XA_HEURMIX";
- case XAException.XA_HEURRB:
- return "XA_HEURRB";
- case XAException.XA_NOMIGRATE:
- return "XA_NOMIGRATE";
- case XAException.XA_RBCOMMFAIL:
- return "XA_RBCOMMFAIL";
- case XAException.XA_RBDEADLOCK:
- return "XA_RBDEADLOCK";
- case XAException.XA_RBINTEGRITY:
- return "XA_RBINTEGRITY";
- case XAException.XA_RBOTHER:
- return "XA_RBOTHER";
- case XAException.XA_RBPROTO:
- return "XA_RBPROTO";
- case XAException.XA_RBROLLBACK:
- return "XA_RBROLLBACK";
- case XAException.XA_RBTIMEOUT:
- return "XA_RBTIMEOUT";
- case XAException.XA_RBTRANSIENT:
- return "XA_RBTRANSIENT";
- case XAException.XA_RDONLY:
- return "XA_RDONLY";
- case XAException.XA_RETRY:
- return "XA_RETRY";
- case XAException.XAER_ASYNC:
- return "XAER_ASYNC";
- case XAException.XAER_DUPID:
- return "XAER_DUPID";
- case XAException.XAER_INVAL:
- return "XAER_INVAL";
- case XAException.XAER_NOTA:
- return "XAER_NOTA";
- case XAException.XAER_OUTSIDE:
- return "XAER_OUTSIDE";
- case XAException.XAER_PROTO:
- return "XAER_PROTO";
- case XAException.XAER_RMERR:
- return "XAER_RMERR";
- case XAException.XAER_RMFAIL:
- return "XAER_RMFAIL";
- default:
- return "XA_UNKNOWN(" + errorCode + ")";
- }
- }
-
-}
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XAResourceImpl.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XAResourceImpl.java
deleted file mode 100644
index 2f79bff24..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XAResourceImpl.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)XAResourceImpl.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-
-import java.sql.SQLException;
-import javax.sql.XAConnection;
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
-import java.util.concurrent.atomic.AtomicBoolean;
-import javax.sql.XADataSource;
-/**
- *
- * @author Venkat P
- */
-public class XAResourceImpl implements XAResource{
-
- protected final Object stateLock = new Object();
- protected AtomicBoolean inLocalTransaction = new AtomicBoolean(false);
- protected boolean jdbcAutoCommit = true;
- protected boolean underlyingAutoCommit = true;
- protected boolean jdbcReadOnly;
- protected boolean underlyingReadOnly;
- protected int jdbcTransactionIsolation;
- protected boolean destroyed = false;
- protected final XAConnection xaConnection;
- protected final XAResource xaResource;
- protected Xid currentXid;
- /** Creates a new instance of XAResourceImpl */
- public XAResourceImpl(){
- xaConnection = null;
- xaResource = null;
- }
-
- private XAResourceImpl(XADataSource xad) throws SQLException{
- xaConnection = xad.getXAConnection();
- xaResource = xaConnection.getXAResource();
- }
-
- private XAResourceImpl(XAConnection xaConnection) throws SQLException{
- this.xaConnection = xaConnection;
- xaConnection.addConnectionEventListener(new javax.sql.ConnectionEventListener(){
- //@Override
- public void connectionClosed(javax.sql.ConnectionEvent ce){
- //only we can do this, ignore
- }
- //@Override
- public void connectionErrorOccurred(javax.sql.ConnectionEvent ce){
-
- }
- });
- this.xaResource = xaConnection.getXAResource();
- }
-
- protected XAResource getXAResource() throws Exception{
- return this;
- }
-
- protected void destroy() throws Exception{
- try{
- //xaResource.end();
- }
- finally{
- try{
- xaConnection.close();
- }catch (SQLException e){
- throw e;
- }
- }
- }
-
- //@Override
- public void start(Xid xid, int flags) throws XAException{
- xaResource.start(xid, flags);
- synchronized (stateLock){
- currentXid = xid;
- }
- }
-
- //@Override
- public void end(Xid xid, int flags) throws XAException{
- xaResource.end(xid, flags);
- //we want to allow ending transactions that are not the current
- //one. When one does this, inManagedTransaction is still true.
- synchronized (stateLock){
- if (currentXid != null && currentXid.equals(xid)){
- currentXid = null;
- }
- }
- }
-
- //@Override
- public int prepare(Xid xid) throws XAException
- {
- return xaResource.prepare(xid);
- }
-
- //@Override
- public void commit(Xid xid, boolean onePhase) throws XAException{
- xaResource.commit(xid, onePhase);
- }
-
- //@Override
- public void rollback(Xid xid) throws XAException{
- xaResource.rollback(xid);
- }
-
- //@Override
- public void forget(Xid xid) throws XAException{
- xaResource.forget(xid);
- }
-
- //@Override
- public Xid[] recover(int flag) throws XAException{
- return xaResource.recover(flag);
- }
-
- //@Override
- public boolean isSameRM(XAResource other) throws XAException{
- return true;
- }
-
- //@Override
- public int getTransactionTimeout() throws XAException{
- return xaResource.getTransactionTimeout();
- }
-
- //@Override
- public boolean setTransactionTimeout(int seconds) throws XAException{
- return xaResource.setTransactionTimeout(seconds);
- }
-
- protected void checkState() throws SQLException{
- synchronized (stateLock){
- // Check readonly
- if (jdbcReadOnly != underlyingReadOnly){
- //xaConnection.setReadOnly(jdbcReadOnly);
- underlyingReadOnly = jdbcReadOnly;
- }
- }
- }
-}
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XidFactory.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XidFactory.java
deleted file mode 100644
index cf7076394..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XidFactory.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)XidFactory.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-
-import java.net.InetAddress;
-import javax.transaction.xa.Xid;
-import java.net.UnknownHostException;
-/**
- * Factory class for generation of Xids
- * @author Venkat P
- */
-public class XidFactory {
-
- private String globalId;
- private long globalIdAsNumber = 0;
- private boolean isPadApplied = false;
- private byte[] branchId = new byte[1];
- private byte[] globalIdToBytes;
-
- private static XidFactory instance = null;
-
- public static XidFactory getXidFactoryInstance(){
- if (instance == null) {
- instance = new XidFactory();
- }
- return instance;
- }
- public XidFactory() {
- try {
- globalId = InetAddress.getLocalHost().getHostName();
- if (globalId.length() > Xid.MAXGTRIDSIZE - 15)
- globalId = globalId.substring(0, Xid.MAXGTRIDSIZE - 15);
- globalId = globalId + "/";
- } catch (UnknownHostException e) {
- globalId = "localhost/";
- }
- globalIdToBytes = globalId.getBytes();
- }
-
- public String getBaseGlobalId() {
- return globalId;
- }
-
- public void setBaseGlobalId(final String baseGlobalId) {
- this.globalId = baseGlobalId;
- globalIdToBytes = baseGlobalId.getBytes();
- }
-
- public synchronized long getGlobalIdNumber() {
- return globalIdAsNumber;
- }
-
- public synchronized void setGlobalIdNumber(final long globalIdNumber) {
- this.globalIdAsNumber = globalIdNumber;
- }
-
- public boolean isPadApplied() {
- return isPadApplied;
- }
-
- public void setPadApplied(boolean pad) {
- this.isPadApplied = pad;
- if (pad)
- branchId = new byte[Xid.MAXBQUALSIZE];
- else
- branchId = new byte[1];
- }
-
-
- public XidImpl newXid() {
- long localId = getNextId();
- String id = Long.toString(localId);
- int len = isPadApplied?Xid.MAXGTRIDSIZE:id.length()+globalIdToBytes.length;
- byte[] globalId = new byte[len];
- System.arraycopy(globalIdToBytes, 0, globalId, 0, globalIdToBytes.length);
- id.getBytes(0, id.length(), globalId, globalIdToBytes.length);
- return new XidImpl(globalId, branchId, (int)localId, localId);
- }
-
- public XidImpl newBranch(XidImpl xid, long branchIdNum) {
- String id = Long.toString(branchIdNum);
- int len = isPadApplied?Xid.MAXBQUALSIZE:id.length();
- byte[] branchId = new byte[len];
- id.getBytes(0, id.length(), branchId, 0);
- return new XidImpl(xid, branchId);
- }
-
- public long extractLocalIdFrom(byte[] globalId) {
- int i, start;
- int len = globalId.length;
-
- for (i = 0; globalId[i++] != (byte)'/'; )
- ;
- start = i;
- while (i < len && globalId[i] != 0)
- i++;
- String globalIdNumber = new String(globalId, 0, start, i - start);
- return Long.parseLong(globalIdNumber);
- }
-
- public String toString(Xid xid) {
- if (xid instanceof XidImpl)
- return XidImpl.toString(xid);
- else
- return xid.toString();
- }
-
- public synchronized long getNextId() {
- return ++globalIdAsNumber;
- }
-
-}
diff --git a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XidImpl.java b/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XidImpl.java
deleted file mode 100644
index 8583384bd..000000000
--- a/ojc-core/databasebc/databasebcimpl/src/org/glassfish/openesb/databasebc/transaction/XidImpl.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * BEGIN_HEADER - DO NOT EDIT
- *
- * The contents of this file are subject to the terms
- * of the Common Development and Distribution License
- * (the "License"). You may not use this file except
- * in compliance with the License.
- *
- * You can obtain a copy of the license at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * See the License for the specific language governing
- * permissions and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL
- * HEADER in each file and include the License file at
- * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
- * If applicable add the following below this CDDL HEADER,
- * with the fields enclosed by brackets "[]" replaced with
- * your own identifying information: Portions Copyright
- * [year] [name of copyright owner]
- */
-
-/*
- * @(#)XidImpl.java
- *
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
- *
- * END_HEADER - DO NOT EDIT
- */
-
-package org.glassfish.openesb.databasebc.transaction;
-
-/**
- *
- * @author Venkat P
- */
-import javax.transaction.xa.Xid;
-
-/**
- * This object encapsulates the ID of a transaction.
- * This implementation is immutable and always serializable at runtime.
- *
- * @author Narayana Rallabandi
- * @version
- */
-public class XidImpl implements Xid, java.io.Serializable {
-
- static final long serialVersionUID = -123456789L;
- public static final int FORMAT_ID = 0x0101;
- private static boolean trulyGlobalIdsEnabled = false;
-
- // represents the format id for this xid
- private final int formatId;
- // global id immutable once set
- private final byte[] globalId;
- // branch qualifier
- private final byte[] branchId;
- // hash for the xid
- private final int hash;
- // local id for this xid
- private final long localId;
- //global id
- private final GlobalId trulyGlobalId;
-
- public static void setTrulyGlobalIdsEnabled(boolean newValue) {
- trulyGlobalIdsEnabled = newValue;
- }
-
- public static boolean getTrulyGlobalIdsEnabled() {
- return trulyGlobalIdsEnabled;
- }
-
- public static String toString(Xid id){
- if (id == null)
- return "[NULL Xid]";
-
- String s = id.getClass().getName();
- s = s.substring(s.lastIndexOf('.') + 1);
- s = s + "[FormatId=" + id.getFormatId()
- + ", GlobalId=" + new String(id.getGlobalTransactionId()).trim()
- + ", BranchQual=" + new String(id.getBranchQualifier()).trim()
- + ((id instanceof XidImpl) ? ", localId=" + ((XidImpl)id).localId
- : "")
- + "]";
-
- return s;
- }
-
- public XidImpl(int formatId,
- byte[] globalId, byte[] branchId, int hash, long localId){
- this.formatId = formatId;
- this.globalId = globalId;
- this.branchId = branchId;
- this.hash = hash;
- this.localId = localId;
- this.trulyGlobalId = (trulyGlobalIdsEnabled)
- ? new GlobalId(formatId, globalId)
- : null;
- }
-
- /**
- * Create a new instance with JBOSS_FORMAT_ID.
- */
- public XidImpl(byte[] globalId, byte[] branchId, int hash, long localId){
- this.formatId = FORMAT_ID;
- this.globalId = globalId;
- this.branchId = branchId;
- this.hash = hash;
- this.localId = localId;
- this.trulyGlobalId = (trulyGlobalIdsEnabled)
- ? new GlobalId(FORMAT_ID, globalId, hash)
- : null;
- }
-
- public XidImpl(final XidImpl xidImpl, final byte[] branchId){
- this.formatId = xidImpl.formatId;
- this.globalId = xidImpl.globalId;
- this.branchId = branchId;
- this.hash = xidImpl.hash;
- this.localId = xidImpl.localId;
- this.trulyGlobalId = (trulyGlobalIdsEnabled)
- ? xidImpl.trulyGlobalId
- : null;
- }
-
- // retrun the Global TxId
- //@Override
- public byte[] getGlobalTransactionId(){
- return (byte[])globalId.clone();
- }
-
- // return branch qualifier
- //@Override
- public byte[] getBranchQualifier(){
- if (branchId.length == 0)
- return branchId;
- else
- return (byte[])branchId.clone();
- }
-
- //@Override
- public int getFormatId() {
- return formatId;
- }
-
- /**
- * checks for same format id, the same global transaction id
- * and the same transaction branch qualifier.
- */
- //@Override
- public boolean equals(Object obj)
- {
- if(obj==this)
- return true;
- if (obj instanceof XidImpl) {
- XidImpl other = (XidImpl)obj;
-
- if (formatId != other.formatId ||
- globalId.length != other.globalId.length ||
- branchId.length != other.branchId.length)
- return false;
-
- for (int i = 0; i < globalId.length; ++i)
- if (globalId[i] != other.globalId[i])
- return false;
-
- for (int i = 0; i < branchId.length; ++i)
- if (branchId[i] != other.branchId[i])
- return false;
-
- return true;
- }
- return false;
- }
-
- @Override
- public int hashCode(){
- return hash;
- }
-
- @Override
- public String toString(){
- return toString(this);
- }
-
- public long getLocalIdValue() {
- return localId;
- }
-
- public LocalId getLocalId() {
- return new LocalId(localId);
- }
-
- public GlobalId getTrulyGlobalId() {
- return trulyGlobalId;
- }
-
-
- public boolean sameTransaction(XidImpl other){
- if(other == this)
- return true;
- if (formatId != other.formatId ||
- globalId.length != other.globalId.length)
- return false;
-
- for (int i = 0; i < globalId.length; ++i)
- if (globalId[i] != other.globalId[i])
- return false;
- return true;
- }
-
- //returns a reference to the global id byte array
- public byte[] getInternalGlobalTransactionId(){
- return globalId;
- }
-}