Eclipse changed in incompatible ways between 3.4 and 3.5 in ways that affect plug-ins. The following entries describe the areas that changed and provide instructions for migrating 3.4 plug-ins to 3.5. Note that you only need to look here if you are experiencing problems running your 3.4 plug-in on 3.5.
What is affected: Clients that call ILaunchConfiguration.getLocation()
Description: In release 3.4 and earlier, ILaunchConfiguration.getLocation() was not specified
to return null
. Since 3.5, launch configuration infrastructure has been enhanced to support storage
on external file systems (EFS). The #getLocation() method returns a location in the local file system - however, since
an external file system may not map to a local location, null
can now be returned.
Action required: Clients that call ILaunchConfiguration.getLocation() should update
code to handle a null
result. The #getLocation() method has been deprecated since the return
value is no longer reliable.
What is affected:Clients that reference constants from IIntroConstants via CustomizableIntroPart
Description: In release 3.4 and earlier, CustomizableIntroPart implemented the internal class IIntroConstants. This had the side effect of accidentally exposing internal constants in an API class. Since Eclipse 3.5 this implements clause has been removed.
Action required: Clients that reference any of these constants will see a compilation error in the source and will need to replace the reference to the constant with a string literal of the same value. See bug 251472 for more information
What is affected: Clients that use IResourceChangeListeners and listen on IResourceChangeEvent#PRE_REFRESH events
Description: In release 3.4, clients were notified with PRE_REFRESH events only during a single project refresh. Since Eclipse 3.5, PRE_REFRESH events have been fired during every workspace refresh. For a workspace refresh IResourceChangeEvent.getResource() returns null. To determine the scope of the refresh (a project or the workspace), IResourceChangeEvent.getSource() should be used.
Action required: Clients that listens on PRE_REFRESH events should use IResourceChangeEvent.getSource() instead of IResourceChangeEvent.getResource() to determine the scope of the refresh. See bug 255325 for more information.
What is affected: Clients that refer to ModelSynchronizeParticipant#refreshSchedule or call one of:
Description: In release 3.4 and earlier, ModelSynchronizeParticipant#refreshSchedule and methods mentioned above were made accessible. #refreshSchedule is declared as an internal type and referring it is illegal. Calling the methods was also illegal since attributes or returned parameters were internal types. Since Eclipse 3.5, the field and methods are no longer accessible.
Action required: Clients that illegally call the methods or refer ModelSynchronizeParticipant#refreshSchedule will see a compilation error in the source and will need to remove all the calls and references.
What is affected: Clients that reference CommonNavigator#IS_LINKING_ENABLED_PROPERTY
Description: In release 3.4 and earlier, CommonNavigator#IS_LINKING_ENABLED_PROPERTY had the value of 1. This value was the same as the IWorkbenchPartConstants#PROP_TITLE which caused confusion when properties changed. Since Eclipse 3.5 the value of this property was changed to something that does not conflict with other property values.
Action required: Any code that refers to CommonNavigator#IS_LINKING_ENABLED_PROPERTY must be recompiled to get the correct value.
What is affected: Clients that illegally subclass CommonNavigator
Description: In release 3.4 and earlier, CommonNavigator#getInitialInput() returned a type of IAdaptable, in release 3.5 this has been changed to by Object to allow greater flexibility. Subclassing the CommonNavigator is supported only in the 3.5 release, however this note is included because we are aware that many clients have subclassed CommonNavigator in prior releases.
Action required: If you override CommonNavigator#getInitialInput(), you will need to fix and recompile your code to use the new return type of Object. See bug 143430 for more information.