aboutsummaryrefslogtreecommitdiffstats
path: root/docs/progGuideDB/semantics.xml
diff options
context:
space:
mode:
authorehilsdal <ehilsdal>2004-08-23 00:53:28 +0000
committerehilsdal <ehilsdal>2004-08-23 00:53:28 +0000
commit26ea8385014b31dea870ca7d1a883976853179b1 (patch)
treee9bdc847e5c117905e6c95c320396830b063c4b9 /docs/progGuideDB/semantics.xml
parentb242e1b5730793b1080117e1135fc5a4b87f0b44 (diff)
downloadaspectj-26ea8385014b31dea870ca7d1a883976853179b1.tar.gz
aspectj-26ea8385014b31dea870ca7d1a883976853179b1.zip
Fix for bugzilla bug 71391
"Specify context collecting behavior for this, target and args pointcuts"
Diffstat (limited to 'docs/progGuideDB/semantics.xml')
-rw-r--r--docs/progGuideDB/semantics.xml109
1 files changed, 109 insertions, 0 deletions
diff --git a/docs/progGuideDB/semantics.xml b/docs/progGuideDB/semantics.xml
index b7325114e..a64dd8101 100644
--- a/docs/progGuideDB/semantics.xml
+++ b/docs/progGuideDB/semantics.xml
@@ -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>
<!-- ============================== -->