Fix for bugzilla bug 71391

"Specify context collecting behavior for this, target and args pointcuts"
This commit is contained in:
ehilsdal 2004-08-23 00:53:28 +00:00
parent b242e1b573
commit 26ea838501

View File

@ -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>
<!-- ============================== -->