<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <link rel=stylesheet type="text/css" href="../css/style.css">
    <link rel=stylesheet type="text/css" href="../css/nn.css">
	<title>OTDT 0.7 (Incubation) - New and Noteworthy</title>
</head>
<body>
<h1>OTDT 0.7 (Incubation) - New and Noteworthy</h1>
<div class="navigation"><i>Changes since the 1.4.0 Release from objectteams.org</i></div>
<div class="navigation">On this page:
<!--a href="#metrics">&bull; Metrics Plug-in</a-->
<a href="#configuration">&bull; Configuration</a>
<a href="#views">&bull; Views/Dialogs</a>  
<a href="#assist">&bull; Content Assist</a>  
<!--a href="#formatting">&bull; Formatting</a-->
<a href="#debug">&bull; Run/Debug</a>
<a href="#language">&bull; Language</a>
<a href="#compiler">&bull; Compiler</a>  
<a href="#api">&bull; API</a>
<a href="#otre">&bull; Runtime</a>  
<a href="#otequinox">&bull; OT/Equinox</a>
</div>
<table cellpadding="10" cellspacing="0" width="100%">
  <colgroup>
  <col width="20%">
  <col width="80%">
  </colgroup>
  <tbody>
  <tr><td colspan="2" id="configuration"><h2>Configuration</h2></td></tr>
  <tr>
    <td><p align="right"><b>Migration of old OT-projects</b><br>
        <span class="since">since&nbsp;0.7 M2</span><br>
        <a class="buglink" title=" Automatically migrate OT-projects to new namespace" href="https://bugs.eclipse.org/308029">308029</a></p></td>
    <td><p>When opening Object Teams project that have been created by a previous OTDT version (<em>1.x from objectteams.org</em>)
    		some internal data need to be migrated to the new <code>org.eclipse.objectteams</code> prefix, notably:
    		<dl>
    		<dt><b><code>.project</code></b></dt><dd>project nature and builder</dd>
    		<dt><b><code>META-INF/MANIFEST.MF</code></b></dt><dd>dependency on OT/Equinox plug-in</dd>
    		<dt><b><code>plugin.xml</code></b></dt><dd><code>aspectBinding</code> declarations</dd>
    		</dl>
    		Diagnostics have been added to signal these issues as errors: 
    	</p>
    	<p><img alt="New project configuration errors" src="../images/screenshots/NN07/ProjectErrors.png"></p>
    	<p>Quick fixes have been implemented for performing the necessary changes, like:</p>
    	<p><img alt="Quickfix for migrating to the new namespace" src="../images/screenshots/NN07/ProjectMigration-QuickFix.png"></p>
    </td>
  </tr>
  <tr>
    <td><p align="right"><b>Use compiler options for plug-in export</b><br>
        <span class="since">since&nbsp;0.7 M4</span><br>
        <a class="buglink" title="[compiler] Interactive export of OT-plugin does not use compiler preferences" href="https://bugs.eclipse.org/316553">316553</a></p></td>
    <td><p>When interactively exporting an OT plug-in (using the corresponding export wizard)
     	it is now possible to tell the builder to use the OT/J compiler options from the project settings.
    	In order to do so simply include the following directive in your <code>build.properties</code> file:
    	<div class="listbox"><div class="listing">javacProjectSettings=true</div></div>
    	This is a standard PDE setting which now applies to OT-specific compiler options, too.
    	</p>
    </td>
  </tr>
  <tr><td colspan="2" id="views"><h2>Views & Dialogs</h2></td></tr>
  <tr>
    <td><p align="right"><b>Binding to callout-method via binding editor</b><br>
        <span class="since">since&nbsp;0.7 M4</span><br>
        <a class="buglink" title="[binding-editor] Binding editor does not show base methods which are defined by callout" href="https://bugs.eclipse.org/315520">315520</a></p></td>
    <td><p>The binding editor now also shows base methods that are defined by a callout binding (relevant in role-of-role situations):
    	</p>
    	<p><img alt="Binding to a callout-defined method" src="../images/screenshots/NN07/BindingEditorBaseCallout.png"></p>
    	<p>Also a new icon for the "New method()" entry was introduced.
		</p>
    </td>
  </tr>
  <tr>
    <td><p align="right"><b>Create callout-to-field via binding editor</b><br>
        <span class="since">since&nbsp;0.7 M4</span><br>
        <a class="buglink" title="[binding-editor] Creating callout-to-field via binding editor" href="https://bugs.eclipse.org/315465">315465</a></p></td>
    <td><p>The binding editor now supports the creation of callout-to-field bindings. Simply select (a) "New method()", (b) "->", (c) <em>a base field</em>:
    	</p>
    	<p><img alt="Creating a callout-to-field" src="../images/screenshots/NN07/BindingEditorCalloutToField1.png"></p>
    	<p>As the result you will see two new callout bindings (<code>get</code> and <code>set</code>) to the same <img valign="middle" src="../images/otdt/field_default_obj.gif"/> field. 
    		If only a getter or only a setter was intended simply remove the undesired binding. 
    	</p>    	
    	<p><img alt="Created a two callout-to-field bindings" src="../images/screenshots/NN07/BindingEditorCalloutToField2.png"></p>
    </td>
  </tr>
  <tr>
    <td><p align="right"><b>"Go to Language Definition" without using Problems view</b><br>
        <span class="since">since&nbsp;0.7</span><br>
        <a class="buglink" title=" "Go to Language Definition" should be available along more paths" href="https://bugs.eclipse.org/318071">318071</a></p></td>
    <td><p>The action <span class="ui">Go to Language Definition</span>, which previously could only be invoked from the <b>Problems</b> view,
    		can now be invoked in two more ways:
    	</p>    	
    	<p><u>Using the context menu on the problem marker in the editor's left gutter:</u>
    	<img alt="Go to Language Definition from left gutter" src="../images/screenshots/NN07/GoToLangDefGutter.png"></p>
    	<p><u>Using a new button on the problem hover:</u>
    	<img alt="Go to Language Definition from problem hover" src="../images/screenshots/NN07/GoToLangDefHover.png"></p>
    </td>
  </tr>
  <tr><td colspan="2" id="assist"><h2>Content assist</h2></td></tr>
  <tr>
    <td><p align="right"><b>Create "precedence after"</b><br>
        <span class="since">since&nbsp;0.7 M3</span><br>
        <a class="buglink" title="[dom] [assist] add support for &quot;precedence after&quot; in DOM and quickfix" href="https://bugs.eclipse.org/313804">313804</a></p></td>
    <td><p>When a quickfix is used for creating a <code class="keyword">precedence</code> declaration that affects <code class="keyword">after</code> callin bindings,
    		the quickfix automatically creates the declaration as <code class="keyword">precedence after</code>
    		(see also the change of <a class="otjldlink" href="http://www.objectteams.org/def/1.3/s4.html#s4.8.a">OTJLD &sect;4.8(a)</a> described <a href="#language">here</a>).
    	</p>
  		<p><img alt="Add &quot;precedence after&quot; quickfix" src="../images/screenshots/NN07/AddPrecedenceAfter-QuickFix.png"></p>
  	</td>  
  </tr>
  <tr>
  	<td><p align="right"><b>Add/remove signatures of method bindings</b><br>
        <span class="since">since&nbsp;0.7 M3</span><br>
        <a class="buglink" title="[assist] Quick assist for adding/removing signatures in method bindings" href="https://bugs.eclipse.org/310923">310923</a></p></td>
  		</p>
  	</td>
  	<td><p>
  		New quick assists support converting between method bindings with and without signatures.
  		When, e.g., creating a method binding by means of completion, signatures are automatically included.
  		In that case a quick assist can be used to convert that verbose binding into its shorter versions without signatures:
  		</p>
  		<p><img alt="Remove signatures quick assist" src="../images/screenshots/NN07/RemoveSignatures-QuickAssist.png"></p>
  		<p>
  		Conversely, a method binding without signatures can be converted to the long form:
  		</p>
  		<p><img alt="Add signatures quick assist" src="../images/screenshots/NN07/AddSignatures-QuickAssist.png"></p>
  		The quick assist for removing signatures is disabled if argument names are used either in a parameter mapping or a guard predicate.
  	</td>
  </tr>
  <tr>
  	<td><p align="right"><b>Proposal to override inherited role</b><br>
        <span class="since">since&nbsp;0.7</span><br>
        <a class="buglink" title="[assist] completion should offer to materialize phantom roles" href="https://bugs.eclipse.org/302827">302827</a></p></td>
  		</p>
  	</td>
  	<td><p>
  			A new kind of completion proposal has been added for overriding a role class inherited from the super team:
  		</p>
  		<p><img alt="Override role completion proposal" src="../images/screenshots/NN07/OverrideRole.png"></p>
  		Invoking this proposal will insert the following code:
  		<div class="listbox"><div class="listing"><pre>    <code class="annotation">@Override</code>
    <code class="keyword">protected class</code> Subscriber  {
    }</pre></div></div>
  		The new role implicitly inherits all properties from the inherited role <code>Bonus.Subscriber</code> (<a class="otjldlink" href="http://www.objectteams.org/def/1.3/s1.html#s1.3.1.c">OTJLD &sect;1.3.1(c)</a>) 
  		and may override methods and/or refine <code class="keyword">extends</code> (<a class="otjldlink" href="http://www.objectteams.org/def/1.3/s1.html#s1.3.2.b">OTJLD &sect;1.3.2(b)</a>)
  		and <code class="keyword">playedBy</code> (<a class="otjldlink" href="http://www.objectteams.org/def/1.3/s2.html#s2.1.c">OTJLD &sect;2.1(c)</a>) relationships. 
  	</td>
  </tr>
  <tr><td colspan="2" id="debug"><h2>Run / Debug</h2></td></tr>
  <tr>
    <td><p align="right"><b>Fade out JMangler</b><br>
        <span class="since">since&nbsp;0.7 M1</span><br>
        <a class="buglink" title="Remove all traces of JMangler" href="https://bugs.eclipse.org/302976">302976</a></p></td>
    <td><p>Previous versions of the OTDT featured two alternative strategies for launching OT/J applications: JMangler and JPLIS.
    	During the move to Eclipse.org, the support for JMangler was discontinued because the JPLIS launch mode has long matured
    	and bringing JMangler to Eclipse.org would have caused additional license issues.
    	</p>
    	For users this means that launch configurations have been simplified as the checkbox <span class="ui">Java 5 JPLIS Launching</span>
    	has been removed, leaving only the <span class="ui">Enable OTRE</span> checkbox:
    	<p>
    		<img alt="JRE Tab with OTRE configuration" src="../images/screenshots/NN07/RunJRE-OTRE.png">
    	</p>
    </td>
  </tr>
  <tr>
    <td><p align="right"><b>Show "_OT$base" field</b><br>
        <span class="since">since&nbsp;0.7</span><br>
        <a class="buglink" title="variables view should not hide _OT$base reference" href="https://bugs.eclipse.org/316907">316907</a></p></td>
    <td>
      <p>
    	The <b>Variables</b> view has the option to filter any synthetic variables generated by the OT/J compiler (<span class="ui">Java &gt; Show OT/J internal variables</span>).
    	However, the synthetic <code><b>_OT$base</b></code> field is special, as it holds the essential information
    	to which base instance a given role instance is linked. The <code><b>_OT$base</b></code> field is
    	now shown in the <b>Variables</b> view independent of the current filter setting:
      </p>
      <p>
        <img alt="Variables view showing _OT$base" src="../images/screenshots/NN07/Variables_Base.png">
      </p>
      <p>
      	Also note the similarity to the synthetic field <code><b>this$0</b></code> which refers to the
      	enclosing (team) instance.
      </p>
    </td>
  </tr>
  <tr><td colspan="2" id="api"><h2>API</h2></td></tr>
  <tr>
    <td><p align="right"><b>Team serialization</b><br>
        <span class="since">since&nbsp;0.7 M1</span><br>
        <a class="buglink" title="[otre] [compiler] Support basic serialization of teams and roles" href="https://bugs.eclipse.org/304728">304728</a><br>
        <a class="buglink" title="[otre] Selectively consider activation state during team serialization" href="https://bugs.eclipse.org/304729">304729</a></p></td>
    <td><p>Teams and roles can now be serialized if they declare to implement <code>java.io.Serializable</code>.
    	   By default serialization does not handle any generated fields by which roles, teams and bases are linked (role caches, base-to-role backpointers).
    	   Team classes wishing to persist their roles can now do so by implementing a normal pair of <code>writeObject</code> / <code>readObject</code> methods.
    	   New API has been added to <code>org.objectteams.Team</code> for initializing a team after restoring from its persisted representation:
    	   <dl><dt><b><code>void restore()</code></b></dt>
    	   	   <dd>Serializable teams must invoke this method once from their readObject() method in order to re-initialize internal data structures.</dd>
	  		   <dt><b><code>void restoreRole(Class<?> clazz, Object role)</code></b></dt>
	  		   <dd>Serializable teams must invoke this method from their readObject() method for each role that has been retrieved and shall be re-registered for this team.</dd>
		   </dl>
		</p>
		<p>
			Additionally, new API has been added for persisting / restoring the global <b>activation state</b> of a team:
			<dl><dt><b><code>void writeGlobalActivationState(ObjectOutputStream out) throws IOException</code></b></dt>
				<dd>If a serializable team wishes to persist its global activation status it must
	 				call this method from its <code>writeObject()</code> method and correspondingly call
	 				<code>readGlobalActivationState(ObjectInputStream)</code> from its <code>readObject()</code>.</dd>
	 			<dt><b><code>void readGlobalActivationState(ObjectInputStream in) throws IOException</code></b></dt>
	 			<dd>If a serializable team wishes to persist its global activation status it must
	 				call this method from its <code>readObject()</code> method and correspondingly call
	 				<code>writeGlobalActivationState(ObjectOutputStream)</code> from its <code>writeObject()</code>.
	 				If a team is restored that was globally active when serialized, it will be activated
	 				correspondingly during deserialization when this method is called.</dd>
	 		</dl> 
     	</p>
    </td></tr>
  <tr><td colspan="2" id="language"><h2>Language</h2></td></tr>
  <tr>
    <td><p align="right"><b>Semantics of precedence</b><br>
        <span class="since">since&nbsp;0.7 M3</span><br>
        <a class="buglink" title="[compiler] [otre] implement change in semantics of precedence declaration" href="https://bugs.eclipse.org/310917">310917</a></p></td>
    <td><p>The semantics of how exactly a <code class="keyword">precedence</code> declaration should affect <code class="keyword">after</code> callin bindings
    		was underspecified in the OTJLD and the OTRE implemented unintended semantics. 
    	</p>
    	<p>
    		To fix these issues <a class="otjldlink" href="http://www.objectteams.org/def/1.3/s4.html#s4.8.a">OTJLD &sect;4.8(a)</a> has been extended to
    		<ul>
    		<li>specify how a precedence declaration affects the execution order:<br> 
    			for <code class="keyword">before</code> and <code class="keyword">replace</code> bindings
    			a high precedence (i.e., being listed early) means early triggering,
    			but for <code class="keyword">after</code> bindings a high precedence means <b>late</b> triggering.
    		<li>require precedence declarations which affect after bindings to make this fact explicit by using
    			<code class="keyword">precedence after</code> instead of just <code class="keyword">precedence</code>.
    		</ul> 
     	</p>
     	<p>
     		The new semantics have been implemented in the OTRE accordingly (see also the corresponding <a href="#assist">quickfix</a>).
     	</p>
    </td></tr>
  <tr>
    <td><p align="right"><b>Merging precedence of different kinds</b><br>
        <span class="since">since&nbsp;0.7 M4</span><br>
        <a class="buglink" title="[otjld] [compiler] Merging of class-based and binding-based precedences is underspecified" href="https://bugs.eclipse.org/316148">316148</a></p></td>
    <td><p>The semantics of how exactly <code class="keyword">precedence</code> declarations of different kinds (class-based vs. binding-based) would be merged was underspecified.
    		Consider the following precedence declarations:
    		<div class="listbox"><div class="listing"><pre>  <code class="keyword">public team class</code> MyTeam {
      <code class="keyword">precedence</code> MyRoleB.bl1, MyRoleA.bl3;
          <code class="keyword">protected class</code> MyRoleB <code class="keyword">playedBy</code> MyBase {
              <code class="keyword">precedence</code> bl1, bl2;
              ...
          }
      ...
  }</pre></div></div>
  			Here the C3 algorithm could produce two different orders (<code>bl1, bl3, bl2</code>) or (<code>bl1, bl2, bl3</code>) (both order are consistent with
  			the input lists). Which order is chosen depends on in which order the two precedence lists are passed into the algorithm.
    	</p>
    	<p>
    		To fix these issues <a class="otjldlink" href="http://www.objectteams.org/def/1.3/s4.html#s4.8.d">OTJLD &sect;4.8(d)</a> has been extended to
    		specify that more deeply nested precedence declarations have higher priority than outer precedence declarations.
    		So in the above example the final order of callin bindings will be: (<code>bl1, bl2, bl3</code>), because <code>bl2</code> is mentioned
    		in the inner precedence declaration and thus comes before <code>bl3</code> which is mentioned only in the outer precedence declaration. 
     	</p>
     	<p>
     		The compiler has been updated accordingly.
     	</p>
    </td></tr>
  <tr>
    <td><p align="right"><b>Callin in role with binding ambiguity</b><br>
        <span class="since">since&nbsp;0.7 M4</span><br>
        <a class="buglink" title="[otjld] Method bindings in role with binding ambiguity?" href="https://bugs.eclipse.org/316200">316200</a></p></td>
    <td><p>Previously, callin bindings in a particular situation would be flaged as illegal showing the following message:
			<div class="hover" style="margin:5px;">
				Callin mapping not allowed here, because lifting to role TX.RY is
				not possible due to a reported binding ambiguity (OTJLD 4.1(b)).
			</div>
    		A closer analysis revealed that despite lifting ambituity the callin <em>could</em> succeed in lifting if
    		<ol>
    		<li>a suitable role is already found in the cache (perhaps created explicitly), <em>or</em></li>
    		<li>the actual base object has a type for which a specific role without binding ambiguity exists.</li>
    		</ol>
    	</p>
    	<p>
			In order to support even such corner cases,
			<ul>
			<li>Sections <a class="otjldlink" href="http://www.objectteams.org/def/1.3/s2.html#s2.3.4.b">OTJLD &sect;2.3.4(b)</a> and 
				<a class="otjldlink" href="http://www.objectteams.org/def/1.3/s4.html#s4.1.b">OTJLD &sect;4.1(b)</a> have been extended</li>
			<li>The compiler message has been rephrased in a weaker way.</li>
			<li>A new warning token <code>"def-bind-ambiguity"</code> (definite binding ambiguity) has been introduced
				which can be used in a <code>@SuppressWarnings</code> annotation in order to silence that error.<br>
				Additionally, option <code class="ui">Suppress optional errors with '@SuppressWarnings'</code> must be enabled in the
				Java Compiler preferences.</li>
			<li>The generated lift method has been changed to service case (1) above.</li>
			</ul>
     	</p>
    </td></tr>
  <tr><td colspan="2" id="compiler"><h2>Compiler</h2></td></tr>
  <tr>
    <td><p align="right"><b>Warn about unused result</b><br>
        <span class="since">since&nbsp;0.7 M2</span><br>
        <a class="buglink" title="[compiler] should warn when after callin ignores return value of its role method " href="https://bugs.eclipse.org/310621">310621</a></p></td>
    <td><p>In an <code class="keyword">after</code> callin binding where both methods declare a return type, users might expect the role method's result to be passed down
    		to the original caller. However, <code class="keyword">after</code> callin bindings may only <em>look</em> at the base method's result but never <em>replace</em> it with its own result.
    		In order to alert users of this issue, a new warning has been introduced. 
    	</p>
    	<p style="margin-bottom:0px;">
    		So this binding:
    		<div class="listbox"><div class="listing"><code><code class="keyword">int</code> foo() <code class="keyword"><- after int</code> bar();</code></div></div>
    		Will yield this warning:
    		<div class="hover" style="margin:5px;">
    		Callin after binding cannot return a value to the base caller, role method return value of type int will be ignored (OTJLD 4.4(a))
    		</div>
    		By contrast, the following declaration does not trigger the warning:
    		<div class="listbox"><div class="listing"><code><code class="keyword">void</code> foo() <code class="keyword"><- after int</code> bar();</code></div></div>
    		If desired the warning can be suppressed using the token <code>"ignoredresult"</code>
     	</p>
    </td></tr>
  <tr><td colspan="2" id="otequinox"><h2>OT/Equinox</h2></td></tr>
  <tr>
    <td><p align="right"><b>Aspect bindings for nested teams</b><br>
        <span class="since">since&nbsp;0.7 M2</span><br>
        <a class="buglink" title="nested teams must be specified using their internal name with &quot;$__OT__&quot;" href="https://bugs.eclipse.org/311109">311109</a><br>
        <a class="buglink" title="Adding InnerTeam for aspectBinding with the PDE Extension Editor results in wrong code" href="https://bugs.eclipse.org/311206">311206</a></p></td>
    <td><p>Previously, aspect bindings for nested teams could only be specified by using the internal name involving an ugly "$__OT__" prefix.
    	   Specifically, when selecting a nested team using the <span class="ui">Browse</span> button the resulting declaration would not work.
    	</p>
    	<p>
    	   To fix these issues support has been added to OT/Equinox for interpreting the source and binary names of nested teams without the internal prefix,
    	   i.e., both
    	   <ul>
    	   <li><code>some.pack.OuterTeam.InnerTeam</code> and</li>
    	   <li><code>some.pack.OuterTeam$InnerTeam</code></li>
    	   </ul>
    	   will be understood by the OT/Equinox runtime.
    	</p>
    </td></tr>
    <tr>
    <td><p align="right"><b>Extension point for lifting participant</b><br>
        <span class="since">since&nbsp;0.7</span><br>
        <a class="buglink" title="Extension point for a lifting participant" href="https://bugs.eclipse.org/311081">311081</a></p></td>
    <td><p>The <a title="OTDT 1.4 New &amp; Noteworthy" href="http://www.objectteams.org/distrib/new_in_1.4.html#runtime">recently introduced</a> 
    		concept of a lifting participant is now supported also within OT/Equinox. 
    		This is done using the new extension point <code>org.eclipse.objectteams.otequinox.liftingParticipant</code>.
    		In any application at most one extension to this extension point is allowed.
    		The extension must provide a class implementing <code>org.objectteams.ILiftingParticipant</code>. 
    	</p>
    </td></tr>
  <tr><td colspan="2" id="otre"><h2>Object Teams Runtime Environment</h2></td></tr>
  <tr>
    <td><p align="right"><b>Detect all system threads</b><br>
        <span class="since">since&nbsp;0.7</span><br>
        <a class="buglink" title="[otre] OTRE doesn't know about all threads" href="https://bugs.eclipse.org/316696">316696</a></p></td>
    <td><p>It was a long outstanding issue that per-thread (de)activation of teams could not correctly handle all system threads that
    		are created before entering the <code>main</code> function. 
    		Only for the AWT-Event-Thread an incomplete workaround was implemented, which could print the following warning at runtime:
    		<pre style="color:red;">Warning: Deactivation for the AWT-Event-Thread is not effective right now!</pre>
    		This problem could be resolved and the workaround is no longer used.
    	</p>
    </td></tr>
</table>
</body>