<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2011, 2015. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
<title>Deprecated API removals</title>
</head>
<body>
<h1>Deprecated API removals</h1>

<p>
  Deprecated API can be marked for deletion.
  See the <a href="http://wiki.eclipse.org/Eclipse/API_Central/Deprecation_Policy">policy</a>   for the details.
  This section describes API removals that occurred in past releases, and upcoming removals in future releases.
</p>

<p>
Removed APIs in the Neon (4.6) release:
</p>
<ol>
 <li><a href="#runtime">Eclipse 2.0 runtime model and boot API</a></li>
</ol>
<p>
Removed APIs in the Oxygen (4.7) release:
</p>
<ol>
 <li><a href="#listenerlist">org.eclipse.jface.util.ListenerList</a></li>
</ol>

<p>
Removed APIs in the Photon (4.8) release:
</p>
<ol>
 <li><a href="#updatemanager">Update manager</a></li>
 <li><a href="#platform-methods">Platform methods</a></li>
</ol>


<p>
Planned API removals after June 2017:
</p>
<ol>
 <li><a href="#icontextcomputer">IContextComputer</a></li>
 <li><a href="#tasklist">org.eclipse.ui.views.tasklist.TaskList</a></li>
 <li><a href="#iplatformrunnable">org.eclipse.core.runtime.IPlatformRunnable</a></li>
 <li><a href="#tabletreeviewer">TableTree and TableTreeViewer</a></li>
 <li><a href="#auth">Platform authorization API</a></li>
</ol>

<p>
Planned API removals after June 2018:
</p>
<ol>
 <li><a href="#imageandmessagearea">ImageAndMessageArea from JFace</a></li>
 <li><a href="#fullscreen">org.eclipse.ui.cocoa.fullscreenWindow</a></li>
</ol>
<hr>

<p>
Planned API removals after June 2020:
</p>
<ol>
 <li><a href="#jfaceassert">JFace and JFace text Assert</a></li>
</ol>
<hr>





<!-- ############################################## -->

<h2>API removals in the Eclipse 4.6 release</h2>

<h3>1. <a name="runtime">Eclipse 2.0 runtime model and boot API</a></h3>
<p>
When the Eclipse runtime transitioned to use OSGi as its implementation, some existing
APIs for interacting with the old runtime were deprecated and moved to a compatibility fragment
(<tt>org.eclipse.core.runtime.compatibility</tt>). All API that was still valid was moved
elsewhere. These APIs have been non-functional since Eclipse 3.0 and will therefore
be removed in the future. The following packages will be removed:
</p>
<ul>
 <li><tt>org.eclipse.core.boot</tt></li>
 <li><tt>org.eclipse.core.runtime.model</tt></li>
 </ul>
 The compatibility fragment, <tt>org.eclipse.core.runtime.compatibility</tt> will
 also be removed. As a consequence <code>org.eclipse.ui.startup</code> extensions will no longer work if they do not specify a class that implements <code> org.eclipse.ui.IStartup</code>. 
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=370248" target="_blank">bug 370248</a>.
</p>

<h2>API removals in the Eclipse 4.7 release</h2>

<h3>1. <a name="listenerlist">org.eclipse.jface.util.ListenerList</a></h3>
<p>
The <code>org.eclipse.jface.util.ListenerList</code> class is deprecated since 2005 and has been replaced by <code>org.eclipse.core.runtime.ListenerList with org.eclipse.core.runtime.ListenerList.IDENTITY</code> as argument.
The <code>org.eclipse.jface.util.ListenerList</code> class is planned to get deleted.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=436448" target="_blank">bug 436448</a>.
</p>

<!-- ############################################## -->

<h2>API removals in the Eclipse 4.7 release</h2>

<h3>1. <a name="listenerlist">org.eclipse.jface.util.ListenerList</a></h3>
<p>
The <code>org.eclipse.jface.util.ListenerList</code> class is deprecated since 2005 and has been replaced by <code>org.eclipse.core.runtime.ListenerList with org.eclipse.core.runtime.ListenerList.IDENTITY</code> as argument.
The <code>org.eclipse.jface.util.ListenerList</code> class is planned to get deleted.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=436448" target="_blank">bug 436448</a>.
</p>


<!-- ############################################## -->

<h2>API removals in the Eclipse 4.8 release</h2>

<h3>1. <a name="updatemanager">Update Manager</a></h3>
<p>
Bundle org.eclipse.update.core from the old update manager API was removed. 
This API was marked for deletion in the 4.2. release via <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311590" target="_blank">bug 311590</a>.
</p>
 
 <h3>2. <a name="platform-methods">Methods in Platform deleted</a></h3>
<p>

Platform API as announced for Eclipse 4.2 was deleted.
This API was marked for deletion in the 4.2. release via <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=476404" target="_blank">bug 476404</a>.
The following methods are removed:
</p>
<ul>
 <li><tt>Platform#addAuthorizationInfo</tt></li>
 <li><tt>Platform#getAuthorizationInfo</tt></li>
 <li><tt>Platform#flushAuthorizationInfo</tt></li>
 <li><tt>Platform#addProtectionSpace</tt></li>
 <li><tt>Platform#getProtectionSpace </tt></li>
 </ul>
 
 
<!-- ############################################## -->

<h2>API removals after June 2016</h2>

<h3>2. <a name="tabletreeviewer">TableTreeViewer</a></h3>
<p>
The <code>org.eclipse.jface.viewers.TableTreeViewer</code> class is deprecated since Eclipse 3.1 and has been replaced by <code>TreeViewer</code>.
The <code>org.eclipse.jface.viewers.TableTreeViewer</code>, <code>org.eclipse.swt.custom.TableTree</code> and <code>org.eclipse.swt.custome.TableTreeItem</code> classes are planned to get deleted as well as methods using these types.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=436505" target="_blank">bug 436505</a>.
</p>

<h3>3. <a name="tasklist">org.eclipse.ui.views.tasklist.TaskList</a></h3>
<p>
The <code>org.eclipse.ui.views.tasklist.TaskList</code> class is deprecated since Eclipse 3.4 and has been replaced by <code>MarkerSupportView</code>.
The <code>org.eclipse.ui.views.tasklist.TaskList</code> class and related classes only used by this class are planned to get deleted.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=436506" target="_blank">bug 436506</a>.
</p>

<h3>4. <a name="auth">Platform authorization API</a></h3>
<p>
Since Eclipse 1.0, the Eclipse Platform class provided API for storing and retrieving
passwords in a keyring file. This API used an inherently insecure method for encrypting 
credentials, and used a custom encryption algorithm that made it difficult for some 
consumers to distribute and export Eclipse-based products. For these and other reasons,
this API was deprecated and replaced in Eclipse 3.4 with a new Equinox secure storage API.
In Eclipse 4.2 the implementation of the old authorization methods was removed, but the API left in place. 
This old API will be removed completely in a future release. The following API methods will
be removed from <tt>org.eclipse.core.runtime.Platform</tt>:
</p>
<ul>
 <li><tt>addAuthorizationInfo(URL serverUrl, String realm, String authScheme, Map info)</tt></li>
 <li><tt>getAuthorizationInfo(URL serverUrl, String realm, String authScheme)</tt></li>
 <li><tt>flushAuthorizationInfo(URL serverUrl, String realm, String authScheme)</tt></li>
 <li><tt>addProtectionSpace(URL resourceUrl, String realm)</tt></li>
 <li><tt>getProtectionSpace(URL resourceUrl)</tt></li>
 </ul>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=476404" target="_blank">bug 476404</a>.
</p>


<!-- ############################################## -->

<h2>API removals after June 2017</h2>
<h3>1. <a name="icontextcomputer">IContextComputer and related classes</a></h3>
<p>
The <code>org.eclipse.ui.help.IContextComputer</code> class and dependent classes, i.e., org.eclipse.ui.help.WorkbenchHelp, DialogPageContextComputer and ViewContextComputer are deprecated since 2002. These classes are planned to get deleted.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=442961" target="_blank">bug 442961</a>.
</p>

<h3>2. <a name="iplatformrunnable">org.eclipse.core.runtime.IPlatformRunnable</a></h3>
<p>
The <code>org.eclipse.core.runtime.IPlatformRunnable</code> interface is planned to be removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=370248" target="_blank">bug 370248</a>.
</p>

<!-- ############################################## -->
<h2>API removals after June 2018</h2>
<h3>1. <a name="imageandmessagearea">ImageAndMessageArea from JFace</a></h3>
<p>
The <code>org.eclipse.jface.dialogs.ImageAndMessageArea</code> class is planned to be removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=475863" target="_blank">bug 475863</a>.
</p>

<h3>2. <a name="fullscreen">org.eclipse.ui.cocoa.fullscreenWindow</a></h3>
<p>
Eclipse Platform 4.2 introduced a OS&nbsp;X-specific command to toggle full-screen
called <code>org.eclipse.ui.cocoa.fullscreenWindow</code> (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=376394" target="_blank">bug 376394</a>),
bound to Command-Ctrl-F.  In 4.6 we introduced a cross-platform command
to toggle full-screen called <code>org.eclipse.ui.window.fullscreenmode</code>
(<a href="https://bugs.eclipse.org/489087" target="_blank">bug 489087</a> and
<a href="https://bugs.eclipse.org/491572" target="_blank">bug 491572</a>).  As a result,
we have two "Toggle Full Screen" commands on OS&nbsp;X, and both
appear in the <em>Quick Access</em>.  We will consolidate our code to
use <code>org.eclipse.ui.window.fullscreenmode</code>, and plan to
remove <code>org.eclipse.ui.cocoa.fullscreenWindow</code>.
</p>
<p>
For further details or to provide feedback on this change, see
<a href="https://bugs.eclipse.org/493932" target="_blank">bug 493932</a>.
</p>



<!-- ############################################## -->
<h2>API removals after June 2020</h2>
<h3>1. <a name="jfaceassert"> org.eclipse.jface.util.Assert and org.eclipse.jface.text.Assert </a></h3>
<p>
The <code> org.eclipse.jface.util.Assert</code> and <code>org.eclipse.jface.text.Assert</code> classes are planned to be removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=528191" target="_blank">bug 528191</a>.
</p>

</body>
</html>
