KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > rice > cs > drjava > model > debug > DebugThreadData


1 /*BEGIN_COPYRIGHT_BLOCK
2  *
3  * This file is part of DrJava. Download the current version of this project from http://www.drjava.org/
4  * or http://sourceforge.net/projects/drjava/
5  *
6  * DrJava Open Source License
7  *
8  * Copyright (C) 2001-2006 JavaPLT group at Rice University (javaplt@rice.edu). All rights reserved.
9  *
10  * Developed by: Java Programming Languages Team, Rice University, http://www.cs.rice.edu/~javaplt/
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
13  * documentation files (the "Software"), to deal with the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
15  * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
16  *
17  * - Redistributions of source code must retain the above copyright notice, this list of conditions and the
18  * following disclaimers.
19  * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
20  * following disclaimers in the documentation and/or other materials provided with the distribution.
21  * - Neither the names of DrJava, the JavaPLT, Rice University, nor the names of its contributors may be used to
22  * endorse or promote products derived from this Software without specific prior written permission.
23  * - Products derived from this software may not be called "DrJava" nor use the term "DrJava" as part of their
24  * names without prior written permission from the JavaPLT group. For permission, write to javaplt@rice.edu.
25  *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
27  * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28  * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
29  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30  * WITH THE SOFTWARE.
31  *
32  *END_COPYRIGHT_BLOCK*/

33
34 package edu.rice.cs.drjava.model.debug;
35
36 import com.sun.jdi.*;
37
38 /**
39  * Class for keeping track of the currently running threads.
40  * @version $Id: DebugThreadData.java 3901 2006-06-30 05:28:11Z rcartwright $
41  */

42 public class DebugThreadData {
43   private final ThreadReference _thread;
44   private final String JavaDoc _name;
45   private final String JavaDoc _status;
46   private final long _uniqueID;
47   
48   /**
49    * Object for keeping track of a thread in the debuggee JVM.
50    * @param thread JPDA's reference to the thread
51    */

52   public DebugThreadData(ThreadReference thread) {
53     _thread = thread;
54     String JavaDoc name;
55     try {
56       name = _thread.name();
57     }
58     catch(VMDisconnectedException e) {
59       name = "";
60     }
61     _name = name;
62     String JavaDoc status = "(unknown)";
63     try{
64       switch (_thread.status()) {
65         case ThreadReference.THREAD_STATUS_MONITOR:
66           status = "MONITOR"; break;
67         case ThreadReference.THREAD_STATUS_NOT_STARTED:
68           status = "NOT STARTED"; break;
69         case ThreadReference.THREAD_STATUS_RUNNING:
70           status = "RUNNING"; break;
71         case ThreadReference.THREAD_STATUS_SLEEPING:
72           status = "SLEEPING"; break;
73         case ThreadReference.THREAD_STATUS_UNKNOWN:
74           status = "UNKNOWN"; break;
75         case ThreadReference.THREAD_STATUS_WAIT:
76           status = "WAIT"; break;
77         case ThreadReference.THREAD_STATUS_ZOMBIE:
78           status = "ZOMBIE"; break;
79       }
80     }
81     catch (VMDisconnectedException e) {
82       // status will be set to unknown
83
}
84     if ( isSuspended() && status.equals("RUNNING") ) {
85       _status = "SUSPENDED";
86     }
87     else{
88       _status = status;
89     }
90     _uniqueID = _thread.uniqueID();
91   }
92   
93   /**
94    * Returns the name of this thread.
95    */

96   public String JavaDoc getName() {
97     return _name;
98   }
99   
100   /**
101    * Returns the status of this thread (at the time of this object's construction)
102    */

103   public String JavaDoc getStatus() {
104     return _status;
105   }
106   
107   public long getUniqueID() {
108     return _uniqueID;
109   }
110   
111   /**
112    * Tells whether or not the thread is suspended.
113    * @return true iff the thread is suspended
114    */

115   public boolean isSuspended() {
116     try {
117       return _thread.isSuspended();
118     }
119     catch (ObjectCollectedException oce) {
120       return false;
121     }
122     catch (VMDisconnectedException vmde) {
123       return false;
124     }
125   }
126 }
127
Popular Tags