Incompatibilities between Eclipse 3.3 and 3.4

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.

  1. FileEditorInput#getPath throws IllegalArgumentException for non local files
  2. Changed scheduling rules for IProject#setDescription

1. FileEditorInput#getPath throws IllegalArgumentException for non local files

What is affected: Clients that call getPath() on FileEditorInput.

Description:In release 3.3 and earlier, FileEditorInput#getPath returned null when called on an input whose file was not in the local file system. This violated the contract of IPathEditorInput#getPath which did not allow a null result. The method now throws IllegalArgumentException in this case. The convenience method FileEditorInput#isLocalFile has been added so that callers who are unsure of the state of a supplied IFile can check before calling #getPath.

Action required: Clients that call FileEditorInput#getPath should check if they are calling it on an input that is not in the local file system, and react accordingly.

2. Changed scheduling rules for IProject#setDescription

What is affected: Clients that call IProject#setDescription.

Description: In the 3.3 release, all calls to IProject#setDescription required the caller to own IResourceRuleFactory#modifyRule, which was implemented with the IWorkspaceRoot scheduling rule. This was too restrictive in most cases, and unnecessarily prevented other threads from modifying other projects in the workspace while modifyRule was held. In the 3.4 release, the IWorkspaceRoot scheduling rule is now only needed when configuring project natures: clients calling IProject#setDescription without the AVOID_NATURE_CONFIG flag. IResourceRuleFactory#modifyRule 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.

Action required: Clients calling IProject#setDescription 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.

3. Title

What is affected:

Description:

Action required: .