blob: 5d0daa1d88729bd9b09cb86dcaa0abd0fa5b0227 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2006, 2007. 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>Incompatibilities between Eclipse 3.3 and 3.4</title>
</head>
<body>
<h1>Incompatibilities between Eclipse 3.3 and 3.4</h1>
<p>
Eclipse changed in incompatible ways between 3.3 and 3.4 in ways that affect
plug-ins. The following entries describe the areas that changed and provide
instructions for migrating 3.3 plug-ins to 3.4. Note that you only need to look
here if you are experiencing problems running your 3.3 plug-in on 3.4.
</p>
<ol>
<li><a href="#FileEditorInput">FileEditorInput#getPath throws IllegalArgumentException for non local files</a></li>
<li><a href="#ModifyRule">Changed scheduling rules for IProject#setDescription</a></li>
</ol>
<hr>
<!-- ############################################## -->
<h2>1. <a name="FileEditorInput">FileEditorInput#getPath throws IllegalArgumentException for non local files</a></h2>
<p><strong>What is affected:</strong> Clients that call getPath() on FileEditorInput.</p>
<p><strong>Description:</strong>In release 3.3 and earlier, <code>FileEditorInput#getPath</code>
returned <code>null</code> when called on an input whose file was not in the local
file system. This violated the contract of <code>IPathEditorInput#getPath</code> which
did not allow a null result. The method now throws <code>IllegalArgumentException</code>
in this case. The convenience method <code>FileEditorInput#isLocalFile</code>
has been added so that callers who are unsure of the state of a supplied <code>IFile</code> can check
before calling <code>#getPath</code>.</p>
<p><strong>Action required:</strong> Clients that call <code>FileEditorInput#getPath</code>
should check if they are calling it on an input that is not in the local file system, and react
accordingly.</p>
<!-- ############################################## -->
<h2>2. <a name="ModifyRule">Changed scheduling rules for IProject#setDescription</a></h2>
<p><strong>What is affected:</strong> Clients that call <code>IProject#setDescription</code>.</p>
<p><strong>Description:</strong> In the 3.3 release, all calls to <code>IProject#setDescription</code>
required the caller to own <code>IResourceRuleFactory#modifyRule</code>, which
was implemented with the <code>IWorkspaceRoot</code> scheduling rule. This was
too restrictive in most cases, and unnecessarily prevented other threads from modifying
other projects in the workspace while <code>modifyRule</code> was held. In the 3.4
release, the <code>IWorkspaceRoot</code> scheduling rule is now only needed when configuring project
natures: clients calling <code>IProject#setDescription</code> without the <code>AVOID_NATURE_CONFIG</code>
flag. <code>IResourceRuleFactory#modifyRule</code> now only locks the project resource by default, allowing
more concurrency when opening or closing projects, or when setting the description but
not configuring project natures.
<p><strong>Action required:</strong> Clients calling <code>IProject#setDescription</code>
should ensure they own the correct scheduling rule. See the API javadoc for a description
of what rules are required for this and other workspace operations.</p>
<!-- ############################################## -->
<h2>3. <a name="AnchorName">Title</a></h2>
<p><strong>What is affected:</strong> </p>
<p><strong>Description:</strong></p>
<p><strong>Action required:</strong> .</p>
</body>
</html>