]> source.dussan.org Git - aspectj.git/commitdiff
1.6.9 readme
authoraclement <aclement>
Mon, 21 Jun 2010 20:07:16 +0000 (20:07 +0000)
committeraclement <aclement>
Mon, 21 Jun 2010 20:07:16 +0000 (20:07 +0000)
docs/dist/doc/README-169.html

index c758094783d000e9de72332aafee3f3ed98752d4..55f24dc06dbb47c27f4656468b2ba2752635d194 100644 (file)
@@ -20,10 +20,45 @@ All rights reserved.
 
 <h1>AspectJ 1.6.9 Readme</h1>
 
-<h2>Features of 1.6.9 milestone 2</h2>
+<p>The full list of resolved issues in 1.6.9 is available <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;product=AspectJ;target_milestone=1.6.9;target_milestone=1.6.9M1;target_milestone=1.6.9M2;target_milestone=1.6.9RC1">here</a></h2>
+
+<h2>Features</h2>
+
+<h3>declare annotation supports compound signature patterns: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613">287613</a></h3>
+<p>Until now it wasn't possible to express a compound pattern in any of the declare annotation constructs that
+take a member signature.  For example, if you wanted to attach an annotation to all your getter like methods, you needed
+two constructs</p>
+<pre><code>
+declare @method: * is*(): @FooBar;
+declare @method: * get*(): @FooBar;
+</code></pre>
+<p>Now AspectJ allows compound patterns for declare @method/@constructor/@field.</p>
+<pre><code>
+declare @method: (* is*()) || (* get*()): @FooBar;
+</code></pre>
+
+<h3>'Optional' aspects: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310506">310506</a></h3>
+
+<p>It is not uncommon to ship a library aspect separately to a jar upon which it depends.  In the case of Spring there is
+an aspect library containing a multitude of aspects that attach different technologies (transactions/persistence/etc) to your
+application.  Normally an aspect will fail with a "can't find type" style message if a weaver is told to use it and yet it
+references some missing dependency.  This can be annoying and require you to include jars on your classpath (or in your maven
+configuration) that you don't actually use, they are *only* there to avoid problems with the aspect.  In 1.6.9 you can add
+a setting to these aspects in the aop.xml that makes them optional.  The setting mentions a type and if that type cannot be found
+the aspect immediately shuts itself down.  This basically means that the aspect is only going to do its job if the type being
+mentioned in the setting is around.  This enables the aspect library to be on the aspect path but any aspects within it to 
+switch-off if there is nothing for them to do.
+</p>
+<p>Here is an example, 'AspectA' will switch itself off if the type 'a.b.c.Anno' cannot be found:</p>
+<code><pre>
+ &lt;aspect name="AspectA" requires="a.b.c.Anno"/&gt;
+</pre></code>
 
-<p>Mostly bug fixes, some important fixes around the use of Method ITDs with private fields
- (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=307120">307120</a>)</p>
+<h3>Reduction in class file sizes: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312839">312839</a></h3>
+
+<p>More details here: <a href="http://andrewclement.blogspot.com/2010/05/aspectj-size-is-important.html">http://andrewclement.blogspot.com/2010/05/aspectj-size-is-important.html</a>
+but basically some work has been done to improve the serialized form of aspects.  As an example, a compiled Roo petclinic sample (which
+uses lots of aspects and ITDs) is down from 1Meg (AspectJ 1.6.9m2) to 630k (AspectJ 1.6.9rc1).</p>
 
 <h3>Transparent weaving: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309743">309743</a></h3>
 <p>In a further step towards transparent weaving, support for the AjType reflection system is now being made optional.
@@ -69,9 +104,6 @@ pattern that you can put into the aop.xml that augments all the pointcuts define
 aspects to be used are X and Y.  The new 'scope' setting on aspect Y's definition allows finer control, and specifies that
 Y should in fact only be applied to com.foo..* types.</p>
 
-<hr>
-<h2>Features of 1.6.9 milestone 1</h2>
-
 <h3>Message inserts for declare warning/error messages</h3>
 
 <p>It is now possible to use joinpoint context in the messages attached to declare warning and declare error constructs.  Some