Bug 510604 - Port to lucene 6
Additionally consume lucene as an OSGi bundle from orbit instead
of embedding lucene jars inside the index.lucene plug-in
Change-Id: I7dd687d345f2ffbd37a05ce2f32ed3579e7e1833
Signed-off-by: Mat Booth <mat.booth@redhat.com>
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/.classpath b/core/plugins/org.eclipse.dltk.core.index.lucene/.classpath
index 7376f74..098194c 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/.classpath
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/.classpath
@@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-common-5.2.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-core-5.2.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-misc-5.2.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF b/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF
index 391e23b..fd27727 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF
@@ -8,11 +8,10 @@
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
- org.eclipse.dltk.core
+ org.eclipse.dltk.core,
+ org.apache.lucene.core;bundle-version="6.1.0",
+ org.apache.lucene.misc;bundle-version="6.1.0",
+ org.apache.lucene.analyzers-common;bundle-version="6.1.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .,
- lib/lucene-analyzers-common-5.2.1.jar,
- lib/lucene-core-5.2.1.jar,
- lib/lucene-misc-5.2.1.jar
Export-Package: org.eclipse.dltk.core.index.lucene
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/build.properties b/core/plugins/org.eclipse.dltk.core.index.lucene/build.properties
index eb43af9..665bfb0 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/build.properties
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/build.properties
@@ -14,8 +14,5 @@
.,\
plugin.xml,\
plugin.properties,\
- about.html,\
- lib/lucene-analyzers-common-5.2.1.jar,\
- lib/lucene-core-5.2.1.jar,\
- lib/lucene-misc-5.2.1.jar
+ about.html
source.. = src/
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-analyzers-common-5.2.1.jar b/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-analyzers-common-5.2.1.jar
deleted file mode 100644
index aaa26a1..0000000
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-analyzers-common-5.2.1.jar
+++ /dev/null
Binary files differ
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-core-5.2.1.jar b/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-core-5.2.1.jar
deleted file mode 100644
index 18b887f..0000000
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-core-5.2.1.jar
+++ /dev/null
Binary files differ
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-misc-5.2.1.jar b/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-misc-5.2.1.jar
deleted file mode 100644
index ce6eeba..0000000
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/lib/lucene-misc-5.2.1.jar
+++ /dev/null
Binary files differ
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java
index 9af3308..6df98d7 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java
@@ -49,7 +49,7 @@
@Override
public int hashCode() {
final int prime = 31;
- int result = super.hashCode();
+ int result = 1;
result = prime * result + fFalseFlags;
result = prime * result + fTrueFlags;
return result;
@@ -59,7 +59,7 @@
public boolean equals(Object obj) {
if (this == obj)
return true;
- if (!super.equals(obj))
+ if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
@@ -100,10 +100,9 @@
@Override
public Explanation explain(LeafReaderContext context, int doc)
throws IOException {
- final Scorer scorer = scorer(context,
- context.reader().getLiveDocs());
+ final Scorer scorer = scorer(context);
final boolean match = (scorer != null
- && scorer.advance(doc) == doc);
+ && scorer.iterator().advance(doc) == doc);
if (match) {
assert scorer.score() == 0;
return Explanation.match(0, "Match on id" + doc); //$NON-NLS-1$
@@ -113,9 +112,9 @@
}
@Override
- public Scorer scorer(LeafReaderContext context, Bits acceptDocs)
- throws IOException {
- final DocIdSet set = getDocIdSet(context, acceptDocs);
+ public Scorer scorer(LeafReaderContext context) throws IOException {
+ final DocIdSet set = getDocIdSet(context,
+ context.reader().getLiveDocs());
if (set == null) {
return null;
}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
index 9f079d9..38f5ea2 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
@@ -27,6 +27,7 @@
import org.apache.lucene.search.SearcherManager;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSLockFactory;
+import org.apache.lucene.store.SleepingLockWrapper;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -133,9 +134,9 @@
mergeScheduler.setDefaultMaxMergesAndThreads(true);
config.setMergeScheduler(mergeScheduler);
config.setOpenMode(OpenMode.CREATE_OR_APPEND);
- config.setWriteLockTimeout(WRITE_LOCK_TIMEOUT);
config.setCommitOnClose(false);
- return new IndexWriter(indexDir, config);
+ return new IndexWriter(
+ new SleepingLockWrapper(indexDir, WRITE_LOCK_TIMEOUT), config);
}
private IndexWriter getWriter(Path path) {
@@ -171,7 +172,7 @@
try {
if (fTimestampsSearcher == null) {
fTimestampsSearcher = new SearcherManager(getTimestampsWriter(),
- true, new SearcherFactory());
+ true, false, new SearcherFactory());
}
// Try to achieve the up-to-date index state
fTimestampsSearcher.maybeRefresh();
@@ -200,7 +201,7 @@
try {
if (searcher == null) {
searcher = new SearcherManager(
- getIndexWriter(dataType, elementType), true,
+ getIndexWriter(dataType, elementType), true, false,
new SearcherFactory());
fIndexSearchers.get(dataType).put(elementType, searcher);
}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexDirectory.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexDirectory.java
index 20f3b00..bbb37aa 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexDirectory.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexDirectory.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.dltk.internal.core.index.lucene;
-import java.io.File;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
@@ -50,9 +49,10 @@
public RAFIndexOutput(String name) throws IOException {
super(MessageFormat.format(DESCRIPTION, directory.resolve(name)),
+ name,
new RAFOutputStream(
- new FileOutputStream(new File(
- directory.resolve(name).toString())),
+ new FileOutputStream(
+ directory.resolve(name).toFile()),
CHUNK_SIZE),
CHUNK_SIZE);
}
@@ -93,7 +93,6 @@
public IndexOutput createOutput(String name, IOContext context)
throws IOException {
ensureOpen();
- ensureCanWrite(name);
return new RAFIndexOutput(name);
}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java
index f435262..58187b5 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java
@@ -10,7 +10,22 @@
*******************************************************************************/
package org.eclipse.dltk.internal.core.index.lucene;
-import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.*;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_DOC;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_ELEMENT_NAME;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_METADATA;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_PARENT;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_PATH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_QUALIFIER;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_CC_NAME;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_ELEMENT_NAME_LC;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_PARENT;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_PATH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_QUALIFIER;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_FLAGS;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_LENGTH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_NAME_LENGTH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_NAME_OFFSET;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_OFFSET;
import java.io.IOException;
import java.util.ArrayList;
@@ -217,15 +232,15 @@
final String parent, final int trueFlags, final int falseFlags,
final boolean searchForRefs, MatchRule matchRule,
IDLTKSearchScope scope) {
- BooleanQuery query = new BooleanQuery();
+ BooleanQuery.Builder queryBuilder = new BooleanQuery.Builder();
List<String> scripts = SearchScope.getScripts(scope);
if (!scripts.isEmpty()) {
- BooleanQuery scriptQuery = new BooleanQuery();
+ BooleanQuery.Builder scriptQueryBuilder = new BooleanQuery.Builder();
for (String script : scripts) {
- scriptQuery.add(new TermQuery(new Term(F_PATH, script)),
+ scriptQueryBuilder.add(new TermQuery(new Term(F_PATH, script)),
Occur.FILTER);
}
- query.add(scriptQuery, Occur.FILTER);
+ queryBuilder.add(scriptQueryBuilder.build(), Occur.FILTER);
}
if (elementName != null && !elementName.isEmpty()) {
String elementNameLC = elementName.toLowerCase();
@@ -244,19 +259,22 @@
throw new UnsupportedOperationException();
}
if (nameQuery != null) {
- query.add(nameQuery, Occur.FILTER);
+ queryBuilder.add(nameQuery, Occur.FILTER);
}
}
if (qualifier != null && !qualifier.isEmpty()) {
- query.add(new TermQuery(new Term(F_QUALIFIER, qualifier)),
+ queryBuilder.add(new TermQuery(new Term(F_QUALIFIER, qualifier)),
Occur.FILTER);
}
if (parent != null && !parent.isEmpty()) {
- query.add(new TermQuery(new Term(F_PARENT, parent)), Occur.FILTER);
+ queryBuilder.add(new TermQuery(new Term(F_PARENT, parent)),
+ Occur.FILTER);
}
if (trueFlags != 0 || falseFlags != 0) {
- query.add(new BitFlagsQuery(trueFlags, falseFlags), Occur.FILTER);
+ queryBuilder.add(new BitFlagsQuery(trueFlags, falseFlags),
+ Occur.FILTER);
}
+ BooleanQuery query = queryBuilder.build();
return query.clauses().isEmpty() ? null : query;
}
diff --git a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target
index 098997e..bbf2231 100644
--- a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target
+++ b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="DLTK-Neon-4.6" sequenceNumber="2">
+<?pde version="3.8"?><target name="DLTK-Neon-4.6" sequenceNumber="7">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
<unit id="org.h2.source" version="1.3.168.v201212121212"/>
@@ -15,6 +15,15 @@
<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.apache.lucene.analyzers-common" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.analyzers-common.source" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.core" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.core.source" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.misc" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.misc.source" version="6.1.0.v20161115-1612"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20170307180635/repository/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.sdk.ide" version="0.0.0"/>
<unit id="org.eclipse.mylyn.context.sdk.feature.group" version="0.0.0"/>
diff --git a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target
new file mode 100644
index 0000000..c66cf6e
--- /dev/null
+++ b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="DLTK-Oxygen-4.7" sequenceNumber="10">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.antlr.runtime" version="3.0.0.v200803061811"/>
+<unit id="org.antlr.runtime.source" version="3.0.0.v200803061811"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.h2.source" version="1.3.168.v201212121212"/>
+<unit id="org.h2" version="1.3.168.v201212121212"/>
+<unit id="com.google.guava" version="15.0.0.v201403281430"/>
+<unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
+<unit id="org.junit" version="4.12.0.v201504281640"/>
+<unit id="org.junit.source" version="4.12.0.v201504281640"/>
+<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
+<unit id="org.hamcrest.core.source" version="1.3.0.v201303031735"/>
+<unit id="org.apache.lucene.analyzers-common" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.analyzers-common.source" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.core" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.core.source" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.misc" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.misc.source" version="6.1.0.v20161115-1612"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/S20170306214312/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.sdk.ide" version="0.0.0"/>
+<unit id="org.eclipse.mylyn.context.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.mylyn.commons.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.mylyn.sdk_feature.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.rse.feature.group" version="0.0.0"/>
+<repository location="http://download.eclipse.org/releases/oxygen/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.linuxtools.man.feature.group" version="0.0.0"/>
+<repository location="http://download.eclipse.org/linuxtools/update"/>
+</location>
+</locations>
+<targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+</target>
diff --git a/core/releng/org.eclipse.dltk.core.targetplatform/org.eclipse.dltk.core.targetplatform.target b/core/releng/org.eclipse.dltk.core.targetplatform/org.eclipse.dltk.core.targetplatform.target
deleted file mode 100644
index 65f2c90..0000000
--- a/core/releng/org.eclipse.dltk.core.targetplatform/org.eclipse.dltk.core.targetplatform.target
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.6"?>
-
-<target name="DLTK-Build" sequenceNumber="14">
-<locations>
-<location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="com.google.guava" version="12.0.0.v201212092141"/>
-<unit id="org.junit" version="4.11.0.v201303080030"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140114142710/repository/"/>
-</location>
-</locations>
-</target>
diff --git a/core/releng/org.eclipse.dltk.core.targetplatform/pom.xml b/core/releng/org.eclipse.dltk.core.targetplatform/pom.xml
index 123e853..a1c2c7a 100644
--- a/core/releng/org.eclipse.dltk.core.targetplatform/pom.xml
+++ b/core/releng/org.eclipse.dltk.core.targetplatform/pom.xml
@@ -11,7 +11,7 @@
</parent>
<artifactId>org.eclipse.dltk.core.targetplatform</artifactId>
- <packaging>eclipse-target-definition</packaging>
+ <packaging>pom</packaging>
<build>
<plugins>
<plugin>
@@ -32,7 +32,11 @@
<type>target</type>
<classifier>DLTK-Neon-4.6</classifier>
</artifact>
- <!-- More targets could be added here -->
+ <artifact>
+ <file>DLTK-Oxygen-4.7.target</file>
+ <type>target</type>
+ <classifier>DLTK-Oxygen-4.7</classifier>
+ </artifact>
</artifacts>
</configuration>
</execution>