001: /*
002: * @(#) InternalTransactionContext.java
003: *
004: * JOTM: Java Open Transaction Manager
005: *
006: *
007: * This module was originally developed by
008: *
009: * - Bull S.A. as part of the JOnAS application server code released in
010: * July 1999 (www.bull.com)
011: *
012: * --------------------------------------------------------------------------
013: * The original code and portions created by Bull SA are
014: * Copyright (c) 1999 BULL SA
015: * All rights reserved.
016: *
017: * Redistribution and use in source and binary forms, with or without
018: * modification, are permitted provided that the following conditions are met:
019: *
020: * -Redistributions of source code must retain the above copyright notice, this
021: * list of conditions and the following disclaimer.
022: *
023: * -Redistributions in binary form must reproduce the above copyright notice,
024: * this list of conditions and the following disclaimer in the documentation
025: * and/or other materials provided with the distribution.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
028: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
029: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
030: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
031: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
032: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
033: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
034: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
035: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
036: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
037: * POSSIBILITY OF SUCH DAMAGE.
038: *
039: * --------------------------------------------------------------------------
040: * $Id: InternalTransactionContext.java,v 1.12 2005/04/22 17:49:06 tonyortiz Exp $
041: * --------------------------------------------------------------------------
042: */
043: package org.objectweb.jotm;
044:
045: // javax import (JTA)
046: import javax.transaction.xa.Xid;
047:
048: /**
049: * Classe <code>InternalTransactionContext</code> is a generic implementation of
050: * the JOTM Transaction Context. This Context is used by JOTM and by the Current
051: * Object. It can't be propagate, it have to be transalate for each Transport
052: * Layer Transaction Prapagation implementation
053: *
054: * @author Guillaume Riviere (Guillaume.Riviere@inrialpes.fr)
055: * @version 1.0, 12/09/2002
056: */
057: public class InternalTransactionContext implements TransactionContext {
058:
059: /**
060: * @serial
061: */
062: private int timeout;
063:
064: /**
065: * @serial
066: */
067: private Coordinator coordinator;
068:
069: /**
070: * @serial
071: */
072: private Terminator terminator;
073:
074: /**
075: * @serial
076: */
077: private Xid xid;
078:
079: /**
080: * false if the Internal Tx Ctx is build from another VI's tx context
081: */
082: private boolean isJotmCtx = true;
083:
084: /**
085: * Build a new TransactionContext (from JTA layer)
086: */
087: public InternalTransactionContext(int t, Coordinator c,
088: Terminator term, Xid x) {
089: timeout = t;
090: coordinator = c;
091: terminator = term;
092: xid = x;
093:
094: if (TraceTm.jta.isDebugEnabled()) {
095: TraceTm.jta.debug("xid=" + xid + ", timeout=" + timeout);
096: }
097: }
098:
099: public InternalTransactionContext(int t, Coordinator c, Xid x) {
100: timeout = t;
101: coordinator = c;
102: terminator = (Terminator) c;
103: xid = x;
104:
105: if (TraceTm.jta.isDebugEnabled()) {
106: TraceTm.jta.debug("xid=" + xid + ", timeout=" + timeout);
107: }
108: }
109:
110: /**
111: * Get the timeout associated with the transaction
112: */
113: public int getTimeout() {
114: return timeout;
115: }
116:
117: /**
118: * Get the coordinator associated with the transaction
119: */
120: public Coordinator getCoordinator() {
121: return coordinator;
122: }
123:
124: /**
125: * Set the coordinator associated with the transaction
126: */
127: public void setCoordinator(Coordinator coord) {
128: this .coordinator = coord;
129: }
130:
131: /**
132: * Get the Terminator associated with the transaction
133: */
134: public Terminator getTerminator() {
135: return terminator;
136: }
137:
138: /**
139: * Set the termiantor associated with the transaction
140: */
141: public void setTerminator(Terminator term) {
142: this .terminator = term;
143: }
144:
145: /**
146: * Get the control associated with the transaction
147: */
148: public Control getControl() {
149: return (Control) coordinator;
150: }
151:
152: /**
153: * Get the Xid associated with the transaction
154: */
155: public org.objectweb.jotm.Xid getXid() {
156: if (TraceTm.jta.isDebugEnabled()) {
157: TraceTm.jta.debug("xid=" + xid);
158: }
159: return (org.objectweb.jotm.Xid) xid;
160: }
161:
162: /**
163: * Set a flag in the context to indicate as coming from another Vendor
164: *
165: * @return boolean
166: */
167: public void setNotJotmCtx() {
168: isJotmCtx = false;
169: }
170:
171: /**
172: * return true if this context was build from a JOTM's context
173: *
174: * @return boolean
175: */
176: public boolean isJotmCtx() {
177: return isJotmCtx;
178: }
179:
180: }
|