| <!DOCTYPE html |
| PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <link rel="stylesheet" type="text/css" href="../css/ot.css" /> |
| <link rel="stylesheet" type="text/css" href="../css/otjld.css" /> |
| <title>OT/J Language Definition v1.3.1</title> |
| </head> |
| <body class="otdt"> |
| <div id="content"> |
| <table class="nav"> |
| <tr> |
| <td class="back"><a id="top"></a><a href="s5.2.html" rel="prev"><< §5.2 Explicit team activation</a></td> |
| <td class="top"><a href="index.html" rel="contents">↑ Table of Contents ↑</a></td> |
| <td class="next"><a href="s5.4.html" rel="next">§5.4 Guard predicates >></a></td> |
| </tr> |
| </table> |
| <div class="breadcrumb"><a class="nav" href="s5.html" rel="section">§5 Team Activation</a></div> |
| <div class="sect depth2" id="s5.3"> |
| <h2 class="sect">§5.3 Implicit team activation<a class="img" href="s5.3.html" |
| title="PermaLink to §5.3 Implicit team activation"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a></h2> |
| <p>Implicit team activation is intended to ensure that |
| whenever the control flow is passed to a team or one of its roles, |
| the team is implicitly activated for the current thread. |
| Implicit activation can be configured at different levels (see <a href="#s5.3.d" title="§5.3.(d) Configuring implicit activation" |
| class="sect">§5.3.(d)</a>). |
| |
| </p> |
| <p>When implicit activation is enabled a programmer may assume, |
| that whenever a role forwards calls to its base object via callout, |
| the callin bindings of the same role will be active at that time. |
| Exceptions to this rule have to be programmed explicitly. |
| |
| </p> |
| <div class="subsect depth3" id="s5.3.a"> |
| <h4 class="subsect">(a) <span class="title">Team level methods</span><a class="img" href="s5.3.a.html" |
| title="PermaLink to (a) Team level methods"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a></h4> |
| <p>While executing a <strong>team level method</strong>, the target team |
| is always active. Activation is reset to the previous state |
| when leaving the team method, unless the team has been explicitly activated during |
| execution of the team method by a call to <code>activate()</code>. |
| Explicit activation is stronger than implicit activation and thus persists after the |
| team level method terminates. Ie., leaving a team level method will never reset |
| an explicit activation. |
| |
| </p> |
| </div> |
| <div class="subsect depth3" id="s5.3.b"> |
| <h4 class="subsect">(b) <span class="title">Methods of externalized roles</span><a class="img" href="s5.3.b.html" |
| title="PermaLink to (b) Methods of externalized roles"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a></h4> |
| <p>Invoking a method on an <strong>externalized role</strong> |
| (see <a href="s1.2.2.html" title="§1.2.2 Externalized roles" class="sect">§1.2.2</a>) also has the |
| effect of temporary activation of the team containing the role for the current thread. |
| Regarding deactivation the rule of <a href="#s5.3.a" title="§5.3.(a) Team level methods" class="sect">§5.3.(a)</a> above applies accordingly. |
| |
| </p> |
| </div> |
| <div class="subsect depth3" id="s5.3.c"> |
| <h4 class="subsect">(c) <span class="title">Nested teams</span><a class="img" href="s5.3.c.html" title="PermaLink to (c) Nested teams"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a></h4> |
| <p>Implicit activation has additional consequences for nested teams |
| (see <a href="s1.5.html" title="§1.5 Team and role nesting" class="sect">§1.5</a>): |
| |
| </p> |
| <ul> |
| <li>Implicit activation of a team causes the activation of its outer teams.</li> |
| <li>Implicit deactivation of a team causes the deactivation of its inner teams.</li> |
| </ul> |
| </div> |
| <div class="subsect depth3" id="s5.3.d"> |
| <h4 class="subsect">(d) <span class="title">Configuring implicit activation</span><a class="img" href="s5.3.d.html" |
| title="PermaLink to (d) Configuring implicit activation"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a></h4> |
| <p>Implicit activation is disabled by default and can be enabled by adding the annotation |
| <code>@org.objectteams.ImplicitTeamActivation</code>, which can be applied to a type or a method. |
| When applied to a method it is ensured that invoking this method will trigger implicit activation. |
| When the annotation is applied to a type this has the same effect as applying it to all externally |
| visible methods of the type. Member types are not affected and have to be annotated separately. |
| </p> |
| <p>The runtime environment can be configured globally by defining the system property |
| <code>ot.implicit.team.activation</code> to one of these values: |
| </p> |
| <dl> |
| <dt>NEVER</dt> |
| <dd>Implicit activation is completely disabled.</dd> |
| <dt>ANNOTATED</dt> |
| <dd>This is the default: implicit activation applies only where declared by <code>@ImplicitTeamActivation</code>. |
| </dd> |
| <dt>ALWAYS</dt> |
| <dd>Implicit activation applies to all externally visible methods (this was the default in OTJLD versions ≤1.2)</dd> |
| </dl> |
| </div> |
| <p>Note that among the different mechanisms for activation, <code>within</code> is strongest, |
| followed by <code>(de)activate()</code>, weakest is implicit activation. In this sense, |
| explicit imperative (de)activation may override the block structure of implicit activation |
| (by explicit activation within a team level method), but not that of a <code>within</code> |
| block (by deactivation from a within block). |
| |
| </p> |
| </div> |
| <table class="nav"> |
| <tr> |
| <td class="back"><a href="s5.2.html" rel="prev"><< §5.2 Explicit team activation</a></td> |
| <td class="top"><a href="index.html" rel="contents">↑ Table of Contents ↑</a></td> |
| <td class="next"><a href="s5.4.html" rel="next">§5.4 Guard predicates >></a></td> |
| </tr> |
| </table> |
| <div class="breadcrumb"><a class="nav" href="s5.html" rel="section">§5 Team Activation</a></div> |
| </div> |
| <div id="footer"> |
| <hr /><a class="w3c img" href="http://jigsaw.w3.org/css-validator/check/referer" |
| shape="rect"><img src="../images/valid-css2-blue.png" alt="Valid CSS!" height="31" width="88" /></a><a class="w3c img" href="http://validator.w3.org/check?uri=referer" shape="rect"><img src="../images/valid-xhtml10-blue.png" alt="Valid XHTML 1.0 Strict" height="31" |
| width="88" /></a><address>© Stephan Herrmann, Christine Hundt, Marco Mosconi</address> |
| OT/J version 1.3.1 — last modified: 2013-05-28 |
| </div> |
| </body> |
| </html> |