# 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.

- org.apache.lucene.search.DisjunctionSumScorer
- org.apache.lucene.analysis.standard.FastCharStream
- org.apache.lucene.analysis.standard.CharStream
- org.apache.lucene.analysis.standard.StandardTokenizerConstants
- org.apache.lucene.analysis.de.WordlistLoader
- org.apache.lucene.store.InputStream
- org.apache.lucene.search.DateFilter
- org.apache.lucene.analysis.standard.ParseException
- org.apache.lucene.analysis.standard.StandardTokenizerTokenManager
- org.apache.lucene.search.PhrasePrefixQuery
- org.apache.lucene.search.RemoteSearchable
- org.apache.lucene.analysis.standard.Token
- org.apache.lucene.search.ReqOptSumScorer
- org.apache.lucene.index.SegmentTermPositionVector
- org.apache.lucene.search.ReqExclScorer
- org.apache.lucene.store.OutputStream
- org.apache.lucene.search.RemoteSearchable_Stub
- org.apache.lucene.analysis.standard.TokenMgrError

## 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`.