Incompatibilities between Eclipse 4.2 and 4.3

Eclipse changed in incompatible ways between 4.2 and 4.3 in ways that affect plug-ins. The following entries describe the areas that changed and provide instructions for migrating 4.2 plug-ins to 4.3. Note that you only need to look here if you are experiencing problems running your 4.2 plug-in on 4.3.

See also the list of deprecated API removals for this release.

  1. New incompatible Lucene version
  2. OleListeners must not dispose OleEvent arguments
  3. Models created in 4.2 need HandlerProcessAddon added

1. New incompatible Lucene version

What is affected: Clients that directly reference Lucene API included in the platform.

Description: The Eclipse platform help system has migrated from Lucene 2.9.1 to Lucene 3.5. This change brings improved performance and many bug fixes in help search. However, Lucene itself has changed in incompatible ways between their 2.9 and 3.5 releases. See the Lucene Change Log for complete details.

Action required: Clients that directly use Lucene APIs should refer to the Lucene change log for details on what has changed.

2. OleListeners must not dispose OleEvent arguments

What is affected: Plug-ins that dispose the arguments (Variants) in received OleEvents.

Description: Prior to Eclipse 4.3, the arguments (Variants) in OleEvents were never disposed by SWT, so an OleListener that disposed these arguments would not have a problem. While it was never stated that OleListeners should dispose these arguments, there were example snippets on the SWT page that incorrectly did this.

As of Eclipse 4.3, SWT now disposes these arguments after all appropriate OleListeners have been notified, in order to fix a significant memory leak. As a result, OleListeners that also dispose these arguments can cause native COM objects to be over-released, which can lead them to be cleaned up prematurely and potentially crash.

Action required: Clients that hook OleListeners must ensure that they are not invoking dispose() on the arguments (Variants) in received OleEvents.

3. Models created in 4.2 need HandlerProcessAddon added

What is affected: All Eclipse 4 RCP applications

Description: The static method processHierarchy of the E4Workbench class was removed. This method at the time of this removal supported the dynamically changing contexts in which handlers are executed. It was required to be called every time you added/removed handlers at runtime. Now this functionality has moved to an add-on. The add-on is in org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon . It makes the changes automatically by listening in the event broker. Being an add-on it has the advantage of being replaceable, in case you don't like the way the processing is done now (though it is not recommended).

Action required: Remove all calls to E4Workbench.processHierarchy in your application and add the HandlerProcessingAddon mentioned above to the list of add-ons of your application.