edu.rice.cs.drjava.model.debug
Class PendingRequestManager

java.lang.Object
  |
  +--edu.rice.cs.drjava.model.debug.PendingRequestManager

public class PendingRequestManager
extends Object

Keeps track of DocumentDebugActions that are waiting to be resolved when the classes they corresponed to are prepared. (Only DocumentDebugActions have reference types which can be prepared.)

Version:
$Id: PendingRequestManager.java,v 1.6 2002/08/23 15:52:33 csreis Exp $

Field Summary
private  DebugManager _manager
           
private  gj.util.Hashtable _pendingActions
           
 
Constructor Summary
PendingRequestManager(DebugManager manager)
           
 
Method Summary
 void addPendingRequest(DocumentDebugAction action)
          Called if a breakpoint is set before its class is prepared
 void classPrepared(com.sun.jdi.event.ClassPrepareEvent event)
          Called by the EventHandler whenever a ClassPrepareEvent occurs.
 void removePendingRequest(DocumentDebugAction action)
          Called if a breakpoint is set and removed before its class is prepared
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

_manager

private DebugManager _manager

_pendingActions

private gj.util.Hashtable _pendingActions
Constructor Detail

PendingRequestManager

public PendingRequestManager(DebugManager manager)
Method Detail

addPendingRequest

public void addPendingRequest(DocumentDebugAction action)
Called if a breakpoint is set before its class is prepared
Parameters:
action - The DebugAction that is pending

removePendingRequest

public void removePendingRequest(DocumentDebugAction action)
Called if a breakpoint is set and removed before its class is prepared
Parameters:
action - The DebugAction that was set and removed

classPrepared

public void classPrepared(com.sun.jdi.event.ClassPrepareEvent event)
                   throws DebugException
Called by the EventHandler whenever a ClassPrepareEvent occurs. This will take the event, get the class that was prepared, lookup the Vector of DebugAction that was waiting for this class's preparation, iterate through this Vector, and attempt to create the Breakpoints that were pending. Since the keys to the HashTable are the names of the outer class, the $ and everything after it must be cropped off from the class name in order to do the lookup. During the lookup, however, the line number of each action is checked to see if the line number is contained in the given event's ReferenceType. If not, we ignore that pending action since it is not in the class that was just prepared, but may be in one of its inner classes.
Parameters:
event - The ClassPrepareEvent that just occured