blob: f04f1da05b1fcde7163f068f2a121a2fefd715c9 [file] [log] [blame]
<!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 1.6.5- New and Noteworthy</title>
</head>
<body>
<h1>AJDT 1.6.5 - 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">
Although only a month after the release of <a href="../whatsnew164/index.html">AJDT 1.6.4</a>, we have been able to sneak
enough goodies into AJDT to justify another release.
</td>
</tr>
<tr>
<td valign="top"><b>Release note</b></td>
<td valign="top">
Unfortunately, due to IP issues, we cannot release AJDT 1.6.5 as a full public release. Some external code
that is included with AJDT (Equinox Aspects) has not yet completed Eclipse's IP process. This is blocking
AJDT from putting out a full public release. Instead, we are releasing AJDT 1.6.5 as a release candidate
in a separate update site. The update site to use is here:
<pre>http://download.eclipse.org/tools/ajdt/34/RC/update</pre>
<br/>
<br/>
All code distributed with AJDT is EPL and as far as we know, there are no IP conflicts with it. However, the Eclipse Foundation has
<a href="http://wiki.eclipse.org/IPzilla">very rigorous intellectual property checks</a>. This is one of the foundation's strengths,
and it helps ensure that all publicly released Eclipse code is <em>IP clean</em>.
<br/>
<br/>
So, AJDT 1.6.5 has not been thoroughly checked for IP cleanliness, but in terms of quality and feature completeness,
it is on the level of our public releases.
</td>
</tr>
<tr>
<td colspan="2">
<hr></td></tr>
<tr>
<td valign="top"><b>Crosscutting support for ITDs on the inpath</b></td>
<td>
AJDT now shows ITD and declare parents relationships that are targeting elements on the inpath. For example,
below are a simple aspect and a simple class that is on the inpath. The inpath relationships now appear
in the gutter marker and in the X Refs view (<em>C</em> is a class that is on the inpath).
<br/>
<br/>
<img src="inpath_rels.gif" border="1"/>
<br/>
<br/>
Note that we do not support displaying advice relationships on the inpath, nor do we show the inverse relationship
on the inpath. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=273086">Bug 273086</a> and
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=273087">Bug 273087</a> respectively.
<p>More information can be found in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=271269">Bug 271269</a>.</p>
</td>
</tr>
<tr>
<td colspan="2">
<hr></td></tr>
<tr>
<td valign="top"><b>Linked source folders</b></td>
<td>
AJDT now supports linked source folders. In the image below, you can see that crosscutting relationships
can apply across linked folders. Here, the <em>fromMyDesktop</em> folder is a linked source folder
to the file system directory <em>/Users/andrew/Desktop/link</em>.
<br/>
<br/>
<img src="linked.gif" border="1"/>
<br/>
<br/>
Note that we typically recommend using linked source folders instead of inpath relationships where
possible. The reason is that the AspectJ compiler can perform better incremental analysis on linked
folders than it can with inpath folders. This is because linked folders are considered part of the
source of project and the compiler stores more specific state on these kinds of folders.
<br/>
<br/>
More information can be found in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=253555">Bug 253555</a>.
</td>
</tr>
<tr>
<td colspan="2">
<hr></td></tr>
<tr>
<td valign="top"><b>AJDT Event Trace enhancements</b></td>
<td>
It is now possible to print the hierarchies and relationship maps of all projects
in the workspace into the event trace view. This information can be accessed by clicking on the this button
in the AJDT Event Trace view:<br>
<img src="event_trace.gif" border="1"/><br>
in the AJDT Event Trace view.
<br/>
<br/>
For example, the hierarchy and relationship map for the <em>DeclareParents on Inpath</em> project displayed above is:
<pre>
9:2:18 Printing crosscutting model for all AspectJ projects in the workspace
9:2:18
9:2:18 --------------------------------------
9:2:18 Printing crosscutting model for DeclareParents on Inpath
9:2:18
Hierarchy:
=DeclareParents on Inpath/src
=DeclareParents on Inpath/src<
=DeclareParents on Inpath/src<*A.aj
=DeclareParents on Inpath/src<*A.aj#
=DeclareParents on Inpath/src<*A.aj}A
=DeclareParents on Inpath/src<*A.aj}A[E
=DeclareParents on Inpath/src<*A.aj}A`declare parents
=DeclareParents on Inpath/src<*A.aj}A)C.x
Relationship map:
=DeclareParents on Inpath/src<*A.aj}A)C.x ::
=DeclareParents on Inpath/src<*A.aj}A)C.x --declared on--> [=DeclareParents on Inpath/,<(C.class[C]
=DeclareParents on Inpath/,<(C.class[C ::
=DeclareParents on Inpath/,<(C.class[C --aspect declarations-->
[=DeclareParents on Inpath/binaries<*AnotherAspect.aj}AnotherAspect`declare parents,
=DeclareParents on Inpath/src<*A.aj}A`declare parents, =DeclareParents on Inpath/src<*A.aj}A)C.x]
=DeclareParents on Inpath/src<*A.aj}A`declare parents ::
=DeclareParents on Inpath/src<*A.aj}A`declare parents --declared on--> [=DeclareParents on Inpath/,<(C.class[C]
9:2:18 --------------------------------------
</pre>
The information spit out here corresponds to internal <em>handles</em> used by AspectJ and AJDT to
describe the crosscutting relationships in a project. These handles correspond to program elements
that represent things like advice declarations, method declarations, source folders, etc.
Although this feature is meant for diagnostic purposes,
it can be used to introspect your project and help you understand a little more about AJDT and AspectJ internals.
<b>Warning:</b> the crosscutting model can be large and dump significant amount of text to the Event Trace view.
<br/>
<br/>
More information can be found in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=271668">Bug 271668</a>
</td>
</tr>
<tr>
<td colspan="2">
<hr></td></tr>
<tr>
<td valign="top"><b>Better support for AJDT and Maven</b></td>
<td>
In the past, users of Maven and AJDT who are not using the m2eclipse
maven integration plugin for Eclipse could not specify Aspect path elements
through the pom.xml. Additionally, the projects would often be erroneously
configured with the an extra <em>javaBuilder</em>.
AJDT 1.6.5 now addresses both of these issues in a generic way. To specify aspects libraries to go
on the aspect path from within a pom.xml, add the following:
<pre>
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
&lt;version&gt;2.5.1&lt;/version&gt;
&lt;configuration&gt;
&lt;additionalBuildcommands&gt;
&lt;buildCommand&gt;
&lt;name&gt;org.eclipse.ajdt.core.ajbuilder&lt;/name&gt;
&lt;arguments&gt;
&lt;aspectPath&gt;org.springframework.aspects,org.springframework.aop&lt;/aspectPath&gt;
&lt;/arguments&gt;
&lt;/buildCommand&gt;
&lt;/additionalBuildcommands&gt;
&lt;additionalProjectnatures&gt;
&lt;projectnature&gt;org.eclipse.ajdt.ui.ajnature&lt;/projectnature&gt;
&lt;/additionalProjectnatures&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
Inside the <em>arguments</em> element, specify a comma separated list of <em>aspectPath</em> elements. The
builder then looks for any jar file or binary folder on the raw classpath that contains the specified string. So,
the above would add any of <em>org.springframework.aspects_2.5.1.jar</em>, <em>org.springframework.aspects_3.0.0.jar</em>,
or <em>org.springframework.aop_2.5.1.jar</em> onto the aspect path of the project if the jar files already
exist on the classpath.
<br/>
<br/>
<b>Note the use of version 2.5.1.</b> Unfortunately, version 2.6 of the Maven-Eclipse-Plugin <a href=http://jira.codehaus.org/browse/MECLIPSE-538">
does not support AJDT</a>. Version 2.7 should fix this problem.
<br/>
<br/>
More information can be found in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270552">Bug 270552</a>,
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270554">Bug 270554</a>,
and <a href=http://jira.codehaus.org/browse/MECLIPSE-538">MECLIPSE-538</a>.
</td>
</tr>
<tr>
<td colspan="2">
<hr></td></tr>
<tr>
<td valign="top"><b>Scoping for ITDs in content assist</b></td>
<td>
Intertype declarations will now only appear in content assist if they are properly accessible in the current
scope. For example, the following two editors show a <em>Point</em> class and an aspect that
inserts ITDs into it. In this first image, you can see that the content assist in the <em>PointSetters</em> aspect
correctly shows the <em>logger</em> field, which is private to <em>PointSetters</em>:
<br/>
<br/>
<img src="content_assist1.gif" border="1" />
<br/>
<br/>
In this second image, the content assist inside of <em>Point</em> does not show the <em>logger</em> field, but still shows
the <em>getX</em> and <em>getY</em> methods.
<br/>
<br/>
<img src="content_assist2.gif" border="1" />
<br/>
<br/>
More information can be found in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=272547">Bug 272547</a>
</td>
</tr>
<tr>
<td colspan="2">
<hr></td>
</tr>
<tr>
<td valign="top"><b>Bug Fixes</b></td>
<td>
Over 30 bugs have been resolved for 1.6.5.
See <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AJDT&target_milestone=1.6.5&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">Bugzilla</a>
for a complete list of bugs.
</td>
<tr>
<td colspan="2">
<hr></td>
</tr>
<tr>
<td valign="top"><b>Thanks!</b></td>
<td>
Thanks to those of you who have submitted patches, bug reports, and contributed to the mailing list for this release.
We appreciate your help.
<br/>
<br/>
Also, AJDT is spreading. The Scala-Eclipse plugin
<a href="http://www.scala-lang.org/node/1493 ">is now using JDT Weaving</a> to make its JDT integration deeper and more robust.
</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/whatsnew164/index.html">here</a>
for information on the new features in AJDT 1.6.4.
</td>
</tr>
</tbody>
</table>
</body></html>