<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<link rel="STYLESHEET" href="http://www.eclipse.org/default_style.css" charset="ISO-8859-1" type="text/css">
    <title>AJDT 1.2.0 M1 - New and Noteworthy</title>
  </head>

  <body>
    <h1>AJDT 1.2.0 M1 - New and Noteworthy</h1>

<p>
<a href="index.html">Part 1: Aspect structure</a><br>
<a href="index2.html">Part 2: Visualiser enhancements</a><br>
Part 3: Other changes
</p>

<table border="0" cellpadding="10" cellspacing="0" width="80%">
  <tr>
    <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>New wizard for exporting to JAR files</b></td>
    <td width="70%" valign="top">

      <p>AJDT 1.1.12 added a wizard for exporting plugins with AspectJ
      support, and in a similar vein, this release adds a wizard for
      exporting projects to JAR files, with proper handling of aspects
      and .aj files.</p>

      <img src="jarexport.png" width="344" height="261">

     </td>
  </tr>
  <tr>

  <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>AspectJ launch configurations</b></td>
    <td width="70%" valign="top">

      <p>You can now do <b>Run As &gt; AspectJ/Java Application.</b>
      This looks and behaves exactly like the basic Java launch
      configuration, with the following two additions:</p>

      <ul>

        <li>Main methods inside aspects are detected. This means when
        you press the <b>Search...</b> button in the <b>Main class</b>
        section of the run configuration dialog, or when you do <b>Run
        As &gt; AspectJ/Java Application</b> directly, you are
        presented with a selection dialog containing all main methods,
        in both classes and aspects.</li>

        <li>On the <b>Classpath</b> tab of the run configuration
        dialog there is an additional classpath entry for <b>Aspect
        Path</b>. If the aspect path for a project has been set (via
        Properties &gt; AspectJ Aspect Path) then the same entries
        will automatically appear here.</li>

      </ul>

      <img src="ajlaunch.png" width="411" height"298">

     </td>
  </tr>
  <tr>

  <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>Instantiation modifiers</b></td>
    <td width="70%" valign="top">

      <p>Options have been added to the <b>New Aspect</b> wizard to
      allow instantiation modifiers to be selected. By default no
      modifiers are added to the created aspect
      (<code>issingleton</code> is the implicit default), but by
      checking the instantiation option, you can then choose from the
      available modifiers: <code>issingleton, perthis, pertarget,
      percflow,</code> and <code>percflowbelow.</code> See Appendix B
      of the AspectJ Programming Guide for the definition of these
      modifiers.</p>

        <img src="newaspect.png" width="460" height="328">

     </td>
  </tr>
  <tr>

    <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>Java Quick Fix</b></td>
    <td width="70%" valign="top">

      <p>For those errors and warnings generated by the AspectJ
      compiler that are the same as those generated by the Eclipse
      Java compiler, the appropriate source ranges and marker types
      are used so that the normal Java quick fix corrections are now
      available. (No such corrections are currently available in
      aspects, or if classes are in .aj files).</p>

     </td>
  </tr>

  <tr>
    <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>Plugin projects</b></td>
    <td width="70%" valign="top">

      <p>The AspectJ runtime library, <code>aspectrt.jar</code> was
      previously contained in the <code>org.aspectj.ajde</code>
      plugin, but it has now been moved out into its own plugin,
      <code>org.aspectj.runtime</code>. This means that
      AspectJ-enabled plugins only need to depend on this very small
      plugin at runtime, instead of the much larger ajde plugin. If
      you have existing AspectJ plugins, you will need to manually
      change the dependency over to
      <code>org.aspectj.runtime<code>.</p>

     </td>
  </tr>

  <tr>
    <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>Bug fixes</b></td>
    <td width="70%" valign="top">

      <p>A large number of internal changes have also been made since
      the 1.1.12 codebase, plus a number of bug fixes. Here are some
      of the more significant fixes against functionality present in
      1.1.12:</p>

      <ul>
        <li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=72193">72193:</a> Visualisation not showing for aspects in libraries</li>
        <li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=72969">72969:</a> Referenced projects in main project get changed to /bin</li>
        <li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=73035">73035:</a> Classpath ordering problem</li>
        <li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=72671">72671:</a> Bootclasspath specification for compiling is not possible</li>
        <li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=73317">73317:</a> Duplicated Java Build Path and AspectJ project preferences</li>

      </ul>

     </td>
  </tr>

  <tr>
    <td colspan="2">
      <hr>
    </td>
  </tr>

  <tr>
    <td width="30%" valign="top" align="left">
      <p align="right"><b>Previous releases</b></td>
    <td width="70%" valign="top">

      <p>The new and noteworthy documents for previous releases are as follows:</p>

      <ul>
        <li><a href="../whatsnew1112/">AJDT 1.1.12 New and Noteworthy</a></li>
        <li><a href="../whatsnew1111/">AJDT 1.1.11 New and Noteworthy</a></li>
      </ul>

     </td>
  </tr>

  <tr>
    <td colspan="2">
      <hr>
    </td>
  </tr>

</table>

  </body>
</html>
