aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoraclement <aclement>2006-06-23 11:00:02 +0000
committeraclement <aclement>2006-06-23 11:00:02 +0000
commitd97a716624fd4e6cf2bbff5e1f201942f0291a92 (patch)
tree42480d30ec62babf7b4fcb5f4fbe62eccbcfb9c9 /docs
parent9d2bb0c6ea27b577797ca6c7ca21959377b40cef (diff)
downloadaspectj-d97a716624fd4e6cf2bbff5e1f201942f0291a92.tar.gz
aspectj-d97a716624fd4e6cf2bbff5e1f201942f0291a92.zip
doc changes for @Around... wip
Diffstat (limited to 'docs')
-rw-r--r--docs/adk15ProgGuideDB/ataspectj.xml20
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/adk15ProgGuideDB/ataspectj.xml b/docs/adk15ProgGuideDB/ataspectj.xml
index 4faa14548..df4cdb638 100644
--- a/docs/adk15ProgGuideDB/ataspectj.xml
+++ b/docs/adk15ProgGuideDB/ataspectj.xml
@@ -620,6 +620,26 @@
<para>Note that the ProceedingJoinPoint does not need to be passed to the proceed(..) arguments.
</para>
+ <para>In code style, the proceed method has the same signature as the advice, any reordering of
+ actual arguments to the joinpoint that is done in the advice signature must be respected. Annotation
+ style is different. The proceed(..) call takes, in this order:
+ <itemizedlist>
+ <listitem>If 'this()' was used in the pointcut <emphasis>for binding</emphasis>, it must be passed first in proceed(..).
+ </listitem>
+ <listitem>If 'target()' was used in the pointcut <emphasis>for binding</emphasis>, it must be passed next in proceed(..) - it will be the
+ first argument to proceed(..) if this() was not used for binding.
+ </listitem>
+ <listitem>Finally come <emphasis>all</emphasis> the arguments expected at the join point, in the order they
+ are supplied at the join point. Effectively the advice signature is ignored - it doesn't
+ matter if a subset of arguments were bound or the ordering was changed in the advice
+ signature, the proceed(..) calls takes all of them in the right order for the join point.
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>Since proceed(..) in this case takes an Object array, AspectJ cannot do as much compile time
+ checking as it can for code style. If the rules above aren't obeyed then it will unfortunately
+ manifest as a runtime error.
+ </para>
</sect2>
</sect1>