1 package jde.debugger.command;
3 import java.util.Iterator;
5 import com.sun.jdi.request.ClassPrepareRequest;
6 import com.sun.jdi.request.ClassUnloadRequest;
7 import com.sun.jdi.request.EventRequestManager;
8 import jde.debugger.Etc;
9 import jde.debugger.JDEException;
13 * 'trace_classes' command.
18 * trace_classes <u>type</u>
19 * [{@link Etc#getSuspendPolicyFromArgs(List) suspend-policy}]
20 * [{@link Etc#getClassFiltersFromArgs(List) class-filters}]
21 * [{@link Etc#getClassExFiltersFromArgs(List) class-exclusion-filters}]
26 * (jde-dbo-command-result cmd_id <u>requestID</u>)
31 * <li> <u>type</u> is either "preparation" or "unloading"
32 * <li> use <u>requestID</u> to cancel the trace request.
36 * @see jde.debugger.EventHandler#classPrepareEvent(ClassPrepareEvent)
37 * @see jde.debugger.EventHandler#classUnloadEvent(ClassUnloadEvent)
39 * @author Paul Kinnucan
40 * @version $Revision: 1.2 $
42 * Copyright (c) 2000, 2001, 2003 Paul Kinnucan
45 public class TraceClasses extends DebugProcessCommand {
49 * @exception jde.debugger.JDEException <description>
51 public void doCommand() throws JDEException {
52 if (m_args.size() < 1)
53 throw new JDEException("Insufficient arguments");
55 String type = m_args.remove(0).toString().toLowerCase();
57 if (!(type.equals("preparation") || type.equals("unloading")))
58 throw new JDEException("Invalid type");
60 Long requestID = null;
62 List classFilters = Etc.getClassFiltersFromArgs(m_args);
63 List classExFilters = Etc.getClassExFiltersFromArgs(m_args);
65 EventRequestManager em = m_debugger.getVM().eventRequestManager();
67 if (type.equals("preparation")) {
69 ClassPrepareRequest cpr = em.createClassPrepareRequest();
71 cpr.setSuspendPolicy(Etc.getSuspendPolicyFromArgs(m_args));
73 if (classFilters != null) {
74 Iterator it = classFilters.iterator();
76 cpr.addClassFilter(it.next().toString());
78 if (classExFilters != null) {
79 Iterator it = classExFilters.iterator();
81 cpr.addClassExclusionFilter(it.next().toString());
83 requestID = m_debugger.addIdentifiableRequest(cpr);
85 } else if (type.equals("unloading")) {
87 ClassUnloadRequest cur = em.createClassUnloadRequest();
89 cur.setSuspendPolicy(Etc.getSuspendPolicyFromArgs(m_args));
91 if (classFilters != null) {
92 Iterator it = classFilters.iterator();
94 cur.addClassFilter(it.next().toString());
96 if (classExFilters != null) {
97 Iterator it = classExFilters.iterator();
99 cur.addClassExclusionFilter(it.next().toString());
101 requestID = m_debugger.addIdentifiableRequest(cur);
105 m_debugger.signalCommandResult(m_cmdID, requestID.toString(), CMD_OK);
108 public Object clone() {return new TraceClasses();}
113 * $Log: TraceClasses.java,v $
114 * Revision 1.2 2003/01/15 05:56:26 paulk
115 * Add Petter Mahlen's changes.
117 * Revision 1.1 2001/03/24 13:35:25 paulk
123 // End of TraceClasses.java