<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="IBM">
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
   <title>Java Debug Release Notes</title>
</head>
<body>
<h1> Eclipse 3.2 Java Debug Build Notes&nbsp;</h1>

<h2>November 22, 2005</h2>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49115">49115</a>: Cleanup on VMDisconnectException<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114590">114590</a>: breakpoint checked state problems<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115618">115618</a>: Mnemonics collision on Arguments tab of java launch config dialogs<br>

<h2>November 8, 2005</h2>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114609">114609</a>: Java main tab/shortcut should use new type selection dialog<br>

<h2>November 2, 2005 - M3</h2>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114484">114484</a>: Installed JDK preference page broken<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114589">114589</a>: NPE invoking content assist in var view<br>

<h2>October 31, 2005</h2>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113697">113697</a>: Added libraies to JRE not persisted<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113857">113857</a>: NPE in org.eclipse.jdt.internal.corext.util.JavaModelUtil.getAllSuperTypes<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99810">99810</a>: ClassLoadBreakpoint not updated after refactoring<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99803">99803</a>: Line Breakpoint Label not updated after refactoring<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99807">99807</a>: Breakpoint removed after renaming a class<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112232">112232</a>: Changing home directory of installed JRE does not update system libraries<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113852">113852</a>: NPE in display view when code assist with no debugger context<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114081">114081</a>: Undo fails when renaming type with breakpoints<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=96044">96044</a>: Breakpoint enable/disable state not preserved during refactoring<br>

<h2>October 25, 2005</h2>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113154">113154</a>: launchable main type not correctly detected<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110955">110955</a>: NPE in JavaElementPropertyTester<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112456">112456</a>: Would like a VM install change event for VM arguments property<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113488">113488</a>: exception in scrapbook page<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29565">29565</a>: Working Directory UI<br>

<h2>October 18, 2005</h2>
<h3>Enhancements</h3>
<ol>
  <li> <code>IVMInstallChangedListener</code> has been enhanced to provide change 
    notification for VM arguments via a property change event. A new property 
    identifier, <code>PROPERTY_VM_ARGUMENTS</code>, has been added to indicate 
    VM arguments have changed.</li>
  <li>Property tests have been added to the core Java debug plug-in (org.eclipse.jdt.debug), 
    to support launch short enablement expressions. By pushing common property 
    tests down to the core Java debug plug-in, more launch shortcut enablement 
    expressions will run even though their plug-in may noe be loaded (as the Java 
    debug plug-in is loaded earlier on), resulting in fewew choices in the run/debug 
    cascade menus. Property tests have been added for the following. 
    <ul>
      <li>hasMethod
        <ul>
          <li>requires two arguments: method name and method signature in JLS 
            format, for example &quot;<code>main, ([QString;)V</code>&quot; or 
            &quot;<code>main, ([Ljava/lang/String;)V</code>&quot;</li>
          <li>third argument is optional: method modifiers as an integer bit mask 
            based on <code>org.eclipse.jdt.core.util.IModifierConstants</code></li>
        </ul>
      </li>
      <li>hasSuperClass - expected value specifies fully qualified type name of 
        a super class (does not consider interfaces)</li>
      <li>hasImport - expected value specifies fully name of import to match in 
        JSL format, for example &quot;<code>java.io.File</code>&quot; or &quot;<code>java.io.*</code>&quot;. 
        Only works on compilation units.</li>
      <li>hasSwtOnBuildPath - whether the associated element's build path contains 
        a reference to &quot;swt.jar&quot; or the &quot;org.eclipse.swt&quot; 
        plug-in</li>
      <li>hasItemOnBuildPath - expected value specifies a substring to match. 
        Returns true when the associated element's build path contains an entry 
        containing the given substring.</li>
      <li>matchesJavaFileExtension - returns true if the associated element has 
        a resource adapter that has a .class or .java file extension.</li>
      <li>matchesContentType - expected value describes a content type as desribed 
        by the <code>IContentTypeManager</code></li>
      <li>hasProjectNature - expected value is a project nature</li>
      <li>implementsInterface - expected value is a fully qualified name of an 
        interface </li>
    </ul>
  </li>
</ol>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112455">112455</a>: Change JavaElementPropertyTester to not use JavaModelUtil.getAllSuperTypes<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104104">104104</a>: Make 'hasMainType' and 'isApplet' property tests part of launching plug-in<br>

<h2>October 11, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109358">109358</a>: Default installed JRE has no Javadoc Location<br>

<h2>October 4, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111136">111136</a>: JavaStackTraceHyperlink broken.<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111256">111256</a>: multiple hyperlinks on the same line not painted correctly<br>

<h2>September 27, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110191">110191</a>: ArrayIndexOutOfBoundsException in ExpressionInformationControl<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110021">110021</a>: Java 5 inconsistency<br>

<h2>September 20, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99416">99416</a>: Evaluation in context of superclass fails to resolve instvar in subclass<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103026">103026</a>: When detected a 1.5 JDK on a fresh workspace as a default the default compiler complaince should be switch to 5.0<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109392">109392</a>: JavaRuntime.detectDefaultVM changes my options<br>

<h2>September 13, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108426">108426</a>: In debug mode, when hoovering over constants, their value should be showed<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106682">106682</a>: Java debug code assist inconsistent<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108498">108498</a>: Toggle watchpoint for field in external source<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108505">108505</a>: refactor debug 'open type' actions<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108640">108640</a>: jdi model presentation missing dispose method<br>

<h2>Aug 23, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29565">29565</a>: Working Directory UI<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=86066">86066</a>: testJavaVersion() failure on mac<br>

<h2>Aug 16, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106748">106748</a>: details fail for interface defined in the default package<br>

<h2>Aug 10, 2005</h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106479">106479</a>: Exception Processing async thread queue<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106492">106492</a>: NPE on console during debug session<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106489">106489</a>: CCE from watch Expression<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106660">106660</a>: Array details for type in default package fails<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106665">106665</a>: array details fail for interface types<br>

<h2>Aug 8, 2005</h2>
<h3>API Changes</h3>
<ol>
  <li> 
    <h4>API contract changes to IJavaReferenceType</h4>
  </li>
  <blockquote> 
    <h4><strong>What is affected:</strong> Clients that call <code>IJavaReferenceType.getClassLoaderObject()</code>.</h4>
    <p><strong>Description:</strong> In Eclipse 3.1, the method <code>org.eclipse.jdt.debug.core.IJavaReferenceType.getClassLoaderObject()</code> 
      was added to <code>IJavaReferenceType</code>. The method was not specified 
      to return <code>null</code>, but could. In Eclipse 3.2, the specification 
      has been updated to indicate that <code>null</code> is a valid return value. 
      The behavior of the method has not changed, but callers should be aware 
      that <code>null</code> can be returned and should add appropriate checks.</p>
    <p><strong>Action required:</strong> Clients calling <code>IJavaReferenceType.getClassLoaderObject()</code> 
      should be modified to handle <code>null</code> as a return value.</p>
  </blockquote>
</ol>
<h3>Enhancements</h3>
<ol>
  <li>Evaluations in the Java debugger are now supported in the context of array 
    objects. The user may select a variable in the Variables View that references 
    an array and enter an expression in the details area using <code>this</code> 
    to refer to the array - for example, <code>&quot;this.length</code>&quot;. 
    Code assist also works for arrays. The API for evaluations has not changed 
    although the behavior has. In releases prior to 3.2, <code>IAstEvaluationEngine</code> 
    used to throw an exception when an evaluation was attempted for a receiver 
    object that was an array. In 3.2, the evaluation proceeds.</li>
  <li>The UI for editing a JREs libraries has been improved. In 3.1 and earlier, 
    users were required to uncheck the button labelled '<code>Use default libraries</code>' 
    in order modify library settings. This button has been removed and the function 
    has been replaced with a '<code>Restore Defaults</code>' button, which is 
    a more common style in the Eclipse UI.</li>
</ol>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105965">105965</a>: IJavaReferenceType.getClassLoaderObejct() can return null<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25362">25362</a>: Cannot evaluate in the context of an array<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106091">106091</a>: Code assist for eval in context of an array<br> 
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106243">106243</a>: clear detail formatter cache when 'max detail length' pref changes<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106361">106361</a>: NPE when adding a new JRE<br>

<h2>Aug 2, 2005</h2>
<h3>Enhancements</h3>
<ol>
  <li>Added NL support for images.</li>
</ol>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105255">105255</a>: [BIDI] need to add $nl$/ to icon paths for reversed icons<br>
<h2>July 26, 2005 </h2>
<h3>
Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103700">103700</a>: ClassCastException when evaluating assigment of array of interfaces<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101075">101075</a>: Cannot assign array type to local variable of type Object.<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=98141">98141</a>: Evaluation in context of interface fails<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103326">103326</a>: NPE executing step into command<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=81045">81045</a>: ClassNotLoadedException when trying to change a value<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104654">104654</a>: Breakpoint on label is not honoured<br>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102427">102427</a>: Cannot inspect/display static import methods<br>

</body>
</html>