diff --git a/disable-non-linux.patch b/disable-non-linux.patch
index 87331a2..9a6dc64 100644
--- a/disable-non-linux.patch
+++ b/disable-non-linux.patch
@@ -1,6 +1,6 @@
--- eclipse.jdt/org.eclipse.jdt-feature/feature.xml.sav 2015-06-10 10:05:23.943730974 +0300
+++ eclipse.jdt/org.eclipse.jdt-feature/feature.xml 2015-06-10 10:05:50.820612421 +0300
-@@ -161,22 +161,6 @@
+@@ -166,22 +166,6 @@
unpack="false"/>
-
-
--
--
--
--
diff --git a/eclipse-adjust-droplets.patch b/eclipse-adjust-droplets.patch
index bf88f61..f7044e5 100644
--- a/eclipse-adjust-droplets.patch
+++ b/eclipse-adjust-droplets.patch
@@ -2,7 +2,7 @@ diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/e
index 5fc0e73..ed7e4fa 100644
--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java
+++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java
-@@ -144,7 +144,20 @@ public class EngineActivator implements BundleActivator {
+@@ -147,7 +147,20 @@ public class EngineActivator implements BundleActivator {
}
continue;
}
@@ -28,7 +28,7 @@ diff --git rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/
index 12e4d89..77945ef 100644
--- rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
+++ rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
-@@ -156,7 +156,20 @@ public class SimpleConfiguratorUtils {
+@@ -155,7 +155,20 @@ public class SimpleConfiguratorUtils {
}
continue;
}
@@ -54,16 +54,16 @@ diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/e
index 3d7e313..debbfb8 100644
--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
+++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
-@@ -238,10 +238,11 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
+@@ -236,10 +236,11 @@
|| "feature".equals(cap.getName())) { //$NON-NLS-1$
featureOrBundle = true;
}
-- } else if (Boolean.TRUE.equals(unit.getProperties().get("org.eclipse.equinox.p2.type.group"))) { //$NON-NLS-1$
+- } else if (Boolean.TRUE.equals(Boolean.valueOf(unit.getProperties().get("org.eclipse.equinox.p2.type.group")))) { //$NON-NLS-1$
- featureOrBundle = true;
}
}
-+ if (Boolean.TRUE.toString().equals(unit.getProperties().get("org.eclipse.equinox.p2.type.group"))) { //$NON-NLS-1$
-+ featureOrBundle = true;
++ if (Boolean.TRUE.equals(Boolean.valueOf(unit.getProperties().get("org.eclipse.equinox.p2.type.group")))) { //$NON-NLS-1$
++ featureOrBundle = true;
+ }
if (featureOrBundle && !added.contains(unit)) {
added.add(unit);
diff --git a/eclipse-bug-386377.patch b/eclipse-bug-386377.patch
index c912db5..5200205 100644
--- a/eclipse-bug-386377.patch
+++ b/eclipse-bug-386377.patch
@@ -38,46 +38,6 @@
+
+
---- rt.equinox.framework/bundles/org.eclipse.equinox.launcher.win32.win32.x86_64/pom.xml.orig 2014-04-15 14:32:03.000000000 +0100
-+++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher.win32.win32.x86_64/pom.xml 2014-04-16 15:53:08.145402094 +0100
-@@ -27,4 +27,37 @@
- win32
- x86_64
-
-+
-+
-+ build-native-launchers-win32.win32.x86_64
-+
-+
-+ native
-+ win32.win32.x86_64
-+
-+
-+
-+
-+
-+ maven-antrun-plugin
-+ 1.7
-+
-+
-+ compile-executable-natives
-+ generate-resources
-+
-+
-+
-+
-+
-+
-+ run
-+
-+
-+
-+
-+
-+
-+
-+
-
--- rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le/pom.xml.orig 2014-04-16 15:57:02.805249103 +0100
+++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le/pom.xml 2014-04-16 15:57:26.204834155 +0100
@@ -27,4 +27,37 @@
@@ -158,86 +118,6 @@
+
+
---- rt.equinox.framework/bundles/org.eclipse.equinox.launcher.win32.win32.x86/pom.xml.orig 2014-04-15 14:32:03.000000000 +0100
-+++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher.win32.win32.x86/pom.xml 2014-04-16 15:53:08.145402094 +0100
-@@ -27,4 +27,37 @@
- win32
- x86
-
-+
-+
-+ build-native-launchers-win32.win32.x86
-+
-+
-+ native
-+ win32.win32.x86
-+
-+
-+
-+
-+
-+ maven-antrun-plugin
-+ 1.7
-+
-+
-+ compile-executable-natives
-+ generate-resources
-+
-+
-+
-+
-+
-+
-+ run
-+
-+
-+
-+
-+
-+
-+
-+
-
---- rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.s390/pom.xml.orig 2014-04-15 14:32:03.000000000 +0100
-+++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.s390/pom.xml 2014-04-16 15:53:08.145402094 +0100
-@@ -27,4 +27,37 @@
- gtk
- s390
-
-+
-+
-+ build-native-launchers-gtk.linux.s390
-+
-+
-+ native
-+ gtk.linux.s390
-+
-+
-+
-+
-+
-+ maven-antrun-plugin
-+ 1.7
-+
-+
-+ compile-executable-natives
-+ generate-resources
-+
-+
-+
-+
-+
-+
-+ run
-+
-+
-+
-+
-+
-+
-+
-+
-
--- rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.s390x/pom.xml.orig 2014-04-15 14:32:03.000000000 +0100
+++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.s390x/pom.xml 2014-04-16 15:53:08.146402075 +0100
@@ -27,4 +27,37 @@
@@ -318,43 +198,3 @@
+
+
---- rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc/pom.xml.orig 2014-04-15 14:32:03.000000000 +0100
-+++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.ppc/pom.xml 2014-04-16 15:53:08.146402075 +0100
-@@ -27,4 +27,37 @@
- gtk
- ppc
-
-+
-+
-+ build-native-launchers-gtk.linux.ppc
-+
-+
-+ native
-+ gtk.linux.ppc
-+
-+
-+
-+
-+
-+ maven-antrun-plugin
-+ 1.7
-+
-+
-+ compile-executable-natives
-+ generate-resources
-+
-+
-+
-+
-+
-+
-+ run
-+
-+
-+
-+
-+
-+
-+
-+
-
diff --git a/eclipse-debug-symbols.patch b/eclipse-debug-symbols.patch
index 5c4a70e..df2301a 100644
--- a/eclipse-debug-symbols.patch
+++ b/eclipse-debug-symbols.patch
@@ -1,27 +1,30 @@
--- eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_linux.mak.orig 2014-03-12 10:43:26.000000000 +0000
+++ eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_linux.mak 2014-03-12 14:36:44.130938292 +0000
-@@ -115,7 +115,7 @@
- WEBKIT_OBJECTS = swt.o webkit.o webkit_structs.o webkit_stats.o
+@@ -121,7 +121,7 @@
+ WEBKIT_OBJECTS = swt.o webkitgtk.o webkitgtk_structs.o webkitgtk_stats.o webkitgtk_custom.o
GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
-CFLAGS = -O -Wall \
+CFLAGS = -g -O -Wall \
-DSWT_VERSION=$(SWT_VERSION) \
$(NATIVE_STATS) \
- -DLINUX -DGTK \
-@@ -125,12 +125,6 @@
+ $(SWT_DEBUG) \
+@@ -133,15 +133,6 @@
${SWT_PTR_CFLAGS}
LFLAGS = -shared -fPIC ${SWT_LFLAGS}
-ifndef NO_STRIP
+- # -s = Remove all symbol table and relocation information from the executable.
+- # i.e, more efficent code, but removes debug information. Should not be used if you want to debug.
+- # https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
+- # http://stackoverflow.com/questions/14175040/effects-of-removing-all-symbol-table-and-relocation-information-from-an-executab
- AWT_LFLAGS := $(AWT_LFLAGS) -s
- MOZILLALFLAGS := $(MOZILLALFLAGS) -s
- LFLAGS := $(LFLAGS) -s
-endif
--
+
all: make_swt make_atk make_glx make_webkit
- #
--- rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/make_linux.mak.orig 2014-03-12 14:47:37.513191381 +0000
+++ rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/make_linux.mak 2014-03-12 14:47:45.672200015 +0000
@@ -48,7 +48,7 @@
diff --git a/eclipse-feature-plugins-to-category-ius.patch b/eclipse-feature-plugins-to-category-ius.patch
index 33ca499..e8bb24d 100644
--- a/eclipse-feature-plugins-to-category-ius.patch
+++ b/eclipse-feature-plugins-to-category-ius.patch
@@ -70,7 +70,7 @@ index 88a8daa..382c5ee 100644
-
-
-
-
+-
+-
+-
+-
-+
-+
-+
++
++
++
+
++
+
++
+
+
++
++
+
+
+
@@ -207,9 +225,7 @@ index 88a8daa..382c5ee 100644
+
+
+
-+
-+
-+
++
--- eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml.orig 2017-01-13 11:29:16.362473652 +0000
+++ eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml 2017-01-13 11:29:16.371473551 +0000
@@ -276,7 +292,7 @@ index 88a8daa..382c5ee 100644
id="org.eclipse.e4.core.di"
download-size="0"
install-size="0"
-@@ -165,20 +109,6 @@
+@@ -165,13 +109,6 @@
unpack="false"/>
-
-
+
+
-
-
+
-+
+
++
+
++
++
+
-+
++
++
+
+
+
-+
-+
-+
-+
++
+
--- eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml.orig 2017-01-04 10:54:36.000000000 +0000
+++ eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml 2017-01-13 11:28:25.827041896 +0000
-@@ -61,11 +61,6 @@
+@@ -61,12 +61,7 @@
eclipse-plugin
@@ -383,9 +406,20 @@ index 88a8daa..382c5ee 100644
-
-
- eclipse-plugin
- javax.el
+- javax.el
++ javax.el-api
+ 0.0.0
+
+
+@@ -76,7 +71,7 @@
+
+
+ eclipse-plugin
+- javax.servlet
++ javax.servlet-api
0.0.0
+
@@ -96,7 +91,7 @@
@@ -397,9 +431,9 @@ index 88a8daa..382c5ee 100644
--- eclipse.platform.ui.tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF.orig 2017-02-15 10:01:24.202436806 +0000
+++ eclipse.platform.ui.tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF 2017-02-15 10:01:35.454301845 +0000
-@@ -38,8 +38,7 @@
- org.eclipse.e4.core.commands;bundle-version="0.10.0",
- org.eclipse.e4.ui.dialogs;bundle-version="1.0.0"
+@@ -39,8 +39,7 @@
+ org.eclipse.e4.ui.dialogs;bundle-version="1.0.0",
+ org.eclipse.e4.emf.xpath
Bundle-ActivationPolicy: lazy
-Import-Package: javax.annotation,
- javax.inject;version="1.0.0",
diff --git a/eclipse-fix-tests.patch b/eclipse-fix-tests.patch
index 9061d81..82cfc90 100644
--- a/eclipse-fix-tests.patch
+++ b/eclipse-fix-tests.patch
@@ -246,3 +246,30 @@ index bc8963d..fbe4da3 100644
+ }
+}
+
+--- eclipse.jdt.core/org.eclipse.jdt.core.tests.builder/pom.xml.orig 2017-04-07 10:44:33.764607961 +0100
++++ eclipse.jdt.core/org.eclipse.jdt.core.tests.builder/pom.xml 2017-04-07 11:26:44.511961798 +0100
+@@ -26,4 +26,24 @@
+ org.eclipse.jdt.core.tests.builder.BuilderTests
+ ${project.artifactId}
+
++
++
++
++
++ org.eclipse.tycho
++ target-platform-configuration
++
++
++
++
++ eclipse-plugin
++ org.eclipse.jdt.annotation
++ 0.0.0
++
++
++
++
++
++
++
+
diff --git a/eclipse-hide-droplets-from-install-wizard.patch b/eclipse-hide-droplets-from-install-wizard.patch
index 85ef057..9de6347 100644
--- a/eclipse-hide-droplets-from-install-wizard.patch
+++ b/eclipse-hide-droplets-from-install-wizard.patch
@@ -24,7 +24,7 @@ index 8d08101..59567c0 100644
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.ui.*;
import org.eclipse.equinox.internal.p2.ui.query.IUViewQueryContext;
-@@ -314,6 +315,19 @@ public class RepositorySelectionGroup {
+@@ -325,6 +326,19 @@ public class RepositorySelectionGroup {
void fillRepoCombo(final String selection) {
RepositoryTracker tracker = ui.getRepositoryTracker();
URI[] sites = tracker.getKnownRepositories(ui.getSession());
@@ -48,7 +48,7 @@ diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equin
index c0f2ca1..03515c7 100644
--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
+++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
-@@ -130,9 +130,22 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
+@@ -132,9 +132,22 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
if (cachedElements == null) {
Object[] children = super.fetchChildren(o, monitor);
cachedElements = new Hashtable(children.length);
diff --git a/eclipse-jetty-9.4.patch b/eclipse-jetty-9.4.patch
deleted file mode 100644
index 4754f08..0000000
--- a/eclipse-jetty-9.4.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty9/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java.old 2016-06-15 10:29:35.370386868 +0100
-+++ rt.equinox.bundles/bundles/org.eclipse.equinox.http.jetty9/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java 2016-06-15 10:59:31.120348432 +0100
-@@ -26,7 +26,6 @@
- import org.eclipse.equinox.http.servlet.HttpServiceMultipartServlet;
- import org.eclipse.equinox.http.servlet.HttpServiceServlet;
- import org.eclipse.jetty.server.*;
--import org.eclipse.jetty.server.session.HashSessionManager;
- import org.eclipse.jetty.server.session.SessionHandler;
- import org.eclipse.jetty.servlet.ServletContextHandler;
- import org.eclipse.jetty.servlet.ServletHolder;
-@@ -144,9 +143,9 @@
- // This servlet has no mapping as it's only used from named dispatcher
- httpContext.getServletHandler().addServlet(multiPartHolder);
-
-- SessionManager sessionManager = httpContext.getSessionHandler().getSessionManager();
-+ SessionHandler sessionHandler = httpContext.getSessionHandler();
- try {
-- sessionManager.addEventListener((HttpSessionIdListener) holder.getServlet());
-+ sessionHandler.addEventListener((HttpSessionIdListener) holder.getServlet());
- } catch (ServletException e) {
- throw new ConfigurationException(pid, e.getMessage(), e);
- }
-@@ -241,10 +240,10 @@
- contextWorkDir.mkdir();
- httpContext.setAttribute(CONTEXT_TEMPDIR, contextWorkDir);
-
-- HashSessionManager sessionManager = new HashSessionManager();
-- sessionManager.setMaxInactiveInterval(Details.getInt(dictionary, JettyConstants.CONTEXT_SESSIONINACTIVEINTERVAL, -1));
-+ SessionHandler sessionHandler = new SessionHandler();
-+ sessionHandler.setMaxInactiveInterval(Details.getInt(dictionary, JettyConstants.CONTEXT_SESSIONINACTIVEINTERVAL, -1));
-
-- httpContext.setSessionHandler(new SessionHandler(sessionManager));
-+ httpContext.setSessionHandler(sessionHandler);
-
- return httpContext;
- }
diff --git a/eclipse-lucene-5.patch b/eclipse-lucene-5.patch
deleted file mode 100644
index 0d69a3e..0000000
--- a/eclipse-lucene-5.patch
+++ /dev/null
@@ -1,1934 +0,0 @@
-From e9b5adb1d0477a50111afe5cf7736c542b7e4998 Mon Sep 17 00:00:00 2001
-From: Sopot Cela
-Date: Thu, 21 May 2015 13:48:41 +0200
-Subject: [PATCH] Bug 466829 - Upgrade platform.ua to Lucene 5.1.0
-
-Change-Id: I882188205c2c1e2cc1106108680dd4e94570a975
-Signed-off-by: Sopot Cela
----
-
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/META-INF/MANIFEST.MF b/org.eclipse.help.base/META-INF/MANIFEST.MF
-index ee34c8e..e4bd703 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/META-INF/MANIFEST.MF
-+++ b/eclipse.platform.ua/org.eclipse.help.base/META-INF/MANIFEST.MF
-@@ -43,9 +43,11 @@
- org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
- org.eclipse.help;bundle-version="[3.5.0,4.0.0)";visibility:=reexport,
- org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)",
-- org.apache.lucene.analysis;bundle-version="[3.5.0,4.0.0)",
-- org.apache.lucene.core;bundle-version="[3.5.0,4.0.0)",
-- org.eclipse.core.net;bundle-version="1.2.200"
-+ org.eclipse.core.net;bundle-version="1.2.200",
-+ org.apache.lucene.analyzers-common;bundle-version="5.1.0",
-+ org.apache.lucene.core;bundle-version="5.1.0",
-+ org.apache.lucene.queryparser;bundle-version="5.1.0",
-+ org.apache.lucene.analyzers-smartcn;bundle-version="5.1.0"
- Import-Package: com.ibm.icu.text,
- org.eclipse.equinox.http.jetty;resolution:=optional
- Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/plugin.xml b/org.eclipse.help.base/plugin.xml
-index 07a5a22..4daf3f0 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/plugin.xml
-+++ b/eclipse.platform.ua/org.eclipse.help.base/plugin.xml
-@@ -83,7 +83,7 @@
-
-
-+ class="org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer">
-
- StopFilter->PorterStemFilter
- */
- public final class Analyzer_en extends Analyzer {
-+
- /**
- * Constructor for Analyzer_en.
- */
-@@ -27,19 +34,25 @@
- super();
- }
- /**
-- * Creates a TokenStream which tokenizes all the text in the provided
-+ * Creates a TokenStreamComponents which tokenizes all the text in the provided
- * Reader.
- */
- @Override
-- public final TokenStream tokenStream(String fieldName, Reader reader) {
-- return new PorterStemFilter(new StopFilter(Version.LUCENE_30, new LowerCaseAndDigitsTokenizer(reader), getStopWords(), false));
-+ public final TokenStreamComponents createComponents(String fieldName) {
-+ final Tokenizer source;
-+ source = new LowerCaseAndDigitsTokenizer();
-+ TokenStream result = new EnglishPossessiveFilter(source);
-+ result = new StopFilter(result, new CharArraySet(getStopWords(), false));
-+ result = new KeywordRepeatFilter(result);
-+ result = new PorterStemFilter(result);
-+ return new TokenStreamComponents(source, result);
- }
-
-- private Set stopWords;
-+ private List stopWords;
-
-- private Set getStopWords() {
-+ private List getStopWords() {
- if ( stopWords == null ) {
-- stopWords = new HashSet<>();
-+ stopWords = new ArrayList<>();
- for (int i = 0; i < STOP_WORDS.length; i++) {
- stopWords.add(STOP_WORDS[i]);
- }
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java
-index 4109474..e3c8722 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java
-@@ -7,22 +7,20 @@
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Alexander Kurtakov - Bug 460787
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.help.internal.search;
-
--import java.io.Reader;
- import java.util.Locale;
- import java.util.StringTokenizer;
-
--import com.ibm.icu.text.BreakIterator;
--
- import org.apache.lucene.analysis.Analyzer;
--import org.apache.lucene.analysis.LowerCaseFilter;
--import org.apache.lucene.analysis.TokenStream;
--import org.apache.lucene.util.Version;
-+import org.apache.lucene.analysis.Tokenizer;
-+import org.apache.lucene.analysis.core.LowerCaseFilter;
-+import org.eclipse.core.runtime.Platform;
- import org.eclipse.help.internal.base.HelpBasePlugin;
-
--import org.eclipse.core.runtime.Platform;
-+import com.ibm.icu.text.BreakIterator;
-
-
- /**
-@@ -84,12 +82,14 @@
- }
-
- /**
-- * Creates a TokenStream which tokenizes all the text in the provided
-+ * Creates a TokenStreamComponents which tokenizes all the text in the provided
- * Reader.
- */
- @Override
-- public final TokenStream tokenStream(String fieldName, Reader reader) {
-- return new LowerCaseFilter(Version.LUCENE_30, new WordTokenStream(fieldName, reader, locale));
-+ public final TokenStreamComponents createComponents(String fieldName) {
-+ Tokenizer source = new WordTokenStream(locale);
-+ LowerCaseFilter filter = new LowerCaseFilter(source);
-+ return new TokenStreamComponents(source, filter);
- }
-
- /**
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java
-index a475688..cbb2472 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java
-@@ -8,29 +8,27 @@
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Alexander Kurtakov - Bug 460787
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.help.internal.search;
-
--import java.io.*;
--
--import org.apache.lucene.analysis.*;
--import org.apache.lucene.util.Version;
-+import org.apache.lucene.analysis.util.CharTokenizer;
-
- /**
- * Tokenizer breaking words around letters or digits.
- */
- public class LowerCaseAndDigitsTokenizer extends CharTokenizer {
-
-- public LowerCaseAndDigitsTokenizer(Reader input) {
-- super(Version.LUCENE_30, input);
-+ public LowerCaseAndDigitsTokenizer() {
-+ super();
- }
- @Override
-- protected char normalize(char c) {
-+ protected int normalize(int c) {
- return Character.toLowerCase(c);
- }
-
- @Override
-- protected boolean isTokenChar(char c) {
-+ public boolean isTokenChar(int c) {
- return Character.isLetterOrDigit(c);
- }
-
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/LuceneSearchDocument.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/LuceneSearchDocument.java
-index 60a545d..804bf5e 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/LuceneSearchDocument.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/LuceneSearchDocument.java
-@@ -7,6 +7,7 @@
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
-
- package org.eclipse.help.internal.search;
-@@ -16,6 +17,8 @@
-
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
-+import org.apache.lucene.document.StoredField;
-+import org.apache.lucene.document.TextField;
- import org.eclipse.help.search.ISearchDocument;
-
- /**
-@@ -32,25 +35,25 @@
-
- @Override
- public void setTitle(String title) {
-- doc.add(new Field("title", title, Field.Store.NO, Field.Index.ANALYZED)); //$NON-NLS-1$
-- doc.add(new Field("exact_title", title, Field.Store.NO, Field.Index.ANALYZED)); //$NON-NLS-1$
-- doc.add(new Field("raw_title", title, Field.Store.YES, Field.Index.NO)); //$NON-NLS-1$
-+ doc.add(new TextField("title", title, Field.Store.NO)); //$NON-NLS-1$
-+ doc.add(new TextField("exact_title", title, Field.Store.NO)); //$NON-NLS-1$
-+ doc.add(new StoredField("raw_title", title)); //$NON-NLS-1$
- }
-
- @Override
- public void setSummary(String summary) {
-- doc.add(new Field("summary", summary, Field.Store.YES, Field.Index.NO)); //$NON-NLS-1$
-+ doc.add(new StoredField("summary", summary)); //$NON-NLS-1$
- }
-
- @Override
- public void addContents(String contents) {
-- doc.add(new Field("contents", new StringReader(contents))); //$NON-NLS-1$
-- doc.add(new Field("exact_contents", new StringReader(contents))); //$NON-NLS-1$
-+ doc.add(new TextField("contents", new StringReader(contents))); //$NON-NLS-1$
-+ doc.add(new TextField("exact_contents", new StringReader(contents))); //$NON-NLS-1$
- }
-
- @Override
- public void setHasFilters(boolean hasFilters) {
-- doc.add(new Field("filters", Boolean.toString(hasFilters), Field.Store.YES, Field.Index.NO)); //$NON-NLS-1$
-+ doc.add(new StoredField("filters", Boolean.toString(hasFilters))); //$NON-NLS-1$
- }
-
- public Document getDocument() {
-@@ -59,8 +62,8 @@
-
- @Override
- public void addContents(Reader contents, Reader exactContents) {
-- doc.add(new Field("contents", contents)); //$NON-NLS-1$
-- doc.add(new Field("exact_contents", exactContents)); //$NON-NLS-1$
-+ doc.add(new TextField("contents", contents)); //$NON-NLS-1$
-+ doc.add(new TextField("exact_contents", exactContents)); //$NON-NLS-1$
- }
-
- }
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/PluginIndex.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/PluginIndex.java
-index ca9cd67..7952c8d 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/PluginIndex.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/PluginIndex.java
-@@ -7,6 +7,7 @@
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.help.internal.search;
-
-@@ -150,6 +151,7 @@
- .getProperty(SearchIndex.DEPENDENCIES_KEY_ANALYZER);
- if (!targetIndex.isLuceneCompatible(lucene)
- || !targetIndex.isAnalyzerCompatible(analyzer)) {
-+ HelpBasePlugin.logError("Error trying to consume Lucene index from bundle "+bundle.toString()+". Please use an index built with Lucene 5 or higher.", null); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
- } catch (MalformedURLException mue) {
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java
-deleted file mode 100644
-index 08cf58a..0000000
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java
-+++ /dev/null
-@@ -1,455 +0,0 @@
--/*******************************************************************************
-- * Copyright (c) 2000, 2016 IBM Corporation and others.
-- * All rights reserved. This program and the accompanying materials
-- * are made available under the terms of the Eclipse Public License v1.0
-- * which accompanies this distribution, and is available at
-- * http://www.eclipse.org/legal/epl-v10.html
-- *
-- * Contributors:
-- * IBM Corporation - initial API and implementation
-- * Chris Torrence - patch for bug Bug 107648
-- *******************************************************************************/
--package org.eclipse.help.internal.search;
--import java.io.*;
--import java.util.ArrayList;
--import java.util.Collection;
--import java.util.Iterator;
--import java.util.List;
--import java.util.Locale;
--import java.util.StringTokenizer;
--
--import org.apache.lucene.analysis.*;
--import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
--import org.apache.lucene.index.*;
--import org.apache.lucene.search.*;
--import org.eclipse.help.internal.base.*;
--/**
-- * Build query acceptable by the search engine.
-- */
--public class QueryBuilder {
-- // Maximum allowed number of terms
-- private static final int MAX_TERMS = 10;
-- // Maximum allowed number of ORs
-- private static final int MAX_UNIONS = 4;
-- // Maximum allowed number terms with wild cards
-- private static final int MAX_WILD_TERMS = 2;
-- // Query from user
-- private String searchWords;
-- // Descriptor of Analyzer to process the query words
-- private AnalyzerDescriptor analyzerDesc;
-- // Analyzer to process the query words
-- private Analyzer analyzer;
-- // List of QueryWordsToken
-- private List analyzedTokens;
-- // List of words to highlight
-- private List highlightWords = new ArrayList<>();
-- private Locale locale;
-- /**
-- * Creates a query builder for the search word. The search word is processed
-- * by a lexical analyzer.
-- */
-- public QueryBuilder(String searchWords, AnalyzerDescriptor analyzerDesc) {
-- this.searchWords = searchWords;
-- String language = analyzerDesc.getLang();
-- if (language.length() >= 5) {
-- this.locale = new Locale(language.substring(0, 2), language
-- .substring(3, 5));
-- } else {
-- this.locale = new Locale(language.substring(0, 2), ""); //$NON-NLS-1$
-- }
-- this.analyzerDesc = analyzerDesc;
-- this.analyzer = analyzerDesc.getAnalyzer();
-- }
-- /**
-- * Splits user query into tokens and returns a list of QueryWordsToken's.
-- */
-- private List tokenizeUserQuery(String searchWords) {
-- List tokenList = new ArrayList<>();
-- //Divide along quotation marks
-- //StringTokenizer qTokenizer = new StringTokenizer(searchWords.trim(),
-- // "\"", true); //$NON-NLS-1$
-- boolean withinQuotation = false;
-- String quotedString = ""; //$NON-NLS-1$
-- int termCount = 0;// keep track of number of terms to disallow too many
--
-- int fromIndex = -1;
-- searchWords = searchWords.trim();
-- while((fromIndex = searchWords.indexOf("\"", fromIndex+1))!= -1){ //$NON-NLS-1$
-- withinQuotation = !withinQuotation;
-- }
-- if( withinQuotation ) {
-- searchWords = searchWords + "\""; //$NON-NLS-1$
-- withinQuotation = !withinQuotation;
-- }
--
-- StringTokenizer qTokenizer = new StringTokenizer(searchWords,"\"",true); //$NON-NLS-1$
-- int orCount = 0; // keep track of number of ORs to disallow too many
-- while (qTokenizer.hasMoreTokens()) {
-- String curToken = qTokenizer.nextToken();
-- if (curToken.equals("\"")) { //$NON-NLS-1$
-- if (withinQuotation) {
-- // check for too many terms
-- if (BaseHelpSystem.getMode() == BaseHelpSystem.MODE_INFOCENTER
-- && ++termCount > MAX_TERMS) {
-- throw new QueryTooComplexException();
-- }
-- tokenList.add(QueryWordsToken.exactPhrase(quotedString));
-- } else {
-- quotedString = ""; //$NON-NLS-1$
-- }
-- withinQuotation = !withinQuotation;
-- continue;
-- } else if (withinQuotation) {
-- quotedString = curToken;
-- continue;
-- } else {
-- //divide unquoted strings along white space
-- StringTokenizer parser = new StringTokenizer(curToken.trim());
-- while (parser.hasMoreTokens()) {
-- String token = parser.nextToken();
-- if (token.equalsIgnoreCase(QueryWordsToken.AND().value)) {
-- tokenList.add(QueryWordsToken.AND());
-- } else if (token
-- .equalsIgnoreCase(QueryWordsToken.OR().value)) {
-- // Check for too many OR terms
-- if (BaseHelpSystem.getMode() == BaseHelpSystem.MODE_INFOCENTER
-- && ++orCount > MAX_UNIONS) {
-- throw new QueryTooComplexException();
-- }
-- tokenList.add(QueryWordsToken.OR());
-- } else if (token
-- .equalsIgnoreCase(QueryWordsToken.NOT().value)) {
-- tokenList.add(QueryWordsToken.NOT());
-- } else {
-- // check for too many terms
-- if (BaseHelpSystem.getMode() == BaseHelpSystem.MODE_INFOCENTER
-- && ++termCount > MAX_TERMS) {
-- throw new QueryTooComplexException();
-- }
-- tokenList.add(QueryWordsToken.word(token));
-- }
-- }
-- }
-- }
-- return tokenList;
-- }
-- /**
-- * Apply the Analyzer to the search tokens and return the list of processed
-- * QueryWordsToken's.
-- */
-- private List analyzeTokens(List tokens) {
-- boolean isTokenAfterNot = false;
-- List newTokens = new ArrayList<>();
-- int wildCardTermCount = 0;
-- for (int i = 0; i < tokens.size(); i++) {
-- QueryWordsToken token = tokens.get(i);
-- if (token.type == QueryWordsToken.WORD) {
-- int questionMIndex = token.value.indexOf('?');
-- int starIndex = token.value.indexOf('*');
-- if (starIndex >= 0 || questionMIndex >= 0) {
-- if (BaseHelpSystem.getMode() == BaseHelpSystem.MODE_INFOCENTER
-- && ++wildCardTermCount > MAX_WILD_TERMS) {
-- throw new QueryTooComplexException();
-- }
-- newTokens.add(QueryWordsToken.word(token.value
-- .toLowerCase(locale)));
-- // add word to the list of words to highlight
-- if (!isTokenAfterNot && !highlightWords.contains(token.value)) {
-- highlightWords.add(token.value);
-- }
-- } else {
-- List wordList = analyzeText(analyzer, "contents", //$NON-NLS-1$
-- token.value);
-- if (wordList.size() > 0) {
-- if (!isTokenAfterNot && !highlightWords.contains(token.value)) {
-- // add original word to the list of words to
-- // highlight
-- highlightWords.add(token.value);
-- }
-- if (wordList.size() == 1) {
-- String word = wordList.get(0);
-- newTokens.add(QueryWordsToken.word(word));
-- // add analyzed word to the list of words to
-- // highlight
-- // this is required to highlight stemmed words
-- if (!isTokenAfterNot && !highlightWords.contains(word)) {
-- highlightWords.add(word);
-- }
-- } else {
-- QueryWordsPhrase phrase = QueryWordsToken.phrase();
-- for (Iterator it = wordList.iterator(); it
-- .hasNext();) {
-- String word = it.next();
-- phrase.addWord(word);
-- // add each analyzed word to the list of words
-- // to highlight
-- // this is only required to highlight stemmed
-- // words.
-- // Adding words should not be done when
-- // DefaultAnalyzer is used,
-- // because it does not perform stemming and
-- // common words removal
-- // which would result in common characters
-- // highlighted all over (bug 30263)
-- if (!analyzerDesc.getId().startsWith(
-- HelpBasePlugin.PLUGIN_ID + "#")) { //$NON-NLS-1$
-- if (!isTokenAfterNot && !highlightWords.contains(word)) {
-- highlightWords.add(word);
-- }
-- }
-- }
-- newTokens.add(phrase);
-- }
-- }
-- }
-- } else if (// forget ANDs
-- /*
-- * token.type == SearchQueryToken.AND ||
-- */
-- token.type == QueryWordsToken.OR
-- || token.type == QueryWordsToken.NOT)
-- newTokens.add(token);
-- else if (token.type == QueryWordsToken.EXACT_PHRASE) {
-- List wordList = analyzeText(analyzer, "exact_contents", //$NON-NLS-1$
-- token.value);
-- if (wordList.size() > 0) {
-- if (!isTokenAfterNot && !highlightWords.contains(token.value)) {
-- // add original word to the list of words to highlight
-- highlightWords.add(token.value);
-- }
-- }
-- QueryWordsExactPhrase phrase = QueryWordsToken.exactPhrase();
-- for (Iterator it = wordList.iterator(); it.hasNext();) {
-- String word = it.next();
-- phrase.addWord(word);
-- // add analyzed word to the list of words to highlight
-- // if (!highlightWords.contains(word))
-- // highlightWords.add(word);
-- }
-- // add phrase only if not empty
-- if (phrase.getWords().size() > 0) {
-- newTokens.add(phrase);
-- }
-- }
-- isTokenAfterNot = (token.type == QueryWordsToken.NOT);
-- }
-- return newTokens;
-- }
-- /**
-- * Get a list of tokens corresponding to a search word or phrase
-- *
-- * @return List of String
-- */
-- private List analyzeText(Analyzer analyzer, String fieldName, String text) {
-- List words = new ArrayList<>(1);
-- try (Reader reader = new StringReader(text); TokenStream tStream = analyzer.tokenStream(fieldName, reader)) {
-- CharTermAttribute termAttribute = tStream.getAttribute(CharTermAttribute.class);
-- while (tStream.incrementToken()) {
-- String term = termAttribute.toString();
-- words.add(term);
-- }
-- } catch (IOException ioe) {
-- }
--
-- return words;
-- }
-- /**
-- * Obtains Lucene Query from tokens
-- *
-- * @return Query or null if no query could be created
-- */
-- private Query createLuceneQuery(List searchTokens, String[] fieldNames,
-- float[] boosts) {
-- // Get queries for parts separated by OR
-- List requiredQueries = getRequiredQueries(searchTokens, fieldNames,
-- boosts);
-- if (requiredQueries.size() == 0)
-- return null;
-- else if (requiredQueries.size() <= 1)
-- return requiredQueries.get(0);
-- else
-- /* if (requiredQueries.size() > 1) */
-- // OR queries
-- return (orQueries(requiredQueries));
-- }
-- /**
-- * Obtains Lucene queries for token sequences separated at OR.
-- *
-- * @return List of Query (could be empty)
-- */
-- private List getRequiredQueries(List tokens, String[] fieldNames,
-- float[] boosts) {
-- List oredQueries = new ArrayList<>();
-- ArrayList requiredQueryTokens = new ArrayList<>();
-- for (int i = 0; i < tokens.size(); i++) {
-- QueryWordsToken token = tokens.get(i);
-- if (token.type != QueryWordsToken.OR) {
-- requiredQueryTokens.add(token);
-- } else {
-- Query reqQuery = getRequiredQuery(requiredQueryTokens,
-- fieldNames, boosts);
-- if (reqQuery != null)
-- oredQueries.add(reqQuery);
-- requiredQueryTokens = new ArrayList<>();
-- }
-- }
-- Query reqQuery = getRequiredQuery(requiredQueryTokens, fieldNames,
-- boosts);
-- if (reqQuery != null)
-- oredQueries.add(reqQuery);
-- return oredQueries;
-- }
-- private Query orQueries(Collection queries) {
-- BooleanQuery bq = new BooleanQuery();
-- for (Iterator it = queries.iterator(); it.hasNext();) {
-- Query q = it.next();
-- bq.add(q, BooleanClause.Occur.SHOULD);
-- }
-- return bq;
-- }
-- /**
-- * Obtains Lucene Query for tokens containing only AND and NOT operators.
-- *
-- * @return BooleanQuery or null if no query could be created from the tokens
-- */
-- private Query getRequiredQuery(List requiredTokens, String[] fieldNames,
-- float[] boosts) {
-- BooleanQuery retQuery = new BooleanQuery();
-- boolean requiredTermExist = false;
-- // Parse tokens left to right
-- QueryWordsToken operator = null;
-- for (int i = 0; i < requiredTokens.size(); i++) {
-- QueryWordsToken token = requiredTokens.get(i);
-- if (token.type == QueryWordsToken.AND
-- || token.type == QueryWordsToken.NOT) {
-- operator = token;
-- continue;
-- }
-- // Creates queries for all fields
-- Query qs[] = new Query[fieldNames.length];
-- for (int f = 0; f < fieldNames.length; f++) {
-- qs[f] = token.createLuceneQuery(fieldNames[f], boosts[f]);
-- }
-- // creates the boolean query of all fields
-- Query q = qs[0];
-- if (fieldNames.length > 1) {
-- BooleanQuery allFieldsQuery = new BooleanQuery();
-- for (int f = 0; f < fieldNames.length; f++)
-- allFieldsQuery.add(qs[f], BooleanClause.Occur.SHOULD);
-- q = allFieldsQuery;
-- }
-- if (operator != null && operator.type == QueryWordsToken.NOT) {
-- retQuery.add(q, BooleanClause.Occur.MUST_NOT); // add as prohibited
-- } else {
-- retQuery.add(q, BooleanClause.Occur.MUST); // add as required
-- requiredTermExist = true;
-- }
-- }
-- if (!requiredTermExist) {
-- return null; // cannot search for prohibited only
-- }
-- return retQuery;
-- }
-- private Query getLuceneQuery(String[] fieldNames, float[] boosts) {
-- Query luceneQuery = createLuceneQuery(analyzedTokens, fieldNames,
-- boosts);
-- return luceneQuery;
-- }
-- /**
-- * @param fieldNames -
-- * Collection of field names of type String (e.g. "h1"); the
-- * search will be performed on the given fields
-- * @param fieldSearchOnly -
-- * boolean indicating if field only search should be performed;
-- * if set to false, default field "contents" and all other fields
-- * will be searched
-- */
-- public Query getLuceneQuery(Collection fieldNames, boolean fieldSearchOnly)
-- throws QueryTooComplexException {
-- // split search query into tokens
-- List userTokens = tokenizeUserQuery(searchWords);
-- analyzedTokens = analyzeTokens(userTokens);
-- return buildLuceneQuery(fieldNames, fieldSearchOnly);
-- }
-- /**
-- * @param fieldNames -
-- * Collection of field names of type String (e.g. "h1"); the
-- * search will be performed on the given fields
-- * @param fieldSearchOnly -
-- * boolean indicating if field only search should be performed;
-- * if set to false, default field "contents" and all other fields
-- * will be searched
-- */
-- private Query buildLuceneQuery(Collection fieldNames,
-- boolean fieldSearchOnly) {
-- String[] fields;
-- float[] boosts;
-- if (fieldSearchOnly) {
-- fields = new String[fieldNames.size()];
-- boosts = new float[fieldNames.size()];
-- Iterator fieldNamesIt = fieldNames.iterator();
-- for (int i = 0; i < fieldNames.size(); i++) {
-- fields[i] = fieldNamesIt.next();
-- boosts[i] = 5.0f;
-- }
-- } else {
-- fields = new String[fieldNames.size() + 2];
-- boosts = new float[fieldNames.size() + 2];
-- Iterator fieldNamesIt = fieldNames.iterator();
-- for (int i = 0; i < fieldNames.size(); i++) {
-- fields[i] = fieldNamesIt.next();
-- boosts[i] = 5.0f;
-- }
-- fields[fieldNames.size()] = "contents"; //$NON-NLS-1$
-- boosts[fieldNames.size()] = 1.0f;
-- fields[fieldNames.size()+1] = "title"; //$NON-NLS-1$
-- boosts[fieldNames.size()+1] = 1.0f;
-- }
-- Query query = getLuceneQuery(fields, boosts);
-- query = improveRankingForUnqotedPhrase(query, fields, boosts);
-- return query;
-- }
-- /**
-- * If user query contained only words (no quotaions nor operators) extends
-- * query with term phrase representing entire user query i.e for user string
-- * a b, the query a AND b will be extended to "a b" OR a AND b
-- */
-- private Query improveRankingForUnqotedPhrase(Query query, String[] fields,
-- float[] boosts) {
-- if (query == null)
-- return query;
-- // check if all tokens are words
-- for (int i = 0; i < analyzedTokens.size(); i++)
-- if (analyzedTokens.get(i).type != QueryWordsToken.WORD)
-- return query;
-- // Create phrase query for all tokens and OR with original query
-- BooleanQuery booleanQuery = new BooleanQuery();
-- booleanQuery.add(query, BooleanClause.Occur.SHOULD);
-- PhraseQuery[] phraseQueries = new PhraseQuery[fields.length];
-- for (int f = 0; f < fields.length; f++) {
-- phraseQueries[f] = new PhraseQuery();
-- for (int i = 0; i < analyzedTokens.size(); i++) {
-- Term t = new Term(fields[f], analyzedTokens
-- .get(i).value);
-- phraseQueries[f].add(t);
-- }
-- phraseQueries[f].setBoost(10 * boosts[f]);
-- booleanQuery.add(phraseQueries[f], BooleanClause.Occur.SHOULD);
-- }
-- return booleanQuery;
-- }
-- /**
-- * Obtains analyzed terms from query as one string. Words are double quoted,
-- * and separated by space. The analyzed words are needed for highlighting
-- * word roots.
-- */
-- public String gethighlightTerms() {
-- StringBuffer buf = new StringBuffer();
-- for (Iterator it = highlightWords.iterator(); it.hasNext();) {
-- buf.append('"');
-- buf.append(it.next());
-- buf.append("\" "); //$NON-NLS-1$
-- }
-- return buf.toString();
-- }
--}
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsExactPhrase.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsExactPhrase.java
-deleted file mode 100644
-index 324b8e1..0000000
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsExactPhrase.java
-+++ /dev/null
-@@ -1,51 +0,0 @@
--/*******************************************************************************
-- * Copyright (c) 2000, 2015 IBM Corporation and others.
-- * All rights reserved. This program and the accompanying materials
-- * are made available under the terms of the Eclipse Public License v1.0
-- * which accompanies this distribution, and is available at
-- * http://www.eclipse.org/legal/epl-v10.html
-- *
-- * Contributors:
-- * IBM Corporation - initial API and implementation
-- *******************************************************************************/
--package org.eclipse.help.internal.search;
--import java.util.ArrayList;
--import java.util.Iterator;
--import java.util.List;
--
--import org.apache.lucene.index.*;
--import org.apache.lucene.search.*;
--/**
-- * Represents a quoted token in user search query words
-- */
--public class QueryWordsExactPhrase extends QueryWordsToken {
-- private List words;
-- public QueryWordsExactPhrase() {
-- super(QueryWordsToken.EXACT_PHRASE, ""); //$NON-NLS-1$
-- words = new ArrayList<>();
-- }
-- public void addWord(String word) {
-- words.add(word);
-- if (words.size() <= 1)
-- value = word;
-- else
-- value += " " + word; //$NON-NLS-1$
-- }
-- public List getWords() {
-- return words;
-- }
-- /**
-- * Creates a lucene query for a field
-- */
-- @Override
-- public Query createLuceneQuery(String field, float boost) {
-- PhraseQuery q = new PhraseQuery();
-- for (Iterator it = getWords().iterator(); it.hasNext();) {
-- String word = it.next();
-- Term t = new Term("exact_" + field, word); //$NON-NLS-1$
-- q.add(t);
-- q.setBoost(boost);
-- }
-- return q;
-- }
--}
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsPhrase.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsPhrase.java
-deleted file mode 100644
-index 8a94e89..0000000
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsPhrase.java
-+++ /dev/null
-@@ -1,52 +0,0 @@
--/*******************************************************************************
-- * Copyright (c) 2000, 2015 IBM Corporation and others.
-- * All rights reserved. This program and the accompanying materials
-- * are made available under the terms of the Eclipse Public License v1.0
-- * which accompanies this distribution, and is available at
-- * http://www.eclipse.org/legal/epl-v10.html
-- *
-- * Contributors:
-- * IBM Corporation - initial API and implementation
-- *******************************************************************************/
--package org.eclipse.help.internal.search;
--import java.util.ArrayList;
--import java.util.Iterator;
--import java.util.List;
--
--import org.apache.lucene.index.*;
--import org.apache.lucene.search.*;
--/**
-- * Represents a phrase (not quoted) token in user search query words It consists
-- * of several words created by an analyzer
-- */
--public class QueryWordsPhrase extends QueryWordsToken {
-- private List words;
-- public QueryWordsPhrase() {
-- super(QueryWordsToken.PHRASE, ""); //$NON-NLS-1$
-- words = new ArrayList<>();
-- }
-- public void addWord(String word) {
-- words.add(word);
-- if (words.size() <= 1)
-- value = word;
-- else
-- value += " " + word; //$NON-NLS-1$
-- }
-- public List getWords() {
-- return words;
-- }
-- /**
-- * Creates a lucene query for a field
-- */
-- @Override
-- public Query createLuceneQuery(String field, float boost) {
-- PhraseQuery q = new PhraseQuery();
-- for (Iterator it = getWords().iterator(); it.hasNext();) {
-- String word = it.next();
-- Term t = new Term(field, word);
-- q.add(t);
-- q.setBoost(boost);
-- }
-- return q;
-- }
--}
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsToken.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsToken.java
-deleted file mode 100644
-index 6ba76f2..0000000
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryWordsToken.java
-+++ /dev/null
-@@ -1,81 +0,0 @@
--/*******************************************************************************
-- * Copyright (c) 2000, 2007 IBM Corporation and others.
-- * All rights reserved. This program and the accompanying materials
-- * are made available under the terms of the Eclipse Public License v1.0
-- * which accompanies this distribution, and is available at
-- * http://www.eclipse.org/legal/epl-v10.html
-- *
-- * Contributors:
-- * IBM Corporation - initial API and implementation
-- *******************************************************************************/
--package org.eclipse.help.internal.search;
--import org.apache.lucene.index.*;
--import org.apache.lucene.search.*;
--/**
-- * Represents a token in user search query words
-- */
--public class QueryWordsToken {
-- public static final int AND = 0;
-- public static final int OR = 1;
-- public static final int NOT = 2;
-- public static final int EXACT_PHRASE = 3;
-- public static final int PHRASE = 4;
-- public static final int WORD = 5;
-- private static final QueryWordsToken fAND = new QueryWordsToken(AND, "AND"); //$NON-NLS-1$
-- private static final QueryWordsToken fOR = new QueryWordsToken(OR, "OR"); //$NON-NLS-1$
-- private static final QueryWordsToken fNOT = new QueryWordsToken(NOT, "NOT"); //$NON-NLS-1$
-- public int type;
-- public String value;
-- protected QueryWordsToken(int type, String value) {
-- this.type = type;
-- this.value = value;
-- }
-- /**
-- * Creates a lucene query for a field
-- */
-- public Query createLuceneQuery(String field, float boost) {
-- Query q;
-- int questionPos = value.indexOf('?');
-- int starPos = value.indexOf('*');
-- if (questionPos >= 0 || starPos >= 0) {
-- if (questionPos == -1 && starPos == value.length() - 1) {
-- Term t = new Term("exact_" + field, value.substring(0, starPos)); //$NON-NLS-1$
-- q = new PrefixQuery(t);
-- ((PrefixQuery) q).setBoost(boost);
-- } else {
-- Term t = new Term("exact_" + field, value); //$NON-NLS-1$
-- q = new WildcardQuery(t);
-- ((WildcardQuery) q).setBoost(boost);
-- }
-- } else {
-- Term t = new Term(field, value);
-- q = new TermQuery(t);
-- ((TermQuery) q).setBoost(boost);
-- }
-- // after updating Lucene, set boost on a Query class
-- return q;
-- }
-- public static QueryWordsToken AND() {
-- return fAND;
-- }
-- public static QueryWordsToken OR() {
-- return fOR;
-- }
-- public static QueryWordsToken NOT() {
-- return fNOT;
-- }
-- public static QueryWordsToken word(String word) {
-- return new QueryWordsToken(QueryWordsToken.WORD, word);
-- }
-- public static QueryWordsPhrase phrase() {
-- return new QueryWordsPhrase();
-- }
-- public static QueryWordsExactPhrase exactPhrase() {
-- return new QueryWordsExactPhrase();
-- }
-- public static QueryWordsExactPhrase exactPhrase(String word) {
-- QueryWordsExactPhrase token = new QueryWordsExactPhrase();
-- token.addWord(word);
-- return token;
-- }
--}
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java
-index 67963a5..131ac65 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java
-@@ -17,6 +16,7 @@
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.RandomAccessFile;
-+import java.io.StringReader;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.nio.channels.FileLock;
-@@ -33,19 +33,30 @@
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
-
--import org.apache.lucene.analysis.LimitTokenCountAnalyzer;
-+import org.apache.lucene.analysis.miscellaneous.LimitTokenCountAnalyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
-+import org.apache.lucene.document.StoredField;
-+import org.apache.lucene.document.StringField;
-+import org.apache.lucene.index.DirectoryReader;
- import org.apache.lucene.index.IndexReader;
- import org.apache.lucene.index.IndexWriter;
--import org.apache.lucene.index.Term;
--import org.apache.lucene.index.TermDocs;
--import org.apache.lucene.index.IndexWriterConfig.OpenMode;
- import org.apache.lucene.index.IndexWriterConfig;
-+import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-+import org.apache.lucene.index.LeafReader;
- import org.apache.lucene.index.LogByteSizeMergePolicy;
- import org.apache.lucene.index.LogMergePolicy;
-+import org.apache.lucene.index.PostingsEnum;
-+import org.apache.lucene.index.SlowCompositeReaderWrapper;
-+import org.apache.lucene.index.Term;
-+import org.apache.lucene.queryparser.classic.FastCharStream;
-+import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
-+import org.apache.lucene.queryparser.classic.QueryParserTokenManager;
-+import org.apache.lucene.queryparser.classic.Token;
-+import org.apache.lucene.search.BooleanClause.Occur;
- import org.apache.lucene.search.BooleanQuery;
- import org.apache.lucene.search.IndexSearcher;
-+import org.apache.lucene.search.MultiTermQuery;
- import org.apache.lucene.search.Query;
- import org.apache.lucene.search.TopDocs;
- import org.apache.lucene.store.Directory;
-@@ -59,7 +70,6 @@
- import org.eclipse.core.runtime.OperationCanceledException;
- import org.eclipse.core.runtime.Platform;
- import org.eclipse.core.runtime.Status;
--import org.eclipse.help.internal.HelpPlugin;
- import org.eclipse.help.internal.base.BaseHelpSystem;
- import org.eclipse.help.internal.base.HelpBasePlugin;
- import org.eclipse.help.internal.base.util.HelpProperties;
-@@ -86,7 +96,7 @@
-
- private File indexDir;
-
-- private Directory luceneDirectory;
-+ public Directory luceneDirectory;
-
- private String locale;
-
-@@ -170,7 +180,7 @@
- inconsistencyFile = new File(indexDir.getParentFile(), locale + ".inconsistent"); //$NON-NLS-1$
- htmlSearchParticipant = new HTMLSearchParticipant(indexDir.getAbsolutePath());
- try {
-- luceneDirectory = new NIOFSDirectory(indexDir);
-+ luceneDirectory = new NIOFSDirectory(indexDir.toPath());
- } catch (IOException e) {
- }
- if (!exists()) {
-@@ -203,11 +213,11 @@
- public IStatus addDocument(String name, URL url) {
- try {
- Document doc = new Document();
-- doc.add(new Field(FIELD_NAME, name, Field.Store.YES, Field.Index.NOT_ANALYZED));
-+ doc.add(new StringField(FIELD_NAME, name, Field.Store.YES));
- addExtraFields(doc);
- String pluginId = LocalSearchManager.getPluginId(name);
- if (relativePath != null) {
-- doc.add(new Field(FIELD_INDEX_ID, relativePath, Field.Store.YES, Field.Index.NOT_ANALYZED));
-+ doc.add(new StringField(FIELD_INDEX_ID, relativePath, Field.Store.YES));
- }
- // check for the explicit search participant.
- SearchParticipant participant = null;
-@@ -220,20 +230,22 @@
- if (participant == null)
- participant = BaseHelpSystem.getLocalSearchManager().getParticipant(pluginId, name);
- if (participant != null) {
-- IStatus status = participant.addDocument(this, pluginId, name, url, id, new LuceneSearchDocument(doc));
-+ IStatus status = participant.addDocument(this, pluginId, name, url, id,
-+ new LuceneSearchDocument(doc));
- if (status.getSeverity() == IStatus.OK) {
- String filters = doc.get("filters"); //$NON-NLS-1$
- indexedDocs.put(name, filters != null ? filters : "0"); //$NON-NLS-1$
- if (id != null)
-- doc.add(new Field("id", id, Field.Store.YES, Field.Index.NO)); //$NON-NLS-1$
-+ doc.add(new StoredField("id", id)); //$NON-NLS-1$
- if (pid != null)
-- doc.add(new Field("participantId", pid, Field.Store.YES, Field.Index.NO)); //$NON-NLS-1$
-+ doc.add(new StoredField("participantId", pid)); //$NON-NLS-1$
- iw.addDocument(doc);
- }
- return status;
- }
- // default to html
-- IStatus status = htmlSearchParticipant.addDocument(this, pluginId, name, url, id, new LuceneSearchDocument(doc));
-+ IStatus status = htmlSearchParticipant.addDocument(this, pluginId, name, url, id,
-+ new LuceneSearchDocument(doc));
- if (status.getSeverity() == IStatus.OK) {
- String filters = doc.get("filters"); //$NON-NLS-1$
- indexedDocs.put(name, filters != null ? filters : "0"); //$NON-NLS-1$
-@@ -245,20 +257,21 @@
- "IO exception occurred while adding document " + name //$NON-NLS-1$
- + " to index " + indexDir.getAbsolutePath() + ".", //$NON-NLS-1$ //$NON-NLS-2$
- e);
-- }
-- catch (Exception e) {
-+ } catch (Exception e) {
- return new Status(IStatus.ERROR, HelpBasePlugin.PLUGIN_ID, IStatus.ERROR,
- "An unexpected internal error occurred while adding document " //$NON-NLS-1$
- + name + " to index " + indexDir.getAbsolutePath() //$NON-NLS-1$
-- + ".", e); //$NON-NLS-1$
-+ + ".", //$NON-NLS-1$
-+ e);
- }
- }
-
- /**
-- * Add any extra fields that need to be added to this document. Subclasses
-- * should override to add more fields.
-+ * Add any extra fields that need to be added to this document. Subclasses should override to
-+ * add more fields.
- *
-- * @param doc the document to add fields to
-+ * @param doc
-+ * the document to add fields to
- */
- protected void addExtraFields(Document doc) {
- }
-@@ -282,8 +295,9 @@
- indexedDocs = new HelpProperties(INDEXED_DOCS_FILE, indexDir);
- indexedDocs.restore();
- setInconsistent(true);
-- LimitTokenCountAnalyzer analyzer = new LimitTokenCountAnalyzer(analyzerDescriptor.getAnalyzer(), 1000000);
-- IndexWriterConfig writerConfig = new IndexWriterConfig(org.apache.lucene.util.Version.LUCENE_31, analyzer);
-+ LimitTokenCountAnalyzer analyzer = new LimitTokenCountAnalyzer(analyzerDescriptor.getAnalyzer(),
-+ 1000000);
-+ IndexWriterConfig writerConfig = new IndexWriterConfig(analyzer);
- writerConfig.setOpenMode(create ? OpenMode.CREATE : OpenMode.APPEND);
- LogMergePolicy mergePolicy = new LogByteSizeMergePolicy();
- mergePolicy.setMergeFactor(20);
-@@ -307,7 +321,7 @@
- indexedDocs = new HelpProperties(INDEXED_DOCS_FILE, indexDir);
- indexedDocs.restore();
- setInconsistent(true);
-- ir = IndexReader.open(luceneDirectory, false);
-+ ir = DirectoryReader.open(luceneDirectory);
- return true;
- } catch (IOException e) {
- HelpBasePlugin.logError("Exception occurred in search indexing at beginDeleteBatch.", e); //$NON-NLS-1$
-@@ -323,7 +337,7 @@
- if (ir != null) {
- ir.close();
- }
-- ir = IndexReader.open(luceneDirectory, false);
-+ ir = DirectoryReader.open(luceneDirectory);
- return true;
- } catch (IOException e) {
- HelpBasePlugin.logError("Exception occurred in search indexing at beginDeleteBatch.", e); //$NON-NLS-1$
-@@ -334,14 +348,14 @@
- /**
- * Deletes a single document from the index.
- *
-- * @param name -
-- * document name
-+ * @param name
-+ * - document name
- * @return IStatus
- */
- public IStatus removeDocument(String name) {
- Term term = new Term(FIELD_NAME, name);
- try {
-- ir.deleteDocuments(term);
-+ iw.deleteDocuments(term);
- indexedDocs.remove(name);
- } catch (IOException e) {
- return new Status(IStatus.ERROR, HelpBasePlugin.PLUGIN_ID, IStatus.ERROR,
-@@ -375,11 +389,11 @@
- }
-
- /*
-- * The searcher's index reader has it's stuff in memory so it won't
-- * know about this change. Close it so that it gets reloaded next search.
-+ * The searcher's index reader has it's stuff in memory so it won't know about this
-+ * change. Close it so that it gets reloaded next search.
- */
- if (searcher != null) {
-- searcher.close();
-+ searcher.getIndexReader().close();
- searcher = null;
- }
- return true;
-@@ -407,11 +421,11 @@
- saveDependencies();
-
- /*
-- * The searcher's index reader has it's stuff in memory so it won't
-- * know about this change. Close it so that it gets reloaded next search.
-+ * The searcher's index reader has it's stuff in memory so it won't know about this
-+ * change. Close it so that it gets reloaded next search.
- */
- if (searcher != null) {
-- searcher.close();
-+ searcher.getIndexReader().close();
- searcher = null;
- }
- return true;
-@@ -469,11 +483,11 @@
- String indexId = indexIds.get(i);
- String indexPath = indexPaths.get(i);
- try {
-- dirList.add(new NIOFSDirectory(new File(indexPath)));
-+ dirList.add(new NIOFSDirectory(new File(indexPath).toPath()));
- } catch (IOException ioe) {
-- HelpBasePlugin
-- .logError(
-- "Help search indexing directory could not be created for directory " + indexPath, ioe); //$NON-NLS-1$
-+ HelpBasePlugin.logError(
-+ "Help search indexing directory could not be created for directory " + indexPath, //$NON-NLS-1$
-+ ioe);
- continue;
- }
-
-@@ -525,18 +539,19 @@
- }
-
- public IStatus removeDuplicates(String name, String[] index_paths) {
-- TermDocs hrefDocs = null;
-- TermDocs indexDocs = null;
-- Term hrefTerm = new Term(FIELD_NAME, name);
- try {
-+ LeafReader ar = SlowCompositeReaderWrapper.wrap(ir);
-+ PostingsEnum hrefDocs = null;
-+ PostingsEnum indexDocs = null;
-+ Term hrefTerm = new Term(FIELD_NAME, name);
- for (int i = 0; i < index_paths.length; i++) {
- Term indexTerm = new Term(FIELD_INDEX_ID, index_paths[i]);
- if (i == 0) {
-- hrefDocs = ir.termDocs(hrefTerm);
-- indexDocs = ir.termDocs(indexTerm);
-+ hrefDocs = ar.postings(hrefTerm);
-+ indexDocs = ar.postings(indexTerm);
- } else {
-- hrefDocs.seek(hrefTerm);
-- indexDocs.seek(indexTerm);
-+ hrefDocs = ar.postings(hrefTerm);
-+ indexDocs = ar.postings(indexTerm);
- }
- removeDocuments(hrefDocs, indexDocs);
- }
-@@ -545,19 +560,6 @@
- "IO exception occurred while removing duplicates of document " + name //$NON-NLS-1$
- + " from index " + indexDir.getAbsolutePath() + ".", //$NON-NLS-1$ //$NON-NLS-2$
- ioe);
-- } finally {
-- if (hrefDocs != null) {
-- try {
-- hrefDocs.close();
-- } catch (IOException e) {
-- }
-- }
-- if (indexDocs != null) {
-- try {
-- indexDocs.close();
-- } catch (IOException e) {
-- }
-- }
- }
- return Status.OK_STATUS;
- }
-@@ -569,33 +571,33 @@
- * @param docs2
- * @throws IOException
- */
-- private void removeDocuments(TermDocs doc1, TermDocs docs2) throws IOException {
-- if (!doc1.next()) {
-+ private void removeDocuments(PostingsEnum doc1, PostingsEnum docs2) throws IOException {
-+ if (doc1.nextDoc() == PostingsEnum.NO_MORE_DOCS) {
- return;
- }
-- if (!docs2.next()) {
-+ if (docs2.nextDoc() == PostingsEnum.NO_MORE_DOCS) {
- return;
- }
- while (true) {
-- if (doc1.doc() < docs2.doc()) {
-- if (!doc1.skipTo(docs2.doc())) {
-- if (!doc1.next()) {
-+ if (doc1.docID() < docs2.docID()) {
-+ if (doc1.advance(docs2.docID()) == PostingsEnum.NO_MORE_DOCS) {
-+ if (doc1.nextDoc() == PostingsEnum.NO_MORE_DOCS) {
- return;
- }
- }
-- } else if (doc1.doc() > docs2.doc()) {
-- if (!docs2.skipTo(doc1.doc())) {
-- if (!doc1.next()) {
-+ } else if (doc1.docID() > docs2.docID()) {
-+ if (docs2.advance(doc1.docID()) == PostingsEnum.NO_MORE_DOCS) {
-+ if (doc1.nextDoc() == PostingsEnum.NO_MORE_DOCS) {
- return;
- }
- }
- }
-- if (doc1.doc() == docs2.doc()) {
-- ir.deleteDocument(doc1.doc());
-- if (!doc1.next()) {
-+ if (doc1.docID() == docs2.docID()) {
-+ iw.tryDeleteDocument(ir, doc1.docID());
-+ if (doc1.nextDoc() == PostingsEnum.NO_MORE_DOCS) {
- return;
- }
-- if (!docs2.next()) {
-+ if (docs2.nextDoc() == PostingsEnum.NO_MORE_DOCS) {
- return;
- }
- }
-@@ -623,20 +625,72 @@
- registerSearch(Thread.currentThread());
- if (closed)
- return;
-- QueryBuilder queryBuilder = new QueryBuilder(searchQuery.getSearchWord(), analyzerDescriptor);
-- Query luceneQuery = queryBuilder.getLuceneQuery(searchQuery.getFieldNames(), searchQuery
-- .isFieldSearch());
-- if (HelpPlugin.DEBUG_SEARCH) {
-- System.out.println("Search Query: " + luceneQuery.toString()); //$NON-NLS-1$
-+
-+ String[] fields;
-+ if (searchQuery.isFieldSearch()){
-+ //sometimes you might want to search other than the default fields
-+ fields = (String[]) searchQuery.getFieldNames().toArray();
-+ }else {
-+ fields = new String[]{"contents","title"}; //$NON-NLS-1$ //$NON-NLS-2$
- }
-- String highlightTerms = queryBuilder.gethighlightTerms();
-- if (luceneQuery != null) {
-+
-+ //prepare the parser
-+
-+ MultiFieldQueryParser qb = new MultiFieldQueryParser(fields,analyzerDescriptor.getAnalyzer());
-+ qb.setAllowLeadingWildcard(true);
-+ qb.setAnalyzeRangeTerms(true);
-+ qb.setAutoGeneratePhraseQueries(true);
-+ qb.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE);
-+ qb.setLowercaseExpandedTerms(true);
-+ qb.setLocale(new Locale(analyzerDescriptor.getLang()));
-+
-+ //parse the "pure" query (no boosting)
-+ Query luceneQuery = qb.parse(searchQuery.getSearchWord());
-+
-+ //we'll merge the pure query with a some boosted queries
-+ Query mergedQuery;
-+
-+ if (!isWildcardQuery(searchQuery.getSearchWord())){
-+ mergedQuery = new BooleanQuery(); //merge for all fields before merging with luceneQuery
-+ for (int i=0;i set = new HashSet();
-+
-+ if (mergedQuery != null) {
- if (searcher == null) {
- openSearcher();
- }
-- TopDocs topDocs = searcher.search(luceneQuery, null, 1000);
-- collector.addHits(LocalSearchManager.asList(topDocs, searcher), highlightTerms);
-+ TopDocs topDocs = searcher.search(mergedQuery, 1000);
-+
-+ String highlight=null;
-+ QueryParserTokenManager manager = new QueryParserTokenManager(new FastCharStream(new StringReader(searchQuery.getSearchWord())));
-+ while (true){
-+ Token nextToken = manager.getNextToken();
-+ String toHighlight = null;
-+ if (nextToken.kind==0) break;
-+ String image = nextToken.image;
-+ toHighlight=image;
-+ if ((image.startsWith("\""))&&( image.endsWith("\""))){ //$NON-NLS-1$//$NON-NLS-2$
-+ toHighlight = image.substring(1,image.length()-1);
-+ }
-+ if (image.equals("AND") || image.equals("OR")) //$NON-NLS-1$ //$NON-NLS-2$
-+ continue;
-+ set .add(toHighlight);
-+
-+ }
-+ highlight = buildHighlight(set);
-+ collector.addHits(LocalSearchManager.asList(topDocs, searcher), highlight==null?"":highlight); //$NON-NLS-1$
- }
-+
- } catch (BooleanQuery.TooManyClauses tmc) {
- collector.addQTCException(new QueryTooComplexException());
- } catch (QueryTooComplexException qe) {
-@@ -647,6 +701,18 @@
- } finally {
- unregisterSearch(Thread.currentThread());
- }
-+ }
-+
-+ private boolean isWildcardQuery(String searchWord) {
-+ return searchWord.contains("?")|| searchWord.contains("*"); //$NON-NLS-1$//$NON-NLS-2$
-+ }
-+
-+ private String buildHighlight(Set set) {
-+ StringBuilder sb = new StringBuilder();
-+ for (String string : set) {
-+ sb.append("\""+string+"\""); //$NON-NLS-1$//$NON-NLS-2$
-+ }
-+ return sb.toString();
- }
-
- @Override
-@@ -718,25 +785,27 @@
-
- /**
- * Determines whether an index can be read by the Lucene bundle
-- * @param indexVersionString The version of an Index directory
-+ *
-+ * @param indexVersionString
-+ * The version of an Index directory
- * @return
- */
- public boolean isLuceneCompatible(String indexVersionString) {
-- if (indexVersionString==null) return false;
-+ if (indexVersionString == null)
-+ return false;
- String luceneVersionString = ""; //$NON-NLS-1$
- Bundle luceneBundle = Platform.getBundle(LUCENE_BUNDLE_ID);
- if (luceneBundle != null) {
-- luceneVersionString += luceneBundle.getHeaders()
-- .get(Constants.BUNDLE_VERSION);
-+ luceneVersionString += luceneBundle.getHeaders().get(Constants.BUNDLE_VERSION);
- }
- Version luceneVersion = new Version(luceneVersionString);
- Version indexVersion = new Version(indexVersionString);
-- Version v191 = new Version(1, 9, 1);
-- if (indexVersion.compareTo(v191) < 0) {
-- // index is older than Lucene 1.9.1
-+ Version v500 = new Version(5, 0, 0);
-+ if (indexVersion.compareTo(v500) < 0) {
-+ // index is older than Lucene 5.0.0
- return false;
- }
-- if ( luceneVersion.compareTo(indexVersion) >= 0 ) {
-+ if (luceneVersion.compareTo(indexVersion) >= 0) {
- // Lucene bundle is newer than the index
- return true;
- }
-@@ -801,7 +870,7 @@
- public void openSearcher() throws IOException {
- synchronized (searcherCreateLock) {
- if (searcher == null) {
-- searcher = new IndexSearcher(IndexReader.open(luceneDirectory, false));
-+ searcher = new IndexSearcher(DirectoryReader.open(luceneDirectory));
- }
- }
- }
-@@ -819,7 +888,7 @@
- if (searches.isEmpty()) {
- if (searcher != null) {
- try {
-- searcher.close();
-+ searcher.getIndexReader().close();
- } catch (IOException ioe) {
- }
- }
-@@ -837,7 +906,8 @@
- * Finds and unzips prebuild index specified in preferences
- */
- private void unzipProductIndex() {
-- String indexPluginId = Platform.getPreferencesService().getString(HelpBasePlugin.PLUGIN_ID, "productIndex", null, null); //$NON-NLS-1$
-+ String indexPluginId = Platform.getPreferencesService().getString(HelpBasePlugin.PLUGIN_ID,
-+ "productIndex", null, null); //$NON-NLS-1$
- if (indexPluginId == null || indexPluginId.length() <= 0) {
- return;
- }
-@@ -899,7 +969,7 @@
- private void cleanOldIndex() {
- try (LimitTokenCountAnalyzer analyzer = new LimitTokenCountAnalyzer(analyzerDescriptor.getAnalyzer(), 10000);
- IndexWriter cleaner = new IndexWriter(luceneDirectory,
-- new IndexWriterConfig(org.apache.lucene.util.Version.LUCENE_31, analyzer)
-+ new IndexWriterConfig(analyzer)
- .setOpenMode(OpenMode.CREATE))) {
-
- } catch (IOException ioe) {
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/SmartAnalyzer.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/SmartAnalyzer.java
-index d0a7bb7..444b66c 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/SmartAnalyzer.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/SmartAnalyzer.java
-@@ -7,10 +7,9 @@
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.help.internal.search;
--
--import java.io.*;
-
- import org.apache.lucene.analysis.*;
-
-@@ -18,7 +17,7 @@
- * Smart Analyzer. Chooses underlying implementation based on the field which
- * text is analyzed.
- */
--public final class SmartAnalyzer extends Analyzer {
-+public final class SmartAnalyzer extends AnalyzerWrapper {
- Analyzer pluggedInAnalyzer;
- Analyzer exactAnalyzer;
-
-@@ -26,20 +25,19 @@
- * Constructor for SmartAnalyzer.
- */
- public SmartAnalyzer(String locale, Analyzer pluggedInAnalyzer) {
-- super();
-+ super(pluggedInAnalyzer.getReuseStrategy());
- this.pluggedInAnalyzer = pluggedInAnalyzer;
- this.exactAnalyzer = new DefaultAnalyzer(locale);
- }
- /**
-- * Creates a TokenStream which tokenizes all the text in the provided
-- * Reader. Delegates to DefaultAnalyzer when field used to search for exact
-+ * Delegates to DefaultAnalyzer when field used to search for exact
- * match, and to plugged-in analyzer for other fields.
- */
- @Override
-- public final TokenStream tokenStream(String fieldName, Reader reader) {
-+ public final Analyzer getWrappedAnalyzer(String fieldName) {
- if (fieldName != null && fieldName.startsWith("exact_")) { //$NON-NLS-1$
-- return exactAnalyzer.tokenStream(fieldName, reader);
-+ return exactAnalyzer;
- }
-- return pluggedInAnalyzer.tokenStream(fieldName, reader);
-+ return pluggedInAnalyzer;
- }
- }
-diff --git a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/WordTokenStream.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/WordTokenStream.java
-index 0b70cf7..79d5592 100644
---- a/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/WordTokenStream.java
-+++ b/eclipse.platform.ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/WordTokenStream.java
-@@ -7,16 +7,18 @@
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.help.internal.search;
-
--import com.ibm.icu.text.BreakIterator;
- import java.io.IOException;
--import java.io.Reader;
- import java.util.Locale;
-+
- import org.apache.lucene.analysis.TokenStream;
- import org.apache.lucene.analysis.Tokenizer;
- import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-+
-+import com.ibm.icu.text.BreakIterator;
-
- /**
- * WordTokenStream obtains tokens containing words appropriate for use with
-@@ -24,7 +26,6 @@
- */
- public final class WordTokenStream extends Tokenizer {
- private static final int BUF_LEN = 4096;
-- private final Reader reader;
- private final BreakIterator boundary;
- private StringBuffer strbuf;
-
-@@ -34,8 +35,8 @@
- /**
- * Constructor
- */
-- public WordTokenStream(String fieldName, Reader reader, Locale locale) {
-- this.reader = reader;
-+ public WordTokenStream(Locale locale) {
-+ super();
- boundary = BreakIterator.getWordInstance(locale);
-
- }
-@@ -52,9 +53,9 @@
- if(strbuf == null) {
- int available;
- char[] cbuf = new char[BUF_LEN];
-- while ((available = reader.read(cbuf)) <= 0) {
-+ while ((available = input.read(cbuf)) <= 0) {
- if (available < 0) {
-- reader.close();
-+ input.close();
- return false;
- }
- }
-@@ -62,7 +63,7 @@
- strbuf.append(cbuf, 0, available);
- // read more until white space (or EOF)
- int c;
-- while (0 <= (c = reader.read())) {
-+ while (0 <= (c = input.read())) {
- strbuf.append((char) c);
- if (c == ' ' || c == '\r' || c == '\n' || c == '\t') {
- break;
-@@ -70,7 +71,7 @@
- }
-
- if (c < 0) {
-- reader.close();
-+ input.close();
- }
-
- boundary.setText(strbuf.toString());
-@@ -107,9 +108,10 @@
-
- @Override
- public void close() throws IOException {
-+ super.close();
- /// Unlikely to be called as this is a reused
-- if (this.reader != null) {
-- this.reader.close();
-+ if (this.input != null) {
-+ this.input.close();
- }
- }
- }
-diff --git a/eclipse.platform.ua/org.eclipse.help.webapp/web-archive/org.eclipse.help.infocenter-feature/feature.xml b/org.eclipse.help.webapp/web-archive/org.eclipse.help.infocenter-feature/feature.xml
-index 8438100..174e92a 100644
---- a/eclipse.platform.ua/org.eclipse.help.webapp/web-archive/org.eclipse.help.infocenter-feature/feature.xml
-+++ b/eclipse.platform.ua/org.eclipse.help.webapp/web-archive/org.eclipse.help.infocenter-feature/feature.xml
-@@ -74,20 +74,6 @@
- unpack="false"/>
-
-
--
--
--
--
-
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/META-INF/MANIFEST.MF b/org.eclipse.ua.tests/META-INF/MANIFEST.MF
-index 6bcf9bc..23f8910 100644
---- a/eclipse.platform.ua/org.eclipse.ua.tests/META-INF/MANIFEST.MF
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/META-INF/MANIFEST.MF
-@@ -19,14 +19,13 @@
- org.eclipse.ui.forms,
- org.eclipse.ui.browser;bundle-version="3.2.300",
- org.eclipse.equinox.jsp.jasper;bundle-version="1.0.200",
-- org.eclipse.equinox.jsp.jasper.registry;bundle-version="1.0.100"
-+ org.eclipse.equinox.jsp.jasper.registry;bundle-version="1.0.100",
-+ org.apache.lucene.analyzers-common;bundle-version="5.1.0",
-+ org.apache.lucene.core;bundle-version="5.1.0"
- Bundle-ActivationPolicy: lazy
- Bundle-Vendor: Eclipse.org
- Import-Package: javax.servlet;version="3.1.0",
-- javax.servlet.http;version="3.1.0",
-- org.apache.lucene.index;core=split;version="[3.5.0,4.0.0)",
-- org.apache.lucene.search;core=split;version="[3.5.0,4.0.0)",
-- org.apache.lucene.store;core=split;version="[3.5.0,4.0.0)"
-+ javax.servlet.http;version="3.1.0"
- Bundle-RequiredExecutionEnvironment: JavaSE-1.8
- Export-Package: org.eclipse.ua.tests,
- org.eclipse.ua.tests.browser,
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index291/write.lock b/org.eclipse.ua.tests/data/help/searchindex/index291/write.lock
-new file mode 100644
-index 0000000..e69de29
---- /dev/null
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index291/write.lock
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/_0.cfe b/org.eclipse.ua.tests/data/help/searchindex/index510/_0.cfe
-new file mode 100644
-index 0000000..09ec2c9
---- /dev/null
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/_0.cfe
-Binary files differ
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/_0.cfs b/org.eclipse.ua.tests/data/help/searchindex/index510/_0.cfs
-new file mode 100644
-index 0000000..3aa288a
---- /dev/null
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/_0.cfs
-Binary files differ
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/_0.si b/org.eclipse.ua.tests/data/help/searchindex/index510/_0.si
-new file mode 100644
-index 0000000..d897bfc
---- /dev/null
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/_0.si
-Binary files differ
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/segments_1 b/org.eclipse.ua.tests/data/help/searchindex/index510/segments_1
-new file mode 100644
-index 0000000..4878901
---- /dev/null
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/segments_1
-Binary files differ
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/write.lock b/org.eclipse.ua.tests/data/help/searchindex/index510/write.lock
-new file mode 100644
-index 0000000..e69de29
---- /dev/null
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/data/help/searchindex/index510/write.lock
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/EncodedCharacterSearch.java b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/EncodedCharacterSearch.java
-index 1dd4876..02b2e5b 100644
---- a/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/EncodedCharacterSearch.java
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/EncodedCharacterSearch.java
-@@ -7,6 +7,7 @@
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.ua.tests.help.search;
-
-@@ -36,7 +37,7 @@
- @Test
- public void testUtf8Hebrew() {
- SearchTestUtils.searchOneLocale("\u05D0\u05B7\u05E1\u05B0\u05D8\u05B0\u05E8\u05D5\u05B9\u05E0\u05D5\u05B9\u05DE"
-- + "\u05B0\u05D9\u05B8\u05D4) \u05DC\u05B4\u05E7\u05BC\u05D5\u05BC\u05D9 (\u05D9\u05E8\u05D7 \u05D0\u05D5 \u05E9\u05DE\u05E9", new String[] {"/org.eclipse.ua.tests/data/help/search/testnlUTF8.htm" }, "en");
-+ + "\u05B0\u05D9\u05B8\u05D4\\) \u05DC\u05B4\u05E7\u05BC\u05D5\u05BC\u05D9 \\(\u05D9\u05E8\u05D7 \u05D0\u05D5 \u05E9\u05DE\u05E9", new String[] {"/org.eclipse.ua.tests/data/help/search/testnlUTF8.htm" }, "en");
- }
-
-
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java
-index 640d4c9..33ae5ba 100644
---- a/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java
-@@ -22,20 +22,21 @@
- import java.net.URL;
- import java.util.ArrayList;
-
-+import org.apache.lucene.analysis.standard.StandardAnalyzer;
- import org.apache.lucene.index.CorruptIndexException;
--import org.apache.lucene.index.IndexReader;
-+import org.apache.lucene.index.DirectoryReader;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.Query;
- import org.apache.lucene.search.TopDocs;
- import org.apache.lucene.store.Directory;
- import org.apache.lucene.store.NIOFSDirectory;
-+import org.apache.lucene.util.QueryBuilder;
- import org.eclipse.core.runtime.FileLocator;
- import org.eclipse.core.runtime.NullProgressMonitor;
- import org.eclipse.core.runtime.Path;
- import org.eclipse.help.internal.base.BaseHelpSystem;
- import org.eclipse.help.internal.search.AnalyzerDescriptor;
- import org.eclipse.help.internal.search.PluginIndex;
--import org.eclipse.help.internal.search.QueryBuilder;
- import org.eclipse.help.internal.search.SearchIndexWithIndexingProgress;
- import org.eclipse.ua.tests.plugin.UserAssistanceTestPlugin;
- import org.junit.Test;
-@@ -56,28 +57,12 @@
- public class PrebuiltIndexCompatibility {
-
- /**
-- * Test index built with Lucene 1.9.1
-- */
-- @Test
-- public void test1_9_1_IndexReadable() throws Exception {
-- checkReadable("data/help/searchindex/index191");
-- }
--
-- /**
-- * Test index built with Lucene 2.9.1
-- */
-- @Test
-- public void test2_9_1_IndexReadable() throws Exception {
-- checkReadable("data/help/searchindex/index291");
-- }
--
-- /**
- ** Test compatibility of Lucene 1.9.1 index with current Lucene
- */
- @Test
- public void test1_9_1Compatible()
- {
-- checkCompatible("data/help/searchindex/index191", true);
-+ checkCompatible("data/help/searchindex/index191", false);
- }
-
- /**
-@@ -86,13 +71,13 @@
- @Test
- public void test2_9_1Compatible()
- {
-- checkCompatible("data/help/searchindex/index291", true);
-+ checkCompatible("data/help/searchindex/index291", false);
- }
-
- @Test
- public void test1_9_1LuceneCompatible()
- {
-- checkLuceneCompatible("1.9.1", true);
-+ checkLuceneCompatible("1.9.1", false);
- }
-
- @Test
-@@ -104,7 +89,12 @@
- @Test
- public void test2_9_1LuceneCompatible()
- {
-- checkLuceneCompatible("2.9.1", true);
-+ checkLuceneCompatible("2.9.1", false);
-+ }
-+
-+ @Test
-+ public void test5_1_0LuceneCompatible() {
-+ checkLuceneCompatible("5.1.0", true);
- }
-
- @Test
-@@ -143,6 +133,11 @@
- assertFalse(index1.equals(index2));
- }
-
-+ @Test
-+ public void test5_1_0IndexReadable() throws CorruptIndexException, IOException {
-+ checkReadable("data/help/searchindex/index510");
-+ }
-+
- /*
- * Verifies that a prebuilt index can be searched
- */
-@@ -154,10 +149,11 @@
- URL resolved = FileLocator.resolve(url);
- if ("file".equals(resolved.getProtocol())) { //$NON-NLS-1$
- String filePath = resolved.getFile();
-- QueryBuilder queryBuilder = new QueryBuilder("eclipse", new AnalyzerDescriptor("en-us"));
-- Query luceneQuery = queryBuilder.getLuceneQuery(new ArrayList() , false);
-- try (Directory luceneDirectory = new NIOFSDirectory(new File(filePath));
-- IndexSearcher searcher = new IndexSearcher(IndexReader.open(luceneDirectory, true))) {
-+ StandardAnalyzer standardAnalyzer = new StandardAnalyzer();
-+ QueryBuilder builder = new QueryBuilder(standardAnalyzer);
-+ Query luceneQuery = builder.createBooleanQuery("contents", "eclipse");
-+ try (Directory luceneDirectory = new NIOFSDirectory(new File(filePath).toPath())) {
-+ IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(luceneDirectory));
- TopDocs hits = searcher.search(luceneQuery, 500);
- assertEquals(hits.totalHits, 1);
- }
-diff --git a/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/SearchParticipantTest.java b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/SearchParticipantTest.java
-index 223e42a..2e782c3 100644
---- a/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/SearchParticipantTest.java
-+++ b/eclipse.platform.ua/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/SearchParticipantTest.java
-@@ -7,6 +7,7 @@
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
-+ * Sopot Cela - Bug 466829 - Migration to Lucene 5
- *******************************************************************************/
- package org.eclipse.ua.tests.help.search;
-
-@@ -35,7 +36,7 @@
-
- @Test
- public void testSearchUsingAndInSeparateDocs() {
-- SearchTestUtils.searchAllLocales("jduehdye and olhoykk", new String[0]);
-+ SearchTestUtils.searchAllLocales("jduehdye AND olhoykk", new String[0]);
- }
-
- @Test
---- a/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-+++ b/eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-@@ -101,7 +101,7 @@
-
-
- eclipse-plugin
-- org.apache.lucene.analysis
-+ org.apache.lucene.analyzers-common
- 0.0.0
-
-
diff --git a/eclipse-mockito.patch b/eclipse-mockito.patch
index 20ae6c7..a53f741 100644
--- a/eclipse-mockito.patch
+++ b/eclipse-mockito.patch
@@ -14,7 +14,7 @@
org.eclipse.ui.tests.menus
--- eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF.orig 2014-03-26 11:44:04.400306048 +0000
+++ eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF 2014-03-26 12:58:07.608331033 +0000
-@@ -31,8 +31,8 @@
+@@ -32,8 +32,8 @@
org.eclipse.core.expressions;bundle-version="3.4.200",
org.eclipse.e4.ui.workbench.addons.swt;bundle-version="0.9.0",
org.eclipse.e4.ui.css.swt;bundle-version="0.11.0",
@@ -38,3 +38,14 @@
org.eclipse.equinox.preferences;bundle-version="3.5.200"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+--- eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml.orig 2017-04-04 17:30:21.859313175 +0100
++++ eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml 2017-04-04 17:30:47.748038958 +0100
+@@ -75,7 +75,7 @@
+ unpack="false"/>
+
+
--- eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml.orig 2014-11-28 15:27:07.874872769 +0000
+++ eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml 2014-11-28 15:31:02.592652099 +0000
-@@ -74,6 +74,13 @@
+@@ -73,6 +73,13 @@
@@ -113,15 +113,14 @@
--- eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml.orig 2014-05-26 18:37:25.406426611 +0300
+++ eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml 2014-05-26 18:37:47.327449374 +0300
-@@ -54,6 +54,21 @@
-
+@@ -46,6 +46,20 @@
+
+
+
+
+
-+
+
+
+
@@ -144,12 +143,12 @@
-
-
-
--
--
--
--
--
--
+-
+-
+-
+-
+-
+-
-
-+
++
++
++
+ "
- ;;
--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml 2014-11-28 15:09:42.000000000 +0000
+++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml 2014-11-28 16:52:00.315007846 +0000
-@@ -219,6 +219,128 @@
+@@ -349,6 +349,68 @@
+
+
-+ build-native-launchers-gtk.linux.ppc
-+
-+
-+ native
-+ gtk.linux.ppc
-+
-+
-+
-+
-+
-+ maven-antrun-plugin
-+
-+
-+ compile-executable-natives
-+ generate-resources
-+
-+
-+
-+
-+
-+
-+ run
-+
-+
-+
-+
-+
-+
-+
-+
+ build-native-launchers-gtk.linux.ppc64
+
+
@@ -176,57 +136,37 @@ index 29d3871..45526c8 100644
+
+
+
-+
-+ build-native-launchers-gtk.linux.s390
-+
-+
-+ native
-+ gtk.linux.s390
-+
-+
-+
-+
-+
-+ maven-antrun-plugin
-+
-+
-+ compile-executable-natives
-+ generate-resources
-+
-+
-+
-+
-+
-+
-+ run
-+
-+
-+
-+
-+
-+
-+
+
build-native-launchers-win32.win32.x86_64
-@@ -347,8 +530,6 @@
-
-
-
--
--
-
-
-
--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/build.properties 2015-01-30 14:44:03.436891441 +0000
+++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/build.properties 2015-01-30 14:45:25.232480509 +0000
-@@ -59,4 +59,8 @@
- root.linux.gtk.s390=bin/gtk/linux/s390,gtk_root
- root.linux.gtk.s390.permissions.755=launcher
+@@ -40,3 +40,12 @@
+ root.linux.gtk.x86_64=bin/gtk/linux/x86_64,gtk_root
+ root.linux.gtk.x86_64.permissions.755=libcairo-swt.so
++
+root.linux.gtk.aarch64=bin/gtk/linux/aarch64,gtk_root
+root.linux.gtk.aarch64.permissions.755=launcher
++
+root.linux.gtk.arm=bin/gtk/linux/arm,gtk_root
+root.linux.gtk.arm.permissions.755=launcher
++
++root.linux.gtk.s390x=bin/gtk/linux/s390x,gtk_root
++root.linux.gtk.s390x.permissions.755=launcher
+--- a/eclipse.platform.swt.binaries/pom.xml 2017-04-05 01:57:59.142576722 +0100
++++ b/eclipse.platform.swt.binaries/pom.xml 2017-04-05 02:00:00.153247342 +0100
+@@ -55,9 +55,12 @@
+
+ bundles/org.eclipse.swt.cocoa.macosx.x86_64
++ bundles/org.eclipse.swt.gtk.linux.arm
++ bundles/org.eclipse.swt.gtk.linux.aarch64
+ bundles/org.eclipse.swt.gtk.linux.ppc
+ bundles/org.eclipse.swt.gtk.linux.ppc64
+ bundles/org.eclipse.swt.gtk.linux.ppc64le
++ bundles/org.eclipse.swt.gtk.linux.s390x
+ bundles/org.eclipse.swt.gtk.linux.x86
+ bundles/org.eclipse.swt.gtk.linux.x86_64
+ bundles/org.eclipse.swt.win32.win32.x86
diff --git a/eclipse-support-symlink-bundles.patch b/eclipse-support-symlink-bundles.patch
index dee043b..443092e 100644
--- a/eclipse-support-symlink-bundles.patch
+++ b/eclipse-support-symlink-bundles.patch
@@ -29,11 +29,9 @@ diff --git rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/
index ab69b88..d6bf121 100644
--- rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
+++ rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
-@@ -13,9 +13,14 @@ package org.eclipse.equinox.internal.simpleconfigurator.utils;
-
- import java.io.*;
+@@ -15,8 +15,12 @@ package org.eclipse.equinox.internal.simpleconfigurator.utils;
import java.net.*;
-+import java.nio.file.*;
+ import java.nio.file.Files;
import java.util.*;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
@@ -51,7 +49,7 @@ index ab69b88..d6bf121 100644
URI location = parseLocation(tok.nextToken().trim());
+ if (base != null) {
+ URI absLoc = URIUtil.append(base, location.toString());
-+ Path absPath = Paths.get(absLoc);
++ java.nio.file.Path absPath = java.nio.file.Paths.get(absLoc);
+ // Symbolic links may change outside Eclipse so regenerate proper bundle version.
+ if (Files.isSymbolicLink(absPath) && absPath.toFile().isFile()) {
+ // We can't depend on org.eclipse.equinox.internal.frameworkadmin.utils.Utils
diff --git a/eclipse-swt-disable-gtk2.patch b/eclipse-swt-disable-gtk2.patch
new file mode 100644
index 0000000..5517871
--- /dev/null
+++ b/eclipse-swt-disable-gtk2.patch
@@ -0,0 +1,25 @@
+--- eclipse.platform.swt/bundles/org.eclipse.swt/buildSWT.xml.orig
++++ eclipse.platform.swt/bundles/org.eclipse.swt/buildSWT.xml
+@@ -898,15 +898,19 @@
+
+
+
++
++
++
++
++
++
++
+
+
+
+
+
+
+-
+-
+-
+
+
+
diff --git a/eclipse-test-support.patch b/eclipse-test-support.patch
index 8fa87f3..26976ad 100644
--- a/eclipse-test-support.patch
+++ b/eclipse-test-support.patch
@@ -201,7 +201,7 @@
echo "command line as passed into $(basename ${0}): ${*}"
echo "command line (quoted) as passed into $(basename ${0}): ${@}"
-@@ -159,6 +198,8 @@
+@@ -166,6 +205,8 @@
if [[ "true" == "${START_WINDOW_MGT}" ]]
then
./startWindowManager.sh
@@ -210,7 +210,7 @@
fi
# During production tests, we define 'testedPlatform' as a combination of
-@@ -192,6 +233,7 @@
+@@ -199,6 +240,7 @@
echo "platformString: ${platformString}"
echo "testedPlatform: ${testedPlatform}"
@@ -218,7 +218,7 @@
# -Dtimeout=300000 "${ANT_OPTS}"
if [[ -n "${extdirproperty}" ]]
then
-@@ -202,4 +244,4 @@
+@@ -209,4 +251,4 @@
$jvm ${ANT_OPTS} ${platformArgString} -jar $launcher -data workspace -application org.eclipse.ant.core.antRunner -file ${PWD}/test.xml ${ANT_OPTS} ${platformParmString} -D$installmode=true $properties -logger org.apache.tools.ant.DefaultLogger $tests 2>&1 | tee $consolelogs
fi
diff --git a/eclipse.spec b/eclipse.spec
index 17770a1..f82fbdf 100644
--- a/eclipse.spec
+++ b/eclipse.spec
@@ -5,22 +5,11 @@
Epoch: 1
-%global eb_commit a8c4189f4b7af192e2295b27aef74300ac3bfce9
-%global eclipse_tag S4_6_3_RC4
+%global eb_commit 4bb6dae1336990aa3fe29be55f99869f091f6e44
+%global eclipse_tag I20170404-0245
-%if 0%{?fedora} >= 26
-%global _jetty_version 9.4.2
-%global _lucene_version 5.5.0
-%else
-%if 0%{?fedora} >= 25
-%global _jetty_version 9.4.0
-%global _lucene_version 5.5.0
-%else
-# Used on RHEL
-%global _jetty_version 9.0.3
-%global _lucene_version 5.4.1
-%endif
-%endif
+%global _jetty_version 9.4.3
+%global _lucene_version 6.1.0
%ifarch %{ix86}
%global eclipse_arch x86
@@ -31,7 +20,7 @@ Epoch: 1
%ifarch ppc64 ppc64p7
%global eclipse_arch ppc64
%endif
-%ifarch s390 s390x ppc x86_64 aarch64 ppc64le
+%ifarch s390 s390x x86_64 aarch64 ppc64le
%global eclipse_arch %{_arch}
%endif
@@ -40,14 +29,16 @@ Epoch: 1
%global app_exec %{?app_exec_prefix} eclipse
# See fedora-devel-java-list discussion in September 2008.
-#
# Prevent brp-java-repack-jars from being run.
%global __jar_repack %{nil}
+# Eclipse is arch-specific, but multilib agnostic
+%global _eclipsedir %{_prefix}/lib/eclipse
+
Summary: An open, extensible IDE
Name: eclipse
-Version: 4.6.3
-Release: 3%{?dist}
+Version: 4.7.0
+Release: 0.1%{?dist}
License: EPL
URL: http://www.eclipse.org/
@@ -75,9 +66,9 @@ Patch4: eclipse-ignore-version-when-calculating-home.patch
# just source, and we don't want additional dependencies.
Patch5: eclipse-remove-jgit-provider.patch
-Patch8: eclipse-test-support.patch
+Patch6: eclipse-test-support.patch
-Patch9: eclipse-secondary-arches.patch
+Patch7: eclipse-secondary-arches.patch
Patch10: eclipse-debug-symbols.patch
@@ -98,20 +89,17 @@ Patch15: eclipse-support-symlink-bundles.patch
# If plugin is external, updating it breaks the feature. (version changes)
# Workaround : Change definition to a 'requirement'
# Also makes the following BSN changes at the same time:
-# -com.sun.el
-# +javax.el
-# -org.apache.jasper.glassfish
-# +org.glassfish.web.javax.servlet.jsp
-# -javax.annotation
-# -org.w3c.dom.smil
+# com.sun.el -> com.sun.el.javax.el
+# javax.el -> javax.el-api
+# javax.servlet -> javax.servlet-api
+# org.apache.jasper.glassfish -> org.glassfish.web.javax.servlet.jsp
+# javax.annotation -> removed
+# org.w3c.dom.smil -> removed
Patch16: eclipse-feature-plugins-to-category-ius.patch
# Disable non-linux specific bundles to save build time
Patch17: disable-non-linux.patch
-# Port to Lucene 5
-Patch18: eclipse-lucene-5.patch
-
# Fix various JDT and PDE tests
Patch20: eclipse-fix-tests.patch
@@ -122,8 +110,8 @@ Patch22: eclipse-pde-tp-support-droplets.patch
# Use webkit2 by default and prevent usage of xulrunner
Patch23: eclipse-webkit2-by-default.patch
-# Port to jetty 9.4
-Patch24: eclipse-jetty-9.4.patch
+# Only build gtk3 backend for SWT
+Patch24: eclipse-swt-disable-gtk2.patch
# Droplet fixes
Patch26: eclipse-make-droplets-runnable.patch
@@ -161,22 +149,24 @@ BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(xtst)
BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: pkgconfig(gtk+-3.0)
-BuildRequires: pkgconfig(webkitgtk-3.0)
-%if ! 0%{?rhel}
+%if 0%{?rhel}
# RHEL does not have webkit2
+BuildRequires: pkgconfig(webkitgtk-3.0)
+%else
BuildRequires: pkgconfig(webkit2gtk-4.0)
%endif
BuildRequires: icu4j >= 1:54.1.1-2
-BuildRequires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf ant-commons-net
-BuildRequires: ant-javamail ant-jdepend ant-junit ant-swing ant-jsch ant-testutil ant-apache-xalan2 ant-jmf
+BuildRequires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf
+BuildRequires: ant-commons-net ant-javamail ant-jdepend ant-junit ant-swing ant-jsch ant-testutil ant-apache-xalan2 ant-jmf
BuildRequires: jsch >= 0:0.1.46-2
BuildRequires: apache-commons-el >= 1.0-22
BuildRequires: apache-commons-logging
BuildRequires: apache-commons-codec
BuildRequires: apache-commons-jxpath
BuildRequires: apache-commons-fileupload
-BuildRequires: felix-gogo-command
-BuildRequires: felix-gogo-shell
+BuildRequires: osgi(org.apache.felix.gogo.shell)
+BuildRequires: osgi(org.apache.felix.gogo.command)
+BuildRequires: osgi(org.apache.felix.scr) >= 2.0.8
BuildRequires: osgi(org.eclipse.jetty.util) >= %{_jetty_version}
BuildRequires: osgi(org.eclipse.jetty.server) >= %{_jetty_version}
BuildRequires: osgi(org.eclipse.jetty.http) >= %{_jetty_version}
@@ -185,6 +175,7 @@ BuildRequires: osgi(org.eclipse.jetty.io) >= %{_jetty_version}
BuildRequires: osgi(org.eclipse.jetty.security) >= %{_jetty_version}
BuildRequires: osgi(org.eclipse.jetty.servlet) >= %{_jetty_version}
BuildRequires: lucene-core >= %{_lucene_version}
+BuildRequires: lucene-misc >= %{_lucene_version}
BuildRequires: lucene-analysis >= %{_lucene_version}
BuildRequires: lucene-queryparser >= %{_lucene_version}
BuildRequires: lucene-analyzers-smartcn >= %{_lucene_version}
@@ -256,14 +247,16 @@ Summary: Eclipse platform common files
Recommends: eclipse-abrt
Recommends: eclipse-usage
-Requires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf ant-commons-net
-Requires: ant-javamail ant-jdepend ant-junit ant-swing ant-jsch ant-testutil ant-apache-xalan2 ant-jmf
+Requires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf
+Requires: ant-commons-net ant-javamail ant-jdepend ant-junit ant-swing ant-jsch ant-testutil ant-apache-xalan2 ant-jmf
+Requires: jsch >= 0.1.46-2
Requires: apache-commons-el >= 1.0-23
Requires: apache-commons-logging
Requires: apache-commons-codec
Requires: apache-commons-jxpath
-Requires: felix-gogo-command
-Requires: felix-gogo-shell
+Requires: osgi(org.apache.felix.gogo.shell)
+Requires: osgi(org.apache.felix.gogo.command)
+Requires: osgi(org.apache.felix.scr) >= 2.0.8
Requires: osgi(org.eclipse.jetty.util) >= %{_jetty_version}
Requires: osgi(org.eclipse.jetty.server) >= %{_jetty_version}
Requires: osgi(org.eclipse.jetty.http) >= %{_jetty_version}
@@ -271,8 +264,8 @@ Requires: osgi(org.eclipse.jetty.continuation) >= %{_jetty_version}
Requires: osgi(org.eclipse.jetty.io) >= %{_jetty_version}
Requires: osgi(org.eclipse.jetty.security) >= %{_jetty_version}
Requires: osgi(org.eclipse.jetty.servlet) >= %{_jetty_version}
-Requires: jsch >= 0.1.46-2
Requires: lucene-core >= %{_lucene_version}
+Requires: lucene-misc >= %{_lucene_version}
Requires: lucene-analysis >= %{_lucene_version}
Requires: lucene-queryparser >= %{_lucene_version}
Requires: lucene-analyzers-smartcn >= %{_lucene_version}
@@ -325,9 +318,6 @@ Requires: %{name}-platform = %{epoch}:%{version}-%{release}
Requires: %{name}-jdt = %{epoch}:%{version}-%{release}
Requires: objectweb-asm >= 5.0.3-1
Recommends: eclipse-e4-importer
-# For PDE Build wrapper script + creating jars
-Requires: zip
-Requires: bash
%description pde
Eclipse Plugin Development Environment. This package is required for
@@ -375,8 +365,8 @@ tar --strip-components=1 -xf %{SOURCE1}
%patch3
%patch4
%patch5
-%patch8
-%patch9 -p1
+%patch6
+%patch7 -p1
%patch10
%patch11
%patch12
@@ -385,7 +375,6 @@ tar --strip-components=1 -xf %{SOURCE1}
%patch15
%patch16
%patch17
-%patch18 -p1
%patch20
%patch21
%patch22
@@ -393,9 +382,7 @@ tar --strip-components=1 -xf %{SOURCE1}
# RHEL does not have webkit2
%patch23
%endif
-%if 0%{?fedora} >= 25
%patch24
-%endif
%patch26
%patch27
%patch28
@@ -410,9 +397,6 @@ sed -i -e 's/groupId>org.eclipse.jdtorg.eclipse.tycho' eclipse-platf
# Resolving the target platform requires too many changes, so don't use it
%pom_xpath_remove "pom:configuration/pom:target" eclipse-platform-parent
-# Unnecessary plugin
-%pom_remove_plugin "org.codehaus.mojo:properties-maven-plugin" eclipse-platform-parent
-
# Disable as many products as possible to make the build faster, we care only for the IDE
%pom_disable_module platform.sdk eclipse.platform.releng.tychoeclipsebuilder
%pom_disable_module rcp eclipse.platform.releng.tychoeclipsebuilder
@@ -444,7 +428,7 @@ sed -i -e 's/groupId>org.eclipse.jdtorg.eclipse.tycho' eclipse-platf
%pom_disable_module bundles/org.eclipse.equinox.p2.artifact.processors rt.equinox.p2
%pom_disable_module bundles/ie.wombat.jbdiff rt.equinox.p2
%pom_disable_module bundles/ie.wombat.jbdiff.test rt.equinox.p2
-%pom_disable_module tests/com.google.code.atinject.tck eclipse.platform.runtime
+%pom_disable_module com.google.code.atinject.tck eclipse.platform.runtime/tests
# Disable examples
%pom_disable_module bundles/org.eclipse.sdk.examples eclipse.platform.releng
@@ -482,7 +466,7 @@ for b in `ls eclipse.platform.swt.binaries/bundles | grep -P -e 'org.eclipse.swt
if [ -n "$module" ] ; then
%pom_disable_module bundles/$b eclipse.platform.swt.binaries
%pom_xpath_inject "pom:excludes" "" eclipse.platform.ui/features/org.eclipse.e4.rcp
- %pom_xpath_remove -f "plugin[@id='$b']" eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml
+ %pom_xpath_remove "plugin[@id='$b']" eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml
fi
done
for b in `ls rt.equinox.framework/bundles | grep -P -e 'org.eclipse.equinox.launcher\.(?!gtk\.linux.%{eclipse_arch}$)'` ; do
@@ -511,14 +495,16 @@ done
%pom_disable_module bundles/org.eclipse.equinox.security.win32.x86 rt.equinox.bundles
%pom_disable_module bundles/org.eclipse.equinox.security.win32.x86_64 rt.equinox.bundles
%pom_disable_module bundles/org.eclipse.compare.win32 eclipse.platform.team
-%pom_disable_module bundles/org.eclipse.e4.ui.workbench.renderers.swt.cocoa eclipse.platform.ui
-%pom_disable_module bundles/org.eclipse.ui.cocoa eclipse.platform.ui
-%pom_disable_module bundles/org.eclipse.ui.win32 eclipse.platform.ui
-%pom_disable_module bundles/org.eclipse.core.filesystem/fragments/org.eclipse.core.filesystem.aix.ppc eclipse.platform.resources
-%pom_disable_module bundles/org.eclipse.core.filesystem/fragments/org.eclipse.core.filesystem.aix.ppc64 eclipse.platform.resources
+%pom_disable_module org.eclipse.e4.ui.workbench.renderers.swt.cocoa eclipse.platform.ui/bundles
+%pom_disable_module org.eclipse.ui.cocoa eclipse.platform.ui/bundles
+%pom_disable_module org.eclipse.ui.win32 eclipse.platform.ui/bundles
%pom_disable_module bundles/org.eclipse.core.resources.win32.x86 eclipse.platform.resources
%pom_disable_module bundles/org.eclipse.core.resources.win32.x86_64 eclipse.platform.resources
+# We don't need SWT fragments since we only care for current arch
+%pom_disable_module tests/org.eclipse.swt.tests.fragments.feature eclipse.platform.swt
+%pom_xpath_remove "pom:dependency-resolution" eclipse.platform.swt/tests/org.eclipse.swt.tests
+
# Disable contributor tools that have external dependencies during bootstrap
%if %{bootstrap}
%pom_disable_module eclipse.platform.ui.tools
@@ -596,19 +582,12 @@ popd
# Allow usage of javax.servlet.jsp 2.3.
sed -i '/javax\.servlet\.jsp/ s/2\.3/2\.4/' rt.equinox.bundles/bundles/org.eclipse.equinox.jsp.jasper/META-INF/MANIFEST.MF
-# Use com.sun.el.java.el (Glassfish) instead of javax.el (Tomcat)
-sed -i 's/javax\.el/javax\.el-api/' \
- eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml \
- eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
-sed -i '/javax\.el-api/a' \
- eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml
-
# Use javax.servlet-api (Glassfish) instead of javax.servlet (Tomcat)
find -name feature.xml | xargs sed -i -e 's|"javax.servlet"|"javax.servlet-api"|'
-sed -i -e "s|javax.servlet|javax.servlet-api|g" eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml
sed -i -e "2iRequire-Bundle: javax.servlet-api" rt.equinox.bundles/bundles/org.eclipse.equinox.http.{jetty9,servlet}/META-INF/MANIFEST.MF
-%pom_remove_plugin org.mortbay.jetty:jetty-jspc-maven-plugin eclipse.platform.ua/org.eclipse.help.webapp
+# Pre-compiling JSPs does not currently work
+%pom_remove_plugin org.eclipse.jetty:jetty-jspc-maven-plugin eclipse.platform.ua/org.eclipse.help.webapp
# Remove generated files not present during bootstrap build
# org.eclipse.platform.doc.isv, org.eclipse.jdt.doc.isv, org.eclipse.pde.doc.user
@@ -616,12 +595,10 @@ sed -i -e "2iRequire-Bundle: javax.servlet-api" rt.equinox.bundles/bundles/org.e
sed -i '18,47d' eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests/src/main/assembly/assembly.xml
%endif
-# Remove some problem comments that cause a failure
-sed -i -e '//,//d' eclipse.jdt.core/org.eclipse.jdt.annotation/src/org/eclipse/jdt/annotation/Checks.java
-
# Use system osgi.annotation lib
ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.framework/bundles/org.eclipse.osgi/osgi/
ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.framework/bundles/org.eclipse.osgi.services/lib/
+ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.framework/bundles/org.eclipse.osgi.util/lib/
ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet/osgi/
ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.bundles/bundles/org.eclipse.equinox.coordinator/lib/
@@ -654,8 +631,8 @@ ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.bundles/bundles
%build
#This is the lowest value where the build succeeds. 512m is not enough.
-export MAVEN_OPTS="-Xmx1000m -XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState ${MAVEN_OPTS}"
-export JAVA_HOME=%{java_home}
+export MAVEN_OPTS="-Xmx1024m -XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState ${MAVEN_OPTS}"
+export JAVA_HOME=%{_jvmdir}/java
# Qualifier generated from last modification time of source tarball
QUALIFIER=$(date -u -d"$(stat --format=%y %{SOURCE0})" +v%Y%m%d-%H%M)
@@ -675,7 +652,7 @@ product="eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/or
dependencies/fake_ant_dependency.sh $product/eclipse/plugins/org.apache.ant_*
# Symlink necessary plugins that are provided by other packages
-dependencies/replace_platform_plugins_with_symlinks.sh $product/eclipse %{_javadir}
+dependencies/replace_platform_plugins_with_symlinks.sh $product/eclipse %{_javadir} %{_jnidir}
pushd $product/eclipse
@@ -704,9 +681,8 @@ sed -i "s|-Xmx512m|-Xmx1024m|g" eclipse.ini
sed -i '1i-protect\nmaster' eclipse.ini
# Temporary fix until https://bugs.eclipse.org/294877 is resolved
-cat >> eclipse.ini <> eclipse.ini <
-XX:CompileCommand=exclude,org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates,instantiateTemplate
@@ -714,10 +690,10 @@ cat >> eclipse.ini < %{buildroot}%{_libdir}/eclipse/.pkgs/Distro%{?dist}
+install -d -m 755 %{buildroot}%{_eclipsedir}/.pkgs
+echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist}
%post platform
touch --no-create /usr/share/icons/hicolor
@@ -892,197 +840,189 @@ if [ -x /usr/bin/gtk-update-icon-cache ]; then
fi
%files swt -f .mfiles-swt
-%{_libdir}/eclipse/plugins/org.eclipse.swt_*
-%{_libdir}/eclipse/plugins/org.eclipse.swt.gtk.linux.*
-%{_libdir}/eclipse/swt.jar
+%{_eclipsedir}/plugins/org.eclipse.swt_*
+%{_eclipsedir}/plugins/org.eclipse.swt.gtk.linux.*
+%{_eclipsedir}/swt.jar
%{_jnidir}/swt.jar
%files platform -f .mfiles-platform
%{_bindir}/eclipse
-%{_libdir}/eclipse/.eclipseproduct
-%{_libdir}/eclipse/.pkgs
-%config %{_libdir}/%{name}/eclipse.ini
+%{_eclipsedir}/eclipse
+%{_eclipsedir}/.eclipseproduct
+%{_eclipsedir}/.pkgs
+%config %{_eclipsedir}/eclipse.ini
%config %{_sysconfdir}/eclipse.ini
/usr/share/applications/*
/usr/share/pixmaps/*
/usr/share/icons/*/*/apps/*
%{_datadir}/appdata/eclipse.appdata.xml
-%{_libdir}/%{name}/eclipse
-%dir %{_libdir}/%{name}/configuration/
-%dir %{_libdir}/%{name}/configuration/org.eclipse.equinox.simpleconfigurator/
-%{_libdir}/%{name}/configuration/config.ini
-%{_libdir}/%{name}/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
-%{_libdir}/%{name}/features/org.eclipse.core.runtime.feature_*
-%{_libdir}/%{name}/features/org.eclipse.e4.rcp_*
-%{_libdir}/%{name}/features/org.eclipse.equinox.core.feature_*
-%{_libdir}/%{name}/features/org.eclipse.help_*
-%{_libdir}/%{name}/features/org.eclipse.platform_*
-%{_libdir}/%{name}/features/org.eclipse.rcp_*
-%{_libdir}/%{name}/plugins/com.ibm.icu_*
-%if 0%{?fedora} >= 24
-%{_libdir}/%{name}/plugins/com.spatial4j_*
-%endif
-%{_libdir}/%{name}/plugins/com.jcraft.jsch_*
-%{_libdir}/%{name}/plugins/javax.servlet-api_*
-%{_libdir}/%{name}/plugins/javax.servlet.jsp_*
-%{_libdir}/%{name}/plugins/javax.xml_*
-%{_libdir}/%{name}/plugins/javax.el-api_*
-%{_libdir}/%{name}/plugins/com.sun.el.javax.el_*
-%{_libdir}/%{name}/plugins/javax.inject_*.jar
-%{_libdir}/%{name}/plugins/org.apache.*
-%{_libdir}/%{name}/plugins/org.glassfish.web.javax.servlet.jsp_*
-%{_libdir}/%{name}/plugins/org.eclipse.ant.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.compare_*
-%{_libdir}/%{name}/plugins/org.eclipse.compare.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.commands_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.contenttype_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.databinding.beans_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.databinding.observable_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.databinding.property_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.databinding_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.expressions_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.externaltools_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.filebuffers_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.filesystem*
-%{_libdir}/%{name}/plugins/org.eclipse.core.jobs_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.net*
-%{_libdir}/%{name}/plugins/org.eclipse.core.resources_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.runtime_*
-%{_libdir}/%{name}/plugins/org.eclipse.core.variables_*
-%{_libdir}/%{name}/plugins/org.eclipse.debug.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.debug.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.ds_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.event_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.http.jetty_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.http.registry_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.http.servlet_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.jsp.jasper_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.jsp.jasper.registry_*
-%{_libdir}/%{name}/plugins/org.eclipse.help_*
-%{_libdir}/%{name}/plugins/org.eclipse.help.base_*
-%{_libdir}/%{name}/plugins/org.eclipse.help.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.help.webapp_*
-%{_libdir}/%{name}/plugins/org.eclipse.jdt.core.compiler.batch_*
-%{_libdir}/%{name}/plugins/org.eclipse.jface_*
-%{_libdir}/%{name}/plugins/org.eclipse.jface.databinding_*
-%{_libdir}/%{name}/plugins/org.eclipse.jface.text_*
-%{_libdir}/%{name}/plugins/org.eclipse.jsch.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.jsch.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.ltk.core.refactoring_*
-%{_libdir}/%{name}/plugins/org.eclipse.ltk.ui.refactoring_*
-%{_libdir}/%{name}/plugins/org.eclipse.platform_*
-%{_libdir}/%{name}/plugins/org.eclipse.platform.doc.user_*
-%{_libdir}/%{name}/plugins/org.eclipse.search_*
-%{_libdir}/%{name}/plugins/org.eclipse.team.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.team.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.text_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.browser_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.cheatsheets_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.console_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.editors_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.externaltools_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.forms_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.ide_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.ide.application_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.intro_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.intro.quicklinks_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.intro.universal_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.monitoring_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.navigator_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.navigator.resources_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.net_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.themes_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.views_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.views.properties.tabbed_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.workbench_*
-%{_libdir}/%{name}/plugins/org.eclipse.ui.workbench.texteditor_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.core.commands_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.core.contexts_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.core.di.annotations_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.core.di.extensions_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.core.di_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.core.services_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.emf.xpath_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.bindings_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.css.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.css.swt.theme_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.css.swt_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.di_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.dialogs_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.model.workbench_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.services_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.swt.gtk_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.widgets_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.workbench.addons.swt_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.workbench.renderers.swt_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.workbench.swt_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.workbench3_*
-%{_libdir}/%{name}/plugins/org.eclipse.e4.ui.workbench_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.util_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.server_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.http_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.continuation_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.io_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.security_*
-%{_libdir}/%{name}/plugins/org.eclipse.jetty.servlet_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.frameworkadmin_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.frameworkadmin.equinox_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.simpleconfigurator.manipulator_*
-%{_libdir}/%{name}/features/org.eclipse.equinox.p2.core.feature_*
-%{_libdir}/%{name}/features/org.eclipse.equinox.p2.extras.feature_*
-%{_libdir}/%{name}/features/org.eclipse.equinox.p2.rcp.feature_*
-%{_libdir}/%{name}/features/org.eclipse.equinox.p2.user.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.director_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.core_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.engine_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.jarprocessor_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.metadata_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.metadata.repository_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.artifact.repository_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.touchpoint.eclipse_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.touchpoint.natives_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.console_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.operations_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.transport.ecf_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.ui.importexport_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.ui.sdk_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.updatechecker_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.garbagecollector_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.directorywatcher_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.publisher_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.publisher.eclipse_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.repository_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.repository.tools_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.reconciler.dropins_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.updatesite_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.security_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.security.ui_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.extensionlocation_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.p2.director.app_*
-%{_libdir}/%{name}/plugins/org.sat4j.core_*
-%{_libdir}/%{name}/plugins/org.sat4j.pb_*
-%{_libdir}/%{name}/plugins/org.tukaani.xz_*
-%{_libdir}/%{name}/plugins/org.w3c.css.sac_*
-%{_libdir}/%{name}/plugins/org.w3c.dom.svg_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.app_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.bidi_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.common_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.concurrent_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.console_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.launcher.gtk.linux.*_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.launcher_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.preferences_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.registry_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.simpleconfigurator_*
-%{_libdir}/%{name}/plugins/org.eclipse.equinox.util_*
-%{_libdir}/%{name}/plugins/org.eclipse.rcp_*
-%{_libdir}/%{name}/plugins/org.eclipse.update.configurator_*
-%{_libdir}/%{name}/readme
-%{_libdir}/%{name}/artifacts.xml
-%{_libdir}/%{name}/p2
+%dir %{_eclipsedir}/configuration/
+%dir %{_eclipsedir}/configuration/org.eclipse.equinox.simpleconfigurator/
+%{_eclipsedir}/configuration/config.ini
+%{_eclipsedir}/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
+%{_eclipsedir}/features/org.eclipse.core.runtime.feature_*
+%{_eclipsedir}/features/org.eclipse.e4.rcp_*
+%{_eclipsedir}/features/org.eclipse.equinox.core.feature_*
+%{_eclipsedir}/features/org.eclipse.equinox.p2.core.feature_*
+%{_eclipsedir}/features/org.eclipse.equinox.p2.extras.feature_*
+%{_eclipsedir}/features/org.eclipse.equinox.p2.rcp.feature_*
+%{_eclipsedir}/features/org.eclipse.equinox.p2.user.ui_*
+%{_eclipsedir}/features/org.eclipse.help_*
+%{_eclipsedir}/features/org.eclipse.platform_*
+%{_eclipsedir}/features/org.eclipse.rcp_*
+%{_eclipsedir}/plugins/com.ibm.icu_*
+%{_eclipsedir}/plugins/com.jcraft.jsch_*
+%{_eclipsedir}/plugins/com.sun.el.javax.el_*
+%{_eclipsedir}/plugins/javax.*
+%{_eclipsedir}/plugins/org.apache.*
+%{_eclipsedir}/plugins/org.eclipse.ant.core_*
+%{_eclipsedir}/plugins/org.eclipse.compare_*
+%{_eclipsedir}/plugins/org.eclipse.compare.core_*
+%{_eclipsedir}/plugins/org.eclipse.core.commands_*
+%{_eclipsedir}/plugins/org.eclipse.core.contenttype_*
+%{_eclipsedir}/plugins/org.eclipse.core.databinding.beans_*
+%{_eclipsedir}/plugins/org.eclipse.core.databinding.observable_*
+%{_eclipsedir}/plugins/org.eclipse.core.databinding.property_*
+%{_eclipsedir}/plugins/org.eclipse.core.databinding_*
+%{_eclipsedir}/plugins/org.eclipse.core.expressions_*
+%{_eclipsedir}/plugins/org.eclipse.core.externaltools_*
+%{_eclipsedir}/plugins/org.eclipse.core.filebuffers_*
+%{_eclipsedir}/plugins/org.eclipse.core.filesystem*
+%{_eclipsedir}/plugins/org.eclipse.core.jobs_*
+%{_eclipsedir}/plugins/org.eclipse.core.net*
+%{_eclipsedir}/plugins/org.eclipse.core.resources_*
+%{_eclipsedir}/plugins/org.eclipse.core.runtime_*
+%{_eclipsedir}/plugins/org.eclipse.core.variables_*
+%{_eclipsedir}/plugins/org.eclipse.debug.core_*
+%{_eclipsedir}/plugins/org.eclipse.debug.ui_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.commands_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.contexts_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.di_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.di.annotations_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.di.extensions_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.di.extensions.supplier_*
+%{_eclipsedir}/plugins/org.eclipse.e4.core.services_*
+%{_eclipsedir}/plugins/org.eclipse.e4.emf.xpath_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.bindings_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.css.core_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.css.swt_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.css.swt.theme_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.di_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.dialogs_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.model.workbench_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.services_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.swt.gtk_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.widgets_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench3_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench.addons.swt_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench.renderers.swt_*
+%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench.swt_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.app_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.bidi_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.common_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.concurrent_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.console_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.ds_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.event_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.frameworkadmin_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.frameworkadmin.equinox_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.http.jetty_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.http.registry_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.http.servlet_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.jsp.jasper_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.jsp.jasper.registry_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.launcher_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.launcher.gtk.linux.*_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.artifact.repository_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.console_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.core_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.director_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.director.app_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.directorywatcher_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.engine_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.extensionlocation_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.garbagecollector_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.jarprocessor_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.metadata_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.metadata.repository_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.operations_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.publisher_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.publisher.eclipse_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.reconciler.dropins_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.repository_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.repository.tools_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.touchpoint.eclipse_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.touchpoint.natives_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.transport.ecf_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui.importexport_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui.sdk_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.updatechecker_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.p2.updatesite_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.preferences_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.registry_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.security_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.security.ui_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.simpleconfigurator_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.simpleconfigurator.manipulator_*
+%{_eclipsedir}/plugins/org.eclipse.equinox.util_*
+%{_eclipsedir}/plugins/org.eclipse.help_*
+%{_eclipsedir}/plugins/org.eclipse.help.base_*
+%{_eclipsedir}/plugins/org.eclipse.help.ui_*
+%{_eclipsedir}/plugins/org.eclipse.help.webapp_*
+%{_eclipsedir}/plugins/org.eclipse.jdt.core.compiler.batch_*
+%{_eclipsedir}/plugins/org.eclipse.jetty.*
+%{_eclipsedir}/plugins/org.eclipse.jface_*
+%{_eclipsedir}/plugins/org.eclipse.jface.databinding_*
+%{_eclipsedir}/plugins/org.eclipse.jface.text_*
+%{_eclipsedir}/plugins/org.eclipse.jsch.core_*
+%{_eclipsedir}/plugins/org.eclipse.jsch.ui_*
+%{_eclipsedir}/plugins/org.eclipse.ltk.core.refactoring_*
+%{_eclipsedir}/plugins/org.eclipse.ltk.ui.refactoring_*
+%{_eclipsedir}/plugins/org.eclipse.platform_*
+%{_eclipsedir}/plugins/org.eclipse.platform.doc.user_*
+%{_eclipsedir}/plugins/org.eclipse.rcp_*
+%{_eclipsedir}/plugins/org.eclipse.search_*
+%{_eclipsedir}/plugins/org.eclipse.team.core_*
+%{_eclipsedir}/plugins/org.eclipse.team.genericeditor.diff.extension_*
+%{_eclipsedir}/plugins/org.eclipse.team.ui_*
+%{_eclipsedir}/plugins/org.eclipse.text_*
+%{_eclipsedir}/plugins/org.eclipse.ui_*
+%{_eclipsedir}/plugins/org.eclipse.ui.browser_*
+%{_eclipsedir}/plugins/org.eclipse.ui.cheatsheets_*
+%{_eclipsedir}/plugins/org.eclipse.ui.console_*
+%{_eclipsedir}/plugins/org.eclipse.ui.editors_*
+%{_eclipsedir}/plugins/org.eclipse.ui.externaltools_*
+%{_eclipsedir}/plugins/org.eclipse.ui.forms_*
+%{_eclipsedir}/plugins/org.eclipse.ui.genericeditor_*
+%{_eclipsedir}/plugins/org.eclipse.ui.ide_*
+%{_eclipsedir}/plugins/org.eclipse.ui.ide.application_*
+%{_eclipsedir}/plugins/org.eclipse.ui.intro_*
+%{_eclipsedir}/plugins/org.eclipse.ui.intro.quicklinks_*
+%{_eclipsedir}/plugins/org.eclipse.ui.intro.universal_*
+%{_eclipsedir}/plugins/org.eclipse.ui.monitoring_*
+%{_eclipsedir}/plugins/org.eclipse.ui.navigator_*
+%{_eclipsedir}/plugins/org.eclipse.ui.navigator.resources_*
+%{_eclipsedir}/plugins/org.eclipse.ui.net_*
+%{_eclipsedir}/plugins/org.eclipse.ui.themes_*
+%{_eclipsedir}/plugins/org.eclipse.ui.views_*
+%{_eclipsedir}/plugins/org.eclipse.ui.views.properties.tabbed_*
+%{_eclipsedir}/plugins/org.eclipse.ui.workbench_*
+%{_eclipsedir}/plugins/org.eclipse.ui.workbench.texteditor_*
+%{_eclipsedir}/plugins/org.eclipse.update.configurator_*
+%{_eclipsedir}/plugins/org.glassfish.web.javax.servlet.jsp_*
+%{_eclipsedir}/plugins/org.kxml2_*
+%{_eclipsedir}/plugins/org.sat4j.core_*
+%{_eclipsedir}/plugins/org.sat4j.pb_*
+%{_eclipsedir}/plugins/org.tukaani.xz_*
+%{_eclipsedir}/plugins/org.w3c.css.sac_*
+%{_eclipsedir}/plugins/org.w3c.dom.svg_*
+%{_eclipsedir}/plugins/org.xmlpull_*
+%doc %{_eclipsedir}/readme
+%{_eclipsedir}/artifacts.xml
+%{_eclipsedir}/p2
%{_javadir}/%{name}/core*
%{_javadir}/%{name}/equinox*
@@ -1101,12 +1041,17 @@ fi
%{_datadir}/java/eclipse-testing
%files equinox-osgi -f .mfiles-equinox-osgi
-%{_libdir}/eclipse/plugins/org.eclipse.osgi_*
-%{_libdir}/eclipse/plugins/org.eclipse.osgi.services_*
-%{_libdir}/eclipse/plugins/org.eclipse.osgi.util_*
-%{_libdir}/eclipse/plugins/org.eclipse.osgi.compatibility.state_*
+%{_eclipsedir}/plugins/org.eclipse.osgi_*
+%{_eclipsedir}/plugins/org.eclipse.osgi.compatibility.state_*
+%{_eclipsedir}/plugins/org.eclipse.osgi.services_*
+%{_eclipsedir}/plugins/org.eclipse.osgi.util_*
%changelog
+* Tue Apr 04 2017 Mat Booth - 1:4.7.0-0.1
+- Update to Oxygen I-build
+- Don't build unsupported GTK2 backend for SWT
+- Move installation to a multilib agnostic location /usr/lib
+
* Mon Apr 03 2017 Mat Booth - 1:4.6.3-3
- Build missing remote ant support jar
diff --git a/get-eclipse.sh b/get-eclipse.sh
index 04888d8..b89e69d 100755
--- a/get-eclipse.sh
+++ b/get-eclipse.sh
@@ -1,7 +1,7 @@
#!/bin/bash
set -e
AGGREGATOR_PATH=git://git.eclipse.org/gitroot/platform/eclipse.platform.releng.aggregator.git
-TAG=S4_6_3_RC4
+TAG=I20170404-0245
rm -rf R4_platform-aggregator-$TAG
rm -rf R4_platform-aggregator-$TAG.tar.xz