KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > jotm > RmRegistration


1 /*
2  * @(#) RmRegistration.java
3  *
4  * JOTM: Java Open Transaction Manager
5  *
6  *
7  * This module was originally developed by
8  *
9  * - Bull S.A. as part of the JOnAS application server code released in
10  * July 1999 (www.bull.com)
11  *
12  * --------------------------------------------------------------------------
13  * The original code and portions created by Bull SA are
14  * Copyright (c) 1999 BULL SA
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are met:
19  *
20  * -Redistributions of source code must retain the above copyright notice, this
21  * list of conditions and the following disclaimer.
22  *
23  * -Redistributions in binary form must reproduce the above copyright notice,
24  * this list of conditions and the following disclaimer in the documentation
25  * and/or other materials provided with the distribution.
26  *
27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37  * POSSIBILITY OF SUCH DAMAGE.
38  *
39  * --------------------------------------------------------------------------
40  * $Id: RmRegistration.java,v 1.3 2005/05/03 23:20:17 tonyortiz Exp $
41  * --------------------------------------------------------------------------
42  */

43 package org.objectweb.jotm;
44
45 import javax.transaction.xa.XAResource JavaDoc;
46 import javax.transaction.xa.XAException JavaDoc;
47
48 /**
49  * Resource Managers currently registered.
50  *
51  * @author Tony Ortiz
52  *
53  */

54
55 public class RmRegistration {
56
57     private String JavaDoc rmName = null;
58     private XAResource JavaDoc rmXares = null;
59     private String JavaDoc rmXaName = null;
60     private boolean rmReference = false;
61     private String JavaDoc rmReferenceName = "";
62
63     public void rmAddRegistration (String JavaDoc prmName, XAResource JavaDoc prmXares, String JavaDoc prmxaName) {
64         if (TraceTm.recovery.isDebugEnabled()) {
65             TraceTm.recovery.debug("Add registration Resource manager= " + prmName);
66             TraceTm.recovery.debug("Add registration XAResource = " + prmXares);
67             TraceTm.recovery.debug("Add registration XAResource Name = " + prmxaName);
68         }
69
70         rmName = prmName;
71         rmXares = prmXares;
72         rmXaName = prmxaName;
73     }
74
75     public void rmAddName (String JavaDoc prmName) {
76         rmName = prmName;
77     }
78
79     public void rmAddXaRes (XAResource JavaDoc prmXares) {
80         rmXares = prmXares;
81     }
82
83     public String JavaDoc rmGetName () {
84         if (TraceTm.recovery.isDebugEnabled()) {
85             TraceTm.recovery.debug("rmName= " + rmName);
86         }
87         return rmName;
88     }
89
90     public XAResource JavaDoc rmGetXaRes () {
91         if (TraceTm.recovery.isDebugEnabled()) {
92             TraceTm.recovery.debug("rmXares= " + rmXares);
93         }
94         return rmXares;
95     }
96     
97     public String JavaDoc rmGetXaResName () {
98         if (TraceTm.recovery.isDebugEnabled()) {
99             TraceTm.recovery.debug("rmXaName= " + rmXaName);
100         }
101         return rmXaName;
102     }
103     
104     public XAResource JavaDoc rmCheckoutXARes () throws XAException JavaDoc {
105         if (TraceTm.recovery.isDebugEnabled()) {
106             TraceTm.recovery.debug("rmCheckoutXares= " + rmXares);
107         }
108         
109         if (rmXares == null) {
110             throw new XAException JavaDoc("Attempt to use unregistered Resource Manager");
111         }
112         
113         synchronized (this) {
114             while (true) {
115                 if (rmReference == false) {
116                     rmReferenceName = Thread.currentThread().getName();
117                     rmReference = true;
118                     return rmXares;
119                 }
120                 try {
121                     wait();
122                 } catch (InterruptedException JavaDoc e) {
123                     ;
124                 }
125             }
126         }
127     }
128
129     public void rmCheckinXARes () {
130         if (TraceTm.recovery.isDebugEnabled()) {
131             TraceTm.recovery.debug("rmCheckinXares= " + rmXares);
132         }
133         
134         synchronized(this) {
135             rmReference = false; // leave the name with the last using thread
136
notifyAll();
137         }
138     }
139 }
Popular Tags