1 22 23 package org.aspectj.debugger.request; 24 25 import org.aspectj.debugger.base.*; 26 27 import com.sun.jdi.*; 28 import com.sun.jdi.request.*; 29 import java.util.*; 30 31 39 40 public abstract class AbstractStepRequest extends Request { 41 public AbstractStepRequest (Debugger debugger) { 42 super(debugger); 43 } 44 45 public Object go() throws NoVMException, DebuggerException { 46 EventRequestManager mgr = null; 47 try { 48 mgr = vm().eventRequestManager(); 49 } catch (NoVMException nvme) { 50 return null; 51 } catch (NullPointerException npe) { 52 return null; 53 } 54 ThreadReference threadRef = dbg().getStoppedThread(); 55 List steps = mgr.stepRequests(); 56 for (int i = 0; i < steps.size(); i++) { 57 StepRequest request = (StepRequest) steps.get(i); 58 if (request.thread().equals(threadRef)) { 59 mgr.deleteEventRequest(request); 60 } 61 } 62 StepRequest request = mgr.createStepRequest(threadRef, 63 getSize(), 64 getDepth()); 65 request.putProperty("name", name()); 66 request.addCountFilter(1); 67 request.setSuspendPolicy(EventRequest.SUSPEND_ALL); 68 request.enable(); 69 dbg().addExcludesTo(request); 70 dbg().resumeUntilZero(threadRef); 73 return request; 74 } 75 76 abstract int getDepth(); 77 abstract int getSize(); 78 abstract String name(); 79 } 80 | Popular Tags |