mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-09-13 15:45:38 +02:00
Fix for bugzilla bug 71391
"Specify context collecting behavior for this, target and args pointcuts"
This commit is contained in:
parent
b242e1b573
commit
26ea838501
@ -189,6 +189,115 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>
|
||||
Each join point potentially has three pieces of state associated
|
||||
with it: the currently executing object, the target object, and
|
||||
an object array of arguments. These are exposed by the three
|
||||
state-exposing pointcuts, <literal>this</literal>,
|
||||
<literal>target</literal>, and <literal>args</literal>,
|
||||
respectively.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Informally, the currently executing object is the object that a
|
||||
<literal>this</literal> expression would pick out at the join
|
||||
point. The target object is where control or attention is
|
||||
transferred to by the join point. The arguments are those
|
||||
values passed for that transfer of control or attention.
|
||||
</para>
|
||||
|
||||
<informaltable frame="1">
|
||||
<tgroup cols="4" align="left">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><emphasis role="bold">Join Point</emphasis></entry>
|
||||
<entry><emphasis role="bold">Current Object</emphasis></entry>
|
||||
<entry><emphasis role="bold">Target Object</emphasis></entry>
|
||||
<entry><emphasis role="bold">Arguments</emphasis></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Method Call</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>target object**</entry>
|
||||
<entry>method arguments</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Method Execution</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>method arguments</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Constructor Call</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>None</entry>
|
||||
<entry>constructor arguments</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Constructor Execution</entry>
|
||||
<entry>executing object</entry>
|
||||
<entry>executing object</entry>
|
||||
<entry>constructor arguments</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Static initializer execution</entry>
|
||||
<entry>None</entry>
|
||||
<entry>None</entry>
|
||||
<entry>None</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Object pre-initialization</entry>
|
||||
<entry>None</entry>
|
||||
<entry>None</entry>
|
||||
<entry>constructor arguments</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Object initialization</entry>
|
||||
<entry>executing object</entry>
|
||||
<entry>executing object</entry>
|
||||
<entry>constructor arguments</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Field reference</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>target object**</entry>
|
||||
<entry>None</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Field assignment</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>target object**</entry>
|
||||
<entry>assigned value</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Handler execution</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>executing object*</entry>
|
||||
<entry>caught exception</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Advice execution</entry>
|
||||
<entry>executing aspect</entry>
|
||||
<entry>executing aspect</entry>
|
||||
<entry>advice arguments</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
<para>* There is no executing object in static contexts such as
|
||||
static method bodies or static initializers.
|
||||
</para>
|
||||
|
||||
<para>** There is no target object for join points associated
|
||||
with static methods or fields.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<!-- ============================== -->
|
||||
|
Loading…
Reference in New Issue
Block a user