| <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <title>AspectJ Development Tools</title> |
| <link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css"> |
| </head> |
| <body bgcolor="#FFFFFF"> |
| |
| <h2>New Crosscutting Comparison functionality (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=90490">bug 90490</a>)</h2> |
| |
| <p> |
| This page introduces the new Crosscutting Comparison view and related |
| functionality. This is available in AJDT development builds with versions of |
| 1.2.1.20050627142749 onwards, which can be obtained from the |
| <a href="http://www.eclipse.org/ajdt/downloads/#dev">downloads page</a> |
| for either Eclipse 3.0 — 3.3. Crosscutting comparison is not available |
| for Eclipse 3.4 or later (AJDT 1.6 or greater). |
| </p> |
| |
| <p> |
| The goal of this new functionality is to answer the "What's changed?" |
| question in relation to the aspect-oriented structure of your |
| application. Say you make a release of your project and then you |
| do some refactoring such as renaming some methods, adding new methods, |
| optimizing pointcuts etc. The advice in your project may now be |
| matching in different places (or in additional, or fewer places) but |
| in anything other than very small projects it would be hard to spot this |
| purely from the editor markers, Cross References view, and Visualiser |
| view offered by AJDT. These views show you the current state of the |
| crosscutting but not how it has changed. |
| </p> |
| |
| <p> |
| An AspectJ project in Eclipse has a crosscutting structure associated |
| with it, which contains information such as the methods which are affected |
| by a particular piece of advice. This information is used in AJDT to |
| populate the Cross References view and to create the advice markers shown in |
| the editor. In order to be able to determine how this crosscutting structure |
| has changed some time later, we first need to save out the information into |
| a file. This can be done via the <b>Saving Crosscutting Map...</b> option |
| on the Project menu, as shown below. |
| </p> |
| <img src="screenshot1.png" width="492" height="297" |
| alt="Screenshot showing the save map menu entry"> |
| |
| <p> |
| You will then be prompted for a name for the file to store the |
| crosscutting structure in. These files are given the ".ajmap" extension. |
| </p> |
| <img src="screenshot2.png" width="415" height="177" |
| alt="Screenshot showing the enter name dialog"> |
| |
| <p> |
| After entering a name the map file will be created in the project. |
| You can then check these map files into CVS if required, so that a |
| project can have one or more crosscutting structures associated with |
| it. As shown below you can open the map file in an editor, but as |
| it is binary data you can't edit it (and you probably wouldn't want to |
| anyway). Future versions of the map file editor could at least show |
| information about the structure contained. |
| </p> |
| <img src="screenshot3.png" width="510" height="192" |
| alt="Screenshot using a AJMap file and editor"> |
| |
| <p> |
| If you create two map files you can compare them with each other |
| by selecting |
| them both in the package explorer and selecting the |
| <b>Compare Crosscutting With > Each Other</b> menu option. |
| It is also possible to compare the crosscutting structure from one map file |
| with the current structure of the project, as shown below. |
| </p> |
| <img src="screenshot4.png" width="515" height="329" |
| alt="Screenshot showing how to initiate a comparison"> |
| |
| <p> |
| After selecting the required menu option, the new |
| <b>Crosscutting Comparison</b> view is opened and populated. |
| In the example shown below something has changed since the map |
| file was created which resulted in the <code>Line.setup</code> |
| method being advised by advice in the <code>HistoryManagement</code> |
| aspect. Either the <code>setup</code> method was added, or |
| the pointcut associated with the advice was changed such that it |
| now matches this method. As you can see both entries in the |
| view refer to the same relationship, but from opposite directions. |
| Future versions of the view will offer a relationship filter, so you |
| could for example just see the "advises" relationships, and not the |
| "advised by" ones. |
| </p> |
| <img src="screenshot5.png" width="565" height="165" |
| alt="Screenshot showing the Crosscutting Comparison view"> |
| |
| <p> |
| You can double click cells with the mouse, or use the Enter |
| and arrows keys to navigate to an item listed in the Crosscutting |
| Comparison view. You can also click the column headers to sort |
| the table according to the contents of that column. |
| </p> |
| |
| <p> |
| Note also that if you are comparing a map file with the current build, |
| the comparison is redone whenever a build occurs. This gives you an |
| ongoing view of what has changed since the map file was created, e.g. |
| rename a method, save the file, an incremental build happens, and |
| the Crosscutting Comparison view updates to show that some advice is |
| no longer affecting a method that it is was previously advising. |
| </p> |
| |
| <p> |
| Finally the screenshot below shows another example where a number |
| of crosscutting relationships have been added, and some have been |
| removed. Please let us know what you think of this new functionality |
| and if you have any suggestions for improving it (either via the bug, |
| the AJDT newsgroup, or the ajdt-dev mailing list). |
| </p> |
| <img src="screenshot6.png" width="566" height="222" |
| alt="Screenshot showing the Crosscutting Comparison view"> |
| |
| </body> |
| </html> |