|  | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | 
|  | <html><head> | 
|  | <link rel="STYLESHEET" href="http://www.eclipse.org/default_style.css" charset="ISO-8859-1" type="text/css"> | 
|  | <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>AJDT 2.1.0 - New and Noteworthy</title> | 
|  |  | 
|  | </head> | 
|  | <body> | 
|  | <h1>AJDT 2.1.0 - New and Noteworthy</h1> | 
|  |  | 
|  | <table border="0" cellpadding="10" cellspacing="0" width="80%"> | 
|  | <tbody> | 
|  | <tr> | 
|  | <td valign="top"><b>Overview</b></td> | 
|  | <td valign="top">In this release, we have gone further with our support for Intertype Declarations (ITDs). | 
|  | Due to frameworks like <a href="http://www.springsource.org/roo">Spring Roo</a>, AspectJ and AJDT | 
|  | having been growing in popularity.  Spring Roo uses ITDs heavily and as such, there has been a strong push | 
|  | to provide even better support for them in the IDE. | 
|  | </td> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>ITD-Aware search</b></td> | 
|  | <td> | 
|  | AJDT now supports ITD-aware searching.  There are two parts to this feature: | 
|  |  | 
|  | <ol> | 
|  | <li>Standard Java search will find references to Java elements inside an ITD.  For example, in this snippet of code, | 
|  | a search for the references to the <code>name</code> field yields two references inside of ITDs:<br/> | 
|  | <img src="img/searchInsideOfITD.gif" border="1" /><br/><br/> | 
|  | </li> | 
|  | <li>Now, invoking Java search on an ITD will locate all of its valid references as shown in this example:><br/> | 
|  | <img src="img/searchOfITD.gif" border="1" /><br/><br/> | 
|  | </li> | 
|  | </ol> | 
|  | For more information, see <a href="https://bugs.eclipse.org/273335">Bug 273335</a>. | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>ITD rename refactoring</b></td> | 
|  | <td> | 
|  | Building on top of our new support for ITD-aware searches, we now support rename refactoring of ITD fields and methods.  You can invoke rename | 
|  | refactoring for ITDs in the same way that you invoke rename refactoring for Java elements using keyboard commands (e.g.- CTRL-Shift-R on Windows) | 
|  | or from the context menu.  As much as reasonable, we follow the same conventions of JDT's rename refactoring.  For example, rename an ITD and all | 
|  | overriding methods will be renamed as well as the following example shows: | 
|  |  | 
|  | <ol> | 
|  | <li>In the following code, notice that the <code>Person.getName()</code> is overridden in the <code>Cyborg</code> | 
|  | class.  This is the method that we want to rename:<br/> | 
|  | <img src="img/rename1.gif" border="1" /><br/><br/> | 
|  | </li> | 
|  | <li>Select the method, right-click, Refactor, Rename...:<br/> | 
|  | <img src="img/rename2.gif" border="1" /><br/><br/> | 
|  | </li> | 
|  | <li>The rename dialog pops up:<br/> | 
|  | <img src="img/rename3.gif" border="1" /><br/><br/> | 
|  | </li> | 
|  |  | 
|  | <li>After choosing the new name, select <em>Preview</em>:<br/> | 
|  | <img src="img/rename4.gif" border="1" /><br/> | 
|  | Notice how <code>Cyborg.getName()</code> is renamed along with the Person.getName() intertype declaration.<br/><br/> | 
|  | </li> | 
|  |  | 
|  | <li>Finally, click OK to finish the refactoring and get the following result, with all references to <code>Person.getName()</code> renamed:<br/> | 
|  | <img src="img/rename5.gif" border="1" /><br/><br/> | 
|  | </li> | 
|  | </ol> | 
|  |  | 
|  | The rename refactoring is hooked into Eclipse's undo facility, so that all renames, even those that span multiple files, are undoable. | 
|  | For more information, see <a href="https://bugs.eclipse.org/303558">Bug 303558</a>. | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>ITD-aware renaming of getters and setters</b></td> | 
|  | <td> | 
|  | AJDT has added a refactoring participant to allow ITD getters and setters to be renamed when their associated field is renamed. | 
|  | In order to access this functionality, the <em>Rename Getter</em> and/or <em>Rename Setter</em> check boxes must be checked | 
|  | in the rename field dialog:<br/> | 
|  | <img src="img/participant1.gif" border="1" /><br/><br/> | 
|  | With these check boxes selected, renaming the <code>name</code> field to <code>firstName</code> in the previous example will | 
|  | produce the following results:<br/> | 
|  | <img src="img/participant2.gif" border="1" /><br/><br/> | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>Pull-out refactoring</b></td> | 
|  | <td> | 
|  | We have implemented the Pull-Out refactoring, which is the analog to the | 
|  | <a href="http://contraptionsforprogramming.blogspot.com/2009/05/push-in-refactoring-for-ajdt.html">Push-In refactoring</a>. | 
|  | This refactoring will pull out a Java field, method, or constructor into a target Aspect as an intertype declaration. | 
|  | <br/><br/> | 
|  | This refactoring can be invoked from the package explorer, Java editor, outline view, or anywhere that Java elements appear.  For example: | 
|  |  | 
|  | <ol> | 
|  | <li>Select the elements that you would like to pull out and invoke the refactoring wizard:<br/> | 
|  | <img src="img/pullOut1.gif" border="1" /><br/><br/></li> | 
|  | <li>Choose the target aspect and the appropriate options:<br/> | 
|  | <img src="img/pullOut2.gif" border="1" /><br/><br/></li> | 
|  | <li>Click Preview to see the proposed results (if desired):<br/> | 
|  | <img src="img/pullOut3.gif" border="1" /><br/><br/></li> | 
|  | </ol> | 
|  |  | 
|  | The pull out refactoring is hooked into Eclipse's undo and redo mechanism and so it | 
|  | can be undone with a single command.  For more information, see <a href="https://bugs.eclipse.org/277055">Bug 277055</a>. | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>Aspect-aware type renaming</b></td> | 
|  | <td> | 
|  | Type references inside of Aspects are now renamed when the associated type declaration is renamed. | 
|  |  | 
|  | Here, the <code>Wibble</code> aspect contains several references to <code>Target</code> inside of | 
|  | its aspect elements:<br/> | 
|  | <img src="img/renameType1.gif" border="1" /> | 
|  | <br/><br/> | 
|  | When <code>Target</code> is renamed, all references in referring aspects are renamed as well:<br/> | 
|  | <img src="img/renameType3.gif" border="1" /> | 
|  | <br/><br/> | 
|  | In some circumstances, you will see a refactoring warning:<br/> | 
|  | <img src="img/renameType2.gif" border="1" /> | 
|  | <br/><br/> | 
|  | This warning occurs due to some limitations we have with searching for references inside of aspects and | 
|  | it can safely be ignored. | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b><code>@Test</code> and Intertype declarations</b></td> | 
|  | <td> | 
|  | It is now possible to run intertype declarations that are JUnit 4 tests through the | 
|  | Eclipse JUnit test launcher:<br/> | 
|  | <img src="img/runTest1.gif" border="1" /> | 
|  | <br/><br/> | 
|  | Notice here that the <code>Target</code> class is empty, and it has 2 tests declared on it as ITDs. | 
|  | <br/><br/> | 
|  | To run these kinds of tests, simply choose the container (type, compilation unit, package, etc) that the | 
|  | tests are contained in and launch:<br/> | 
|  | <img src="img/runTest2.gif" border="1" /> | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>AspectJ-aware PDE Build (Helios only)</b></td> | 
|  | <td> | 
|  | For the Helios (Eclipse 3.6) stream, AJDT now provides PDE build integration on top of | 
|  | <a href="https://bugs.eclipse.org/303960">Bug 303960</a>.  This means that the old AJDT-PDE | 
|  | feature and wizards are superfluous and no longer exist in the 3.6 stream. | 
|  | <br/><br/> | 
|  | Now, plug-ins that require AspectJ can use the same PDE export wizards and headless PDE support as any other Java | 
|  | plug-in.  All that is required is adding two lines to your <code>build.properties</code> file | 
|  | on all of your plug-ins that require AspectJ: | 
|  | <pre>compilerAdapter=org.eclipse.ajdt.core.ant.AJDT_AjcCompilerAdapter | 
|  | sourceFileExtensions=*.java, *.aj</pre> | 
|  | For more information, see: <a href="http://contraptionsforprogramming.blogspot.com/2010/03/ajdt-pde-builds-redux.html"> | 
|  | AJDT-PDE builds redux</a>. | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>Modernize the build server</b></td> | 
|  | <td> | 
|  | We have moved the AJDT continuous integration builds to a modern Atlassian Bamboo server.  From an end user's | 
|  | perspective this does not mean much, except that you can browse the build processes as they occur.  However, | 
|  | from a developer's point of view, the build process is faster, more robust, and easier to maintain over time. | 
|  | <br/><br/> | 
|  | From an end-user's perspective, it is now possible to closely monitor the development releases of AJDT. | 
|  | If you are interested, you can see the build server at: <a href="http://build.springframework.org/browse/AJDT">http://build.springframework.org/browse/AJDT</a>. | 
|  | For more information, see <a href="https://bugs.eclipse.org/298913">Bug 298913</a>. | 
|  | </td> | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>AspectJ 1.6.9</b></td> | 
|  | <td> | 
|  | AJDT 2.1.0 includes AspectJ 1.6.9.  This release has several new features including | 
|  | transparent weaving, intertype inner types, overweaving, and a reduction of class | 
|  | file size.  See the <a href="http://eclipse.org/aspectj/doc/released/README-169.html">readme</a> for all details. | 
|  | </td> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>Bug Fixes</b></td> | 
|  | <td> | 
|  | See <a href="http://tinyurl.com/35h4asy">Bugzilla</a> for a list of bugs addressed in this release. | 
|  | </td> | 
|  |  | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td valign="top"><b>Thanks!</b></td> | 
|  | <td> | 
|  | We now have a new member on the AJDT team, Kris De Volder.  Kris is joining us from the University of British | 
|  | Columbia, where his focus was AOP and code browsing using AOP techniques to help understand large code-bases.  Kris | 
|  | is the implementor of the pull out refactoring.  Welcome aboard! | 
|  | </td> | 
|  |  | 
|  |  | 
|  | </tr> | 
|  | <tr> | 
|  | <td colspan="2"> | 
|  | <hr></td> | 
|  | <tr> | 
|  | <td valign="top"><b>Previous Releases</b></td> | 
|  | <td> | 
|  | See <a href="http://www.eclipse.org/ajdt/whatsnew202/index.html">here</a> | 
|  | for information on the new features in AJDT 2.0.2. | 
|  | </td> | 
|  | </tr> | 
|  | </tbody> | 
|  | </table> | 
|  | </body></html> |