KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > debugger > jpda > breakpoints > ExceptionBreakpointImpl


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.debugger.jpda.breakpoints;
21
22 import com.sun.jdi.ReferenceType;
23 import com.sun.jdi.VMDisconnectedException;
24 import com.sun.jdi.event.Event;
25 import com.sun.jdi.event.ExceptionEvent;
26 import com.sun.jdi.request.ExceptionRequest;
27 import org.netbeans.api.debugger.jpda.ClassLoadUnloadBreakpoint;
28 import org.netbeans.api.debugger.jpda.ExceptionBreakpoint;
29
30 import org.netbeans.api.debugger.Session;
31 import org.netbeans.modules.debugger.jpda.JPDADebuggerImpl;
32
33 /**
34 * Implementation of breakpoint on method.
35 *
36 * @author Jan Jancura
37 */

38 public class ExceptionBreakpointImpl extends ClassBasedBreakpoint {
39
40     
41     private ExceptionBreakpoint breakpoint;
42     
43     
44     public ExceptionBreakpointImpl (ExceptionBreakpoint breakpoint, JPDADebuggerImpl debugger, Session session) {
45         super (breakpoint, debugger, session);
46         this.breakpoint = breakpoint;
47         set ();
48     }
49     
50     protected void setRequests () {
51         setClassRequests (
52             new String JavaDoc[] {breakpoint.getExceptionClassName ()},
53             new String JavaDoc[0],
54             ClassLoadUnloadBreakpoint.TYPE_CLASS_LOADED
55         );
56         checkLoadedClasses (breakpoint.getExceptionClassName ());
57     }
58     
59     protected void classLoaded (ReferenceType referenceType) {
60         try {
61             ExceptionRequest er = getEventRequestManager ().
62                 createExceptionRequest (
63                     referenceType,
64                     (breakpoint.getCatchType () &
65                         ExceptionBreakpoint.TYPE_EXCEPTION_CATCHED) != 0,
66                     (breakpoint.getCatchType () &
67                         ExceptionBreakpoint.TYPE_EXCEPTION_UNCATCHED) != 0
68                 );
69             addEventRequest (er);
70         } catch (VMDisconnectedException e) {
71         }
72     }
73
74     public boolean exec (Event event) {
75         if (event instanceof ExceptionEvent)
76             return perform (
77                 breakpoint.getCondition (),
78                 ((ExceptionEvent) event).thread (),
79                 ((ExceptionEvent) event).location().declaringType(),
80                 ((ExceptionEvent) event).exception ()
81             );
82         return super.exec (event);
83     }
84 }
85
86
Popular Tags