123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
- <html> <head>
- <title>AspectJ 6 Development Kit v1.6.0 Readme</title>
- <style type="text/css">
- <!--
- P { margin-left: 20px; }
- PRE { margin-left: 20px; }
- LI { margin-left: 20px; }
- H4 { margin-left: 20px; }
- H3 { margin-left: 10px; }
- -->
- </style>
- </head>
-
- <body>
- <div align="right"><small>
- © Copyright 2008 Contributors.
- All rights reserved.
- </small></div>
-
- <h1>AspectJ v1.6.0 Readme</h1>
-
- <h3>AspectJ v1.6.0 - 23 Apr 2008</h3>
-
- <p>For the complete list of every issue addressed since the last full release, see
- <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.6.0+M1&target_milestone=1.6.0+M2&target_milestone=1.6.0+RC1&target_milestone=1.6.0&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&bug_status=VERIFIED&bug_status=CLOSED&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=">this bugzilla link</a>.
-
- <p>Some of the highlights of 1.6.0 are:
-
- <h4>Upgrade to a Java 1.6 compiler</h4>
- <p>AspectJ1.6.0 upgrades the internal Eclipse compiler level to version 785_R33x - a Java 1.6 level compiler</p>
-
- <h4>Better incremental compilation support in the IDE</h4>
- <p>Changes under <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=221427">bug 221427</a> mean that the compiler
- is better able to maintain incremental state for projects in Eclipse and determine whether full builds or incremental
- builds are required when project dependencies change. The result is that the compiler will more frequently do
- an incremental build rather than falling back to doing a full build. Some basic performance findings can be seen in
- <a href="http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg09002.html">this mailing list post</a>.
-
- <h4>Parameter annotation matching</h4>
- <p>Parameter matching is possible for constructors and methods. The use
- of parentheses around the parameter types in a method signature
- determine whether the annotations relate to the type of the parameter
- or the parameter itself.
-
- <pre><code>
- execution(* *(@A *));
- </code></pre>
- <p>- Execution of a method/ctor whose first parameter is of a type
- annotated with @A.
-
- <pre><code>
- execution(* *(@A (*)));
- </code></pre>
- <p>- Execution of a method/ctor whose first parameter is annotated with @A
-
- <pre><code>
- execution(* *(@A (@B *)))
- </code></pre>
- <p>- Execution of a method/ctor whose first parameter is annotated with
- @A and is of a type annotated with @B.
-
- Example:
- <pre><code>
- ------ Start of Test.java -----
- @interface A {}
- @interface B {}
-
- class C {
- public void foo(@A String s) {}
- public void goo(@A @B String s) {}
- }
-
- aspect X {
- before(): execution(* *(@A (*))) {}
- before(): execution(* *(@B (*))) {}
- }
- ------ End of Test.java -----
- $ ajc -showWeaveInfo -1.6 Test.java
- Join point 'method-execution(void C.foo(java.lang.String))' in Type 'C' (A.java:5) advised by before advice from 'X' (A.java:10)
-
- Join point 'method-execution(void C.goo(java.lang.String))' in Type 'C' (A.java:6) advised by before advice from 'X' (A.java:11)
-
- Join point 'method-execution(void C.goo(java.lang.String))' in Type 'C' (A.java:6) advised by before advice from 'X' (A.java:10)
- </code></pre>
- <p>The first piece of advice matched both methods. The second only matched goo().
- <br><br>
- <h4>Annotation Value Matching</h4>
-
- <p>This allows static matching of the values of an annotation - if the matching is done statically at weave time, it is possible
- to avoid some of the reflection that is currently required within the advice (in some cases). A typical use case is tracing where
- the trace level is defined by an annotation but may be switched OFF for a method if the annotation has a particular value. Perhaps
- tracing has been turned on at the type level and a few critical methods should not get traced. Here is some code showing the
- use case:
- <p>
-
- <pre><code>
- enum TraceLevel { NONE, LEVEL1, LEVEL2, LEVEL3 }
-
- @interface Trace {
- TraceLevel value() default TraceLevel.LEVEL1;
- }
-
- aspect X {
- // Advise all methods marked @Trace except those with a tracelevel of none
- before(): execution(@Trace !@Trace(TraceLevel.NONE) * *(..)) {
- System.err.println("tracing "+thisJoinPoint);
- }
- }
-
- public class ExampleOne {
-
- public static void main(String[] args) {
- ExampleOne eOne = new ExampleOne();
- eOne.m001();
- eOne.m002();
- eOne.m003();
- eOne.m004();
- eOne.m005();
- eOne.m006();
- eOne.m007();
- }
-
- @Trace(TraceLevel.NONE)
- public void m001() {}
-
- @Trace(TraceLevel.LEVEL2)
- public void m002() {} // gets advised
-
- @Trace(TraceLevel.LEVEL3)
- public void m003() {} // gets advised
-
- @Trace(TraceLevel.NONE)
- public void m004() {}
-
- @Trace(TraceLevel.LEVEL2)
- public void m005() {} // gets advised
-
- @Trace(TraceLevel.NONE)
- public void m006() {}
-
- @Trace
- public void m007() {} // gets advised
-
- }
- </pre></code>
- <p>Matching is currently allowed on all annotation value types *except* class and array. Also it is
- not currently supported for parameter annotation values.
-
- <h4>Changes since release candidate</h4>
- <p>The only fix 1.6.0 final includes beyond the release candidate is a multi-threading problem in the weaver - <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=227029">bug 227029</a>.
-
- <h4>Releases leading up to AspectJ 1.6.0
- <p>AspectJ v1.6.0rc1- 16 Apr 2008</p>
- <p>AspectJ v1.6.0M2 - 26 Feb 2008</p>
- <p>AspectJ v1.6.0M1 - 16 Jan 2008</p>
- <hr>
-
- </body>
- </html>
|