<html>
<head>
<title>3.0 JDT Debug Change Notes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<h1>3.0 JDT Debug Change Notes</h1>
<p>This document describes important changes in the 3.0 JDT debugger, relative 
  to the 2.1 release.</p>
<h2>API Changes</h2>
<h3>Java Breakpoint Listener Voting</h3>
<p>Two methods on the <code>IJavaBreakpointListener</code> interface have changed 
  return values from boolean to int. In releases prior to 3.0, listeners could 
  only vote "suspend" or "don't suspend" when a breakpoint was hit, and "install" 
  or "don't install" when a breakpoint was about to be installed. In 3.0, listeners 
  can also vote "don't care" for either of these notifications. This allows clients 
  to only make a decisive vote in situations that they care about. For "breakpoint 
  hit" notifications, the breakpoint will suspend if any listeners vote to suspend 
  or if all listeners vote "don't care". Similarly, for "breakpoint installing" 
  notifications, the breakpoint will be installed if any listeners vote to install, 
  or all listeners vote &quot;don't care&quot;. In general, implementors should 
  return DONT_CARE unless they have a strong opinion one way or the other. It 
  is important to keep in mind, for example, that voting "suspend" will override 
  any other listener's vote of "don't suspend".</p>
<p>The affected methods are <code>breakpointHit(IJavaBreakpoint, IJavaThread)</code> 
  and <code>installingBreakpoing(IJavaTarget, IJavaBreakpoint, IJavaType)</code>.</p>
</body>
</html>
