Incompatibilities between Eclipse 3.6 and 3.7

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

  1. Apache Lucene version change to 2.9.1
  2. BrowserFunction now maps Java null to Javascript null
  3. Method ProfileChangeOperation#getProfileChangeRequest now returns IProfileChangeRequest

1. Apache Lucene version change to 2.9.1

What is affected: Clients that directly reference classes from Apache Lucene

Description: org.eclipse.help.base has a dependency on the Lucene bundles org.apache.lucene and org.apache.lucene.analysis both of which are reexported. In release 3.7 the version of the Lucene bundled with the Eclipse platform increased from version 1.9.1 to 2.9.1 creating a potential binary incompatibility for clients that consume the classes which were reexported from Lucene. A rebuild from source is required for any bundles that have a dependency to org.eclipse.help.base and reference the reexported Lucene classes.

A number of classes have been removed from org.apache.lucene between versions 1.9.1 and 2.9.1. If you are using any of these consult the documentation at lucene.apache.org for information about how to recode. The classes below were removed.

2. BrowserFunction now maps Java null to Javascript null

What is affected: Java invocations from Javascript that process the returned value

Description: Prior to Eclipse 3.7, BrowserFunction mapped Java's null value to Javascript's undefined value. However this was an incorrect mapping, and as of Eclipse 3.7 this value is now mapped to Javascript's null value. Clients that use BrowserFunction to invoke Java functions from Javascript should be aware of this change, and should adjust their Javascript accordingly if they make an explicit effort to handle null values returned from Java.

3. Method ProfileChangeOperation#getProfileChangeRequest now returns IProfileChangeRequest

What is affected: Callers of the method ProfileChangeOperation#getProfileChangeRequest

Description: In Eclipse 3.6 the API class ProfileChangeOperation had a method getProfileChangeRequest which returned an instance of an internal class ProfileChangeRequest. This internal class was marked as internal and @noreference. The method signature has been changed so now ProfileChangeOperation#getProfileChangeRequest now returns an instance of the API class IProfileChangeRequest.