--- bundles/org.eclipse.epp.logging.aeri.ide/META-INF/MANIFEST.MF.orig 2016-08-02 14:00:29.269019664 +0100 +++ bundles/org.eclipse.epp.logging.aeri.ide/META-INF/MANIFEST.MF 2016-08-02 14:00:29.278019557 +0100 @@ -25,7 +25,8 @@ org.eclipse.osgi.services, org.eclipse.core.net, org.eclipse.emf.ecore, - org.apache.lucene.core;bundle-version="[3.5.0,4.0.0)", + org.apache.lucene.core;bundle-version="[4.8.0,5.0.0)", + org.apache.lucene.analysis;bundle-version="[4.8.0,5.0.0)", org.apache.commons.lang3;bundle-version="[3.1.0,4.0.0)", org.eclipse.e4.core.contexts Import-Package: com.google.common.annotations, --- tests/org.eclipse.epp.logging.aeri.ide.tests/META-INF/MANIFEST.MF.orig 2016-08-02 14:00:29.269019664 +0100 +++ tests/org.eclipse.epp.logging.aeri.ide.tests/META-INF/MANIFEST.MF 2016-08-02 14:00:29.280019534 +0100 @@ -24,7 +24,8 @@ org.apache.httpcomponents.httpclient;bundle-version="4.3.6", org.apache.httpcomponents.httpcore;bundle-version="4.3.3", com.google.gson;bundle-version="2.2.4", - org.apache.lucene.core;bundle-version="3.5.0", + org.apache.lucene.core;bundle-version="[4.8.0,5.0.0)", + org.apache.lucene.analysis;bundle-version="[4.8.0,5.0.0)", org.eclipse.epp.logging.aeri.tests, org.eclipse.e4.core.contexts Import-Package: org.apache.commons.lang3.builder, --- tests/org.eclipse.epp.logging.aeri.core.tests/META-INF/MANIFEST.MF.orig 2016-08-02 14:00:29.269019664 +0100 +++ tests/org.eclipse.epp.logging.aeri.core.tests/META-INF/MANIFEST.MF 2016-08-02 14:00:29.283019498 +0100 @@ -24,7 +24,8 @@ org.apache.httpcomponents.httpclient;bundle-version="4.3.6", org.apache.httpcomponents.httpcore;bundle-version="4.3.3", com.google.gson;bundle-version="2.2.4", - org.apache.lucene.core;bundle-version="3.5.0", + org.apache.lucene.core;bundle-version="[4.8.0,5.0.0)", + org.apache.lucene.analysis;bundle-version="[4.8.0,5.0.0)", org.eclipse.epp.logging.aeri.tests;bundle-version="1.100.0" Import-Package: org.apache.commons.lang3.builder, org.apache.commons.lang3.text;version="3.1.0" --- bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/LocalReportsHistory.java.orig 2016-06-05 19:11:13.000000000 +0100 +++ bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/LocalReportsHistory.java 2016-08-02 14:53:04.106306024 +0100 @@ -20,7 +20,7 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; -import org.apache.lucene.analysis.KeywordAnalyzer; +import org.apache.lucene.analysis.core.KeywordAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; @@ -88,8 +88,9 @@ private boolean seen(String fingerprint) { TermQuery query = new TermQuery(new Term(F_IDENTITY, fingerprint)); - IndexSearcher searcher = manager.acquire(); + IndexSearcher searcher = null; try { + searcher = manager.acquire(); TopDocs results = searcher.search(query, 1); boolean foundIdenticalReport = results.totalHits > 0; return foundIdenticalReport; @@ -98,7 +99,9 @@ return false; } finally { try { - manager.release(searcher); + if (searcher != null) { + manager.release(searcher); + } } catch (IOException e) { log(WARN_HISTORY_NOT_AVAILABLE, e); } @@ -143,7 +146,7 @@ private void reopen() { try { - manager.maybeReopen(); + manager.maybeRefresh(); } catch (IOException e) { log(WARN_HISTORY_NOT_AVAILABLE, e); } @@ -174,7 +177,7 @@ } private void createSearchManager() throws IOException { - manager = new SearcherManager(index, null, null); + manager = new SearcherManager(index, null); } @PreDestroy --- bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ProblemsDatabaseProblemsHistory.java.orig 2016-06-05 19:11:13.000000000 +0100 +++ bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ProblemsDatabaseProblemsHistory.java 2016-08-02 14:54:29.823195922 +0100 @@ -25,11 +25,12 @@ import org.apache.commons.io.FileUtils; import org.apache.http.HttpStatus; -import org.apache.lucene.analysis.KeywordAnalyzer; +import org.apache.lucene.analysis.core.KeywordAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; +import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; @@ -97,10 +97,10 @@ @Override protected void startUp() throws Exception { index = createIndexDirectory(); - if (!IndexReader.indexExists(index)) { + if (!DirectoryReader.indexExists(index)) { createInitialIndex(index); } - manager = new SearcherManager(index, null, null); + manager = new SearcherManager(index, null); } @VisibleForTesting @@ -130,8 +130,9 @@ } private Optional seen(Query q) { - IndexSearcher searcher = manager.acquire(); + IndexSearcher searcher = null; try { + searcher = manager.acquire(); TopDocs results = searcher.search(q, 1); if (results.totalHits > 0) { // HIT @@ -202,7 +205,7 @@ @VisibleForTesting protected void indexChanged() throws IOException { - manager.maybeReopen(); + manager.maybeRefresh(); } @PreDestroy --- bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/LuceneHttpCacheStorage.java.orig 2017-01-11 18:35:13.558544352 +0000 +++ bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/LuceneHttpCacheStorage.java 2017-01-11 18:59:47.340053399 +0000 @@ -28,12 +28,12 @@ import org.apache.http.impl.client.cache.HeapResource; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicStatusLine; -import org.apache.lucene.analysis.KeywordAnalyzer; +import org.apache.lucene.analysis.core.KeywordAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; -import org.apache.lucene.document.Fieldable; +import org.apache.lucene.index.IndexableField; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.IndexWriterConfig.OpenMode; @@ -70,12 +70,12 @@ IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_35, new KeywordAnalyzer()); writerConfig.setOpenMode(OpenMode.CREATE_OR_APPEND); writer = new IndexWriter(directory, writerConfig); - searcherManager = new SearcherManager(writer, true, null, null); + searcherManager = new SearcherManager(writer, true, null); } @Override public HttpCacheEntry getEntry(String key) throws IOException { - searcherManager.maybeReopen(); + searcherManager.maybeRefresh(); IndexSearcher searcher = searcherManager.acquire(); try { Query query = new TermQuery(new Term(KEY_FIELD_NAME, key)); @@ -132,14 +132,14 @@ private Document toLuceneDocument(String key, HttpCacheEntry entry) throws IOException { Document document = new Document(); document.add(new Field(KEY_FIELD_NAME, key, Store.NO, Index.NOT_ANALYZED_NO_NORMS)); - for (Fieldable field : toLuceneFields(entry)) { + for (IndexableField field : toLuceneFields(entry)) { document.add(field); } return document; } - private List toLuceneFields(HttpCacheEntry entry) throws IOException { - List fields = new ArrayList<>(); + private List toLuceneFields(HttpCacheEntry entry) throws IOException { + List fields = new ArrayList<>(); fields.add(new Field(REQUEST_DATE_FIELD_NAME, Long.toString(entry.getRequestDate().getTime()), Store.YES, Index.NO)); @@ -174,7 +174,7 @@ return fields; } - private HttpCacheEntry fromLuceneFields(List fields) throws IOException { + private HttpCacheEntry fromLuceneFields(List fields) throws IOException { Date requestDate = null; Date responseDate = null; int statusCode = Integer.MIN_VALUE; @@ -186,7 +186,7 @@ Resource body = null; Map variantMap = new HashMap<>(); - for (Fieldable field : fields) { + for (IndexableField field : fields) { String fieldName = field.name(); if (REQUEST_DATE_FIELD_NAME.equals(fieldName)) { requestDate = parseDateField(field); @@ -215,7 +215,7 @@ throw new IOException(e); } } else if (BODY_FIELD_NAME.equals(fieldName)) { - body = new HeapResource(field.getBinaryValue()); + body = new HeapResource(field.binaryValue().bytes); } else if (fieldName.startsWith(VARIANT_FIELD_NAMES)) { String variantKey = fieldName.substring(VARIANT_FIELD_NAMES_LENGTH + 1); String cacheKey = field.stringValue(); @@ -235,7 +235,7 @@ } } - private Date parseDateField(Fieldable field) throws IOException { + private Date parseDateField(IndexableField field) throws IOException { try { String stringValue = field.stringValue(); long longValue = Long.parseLong(stringValue); @@ -245,7 +245,7 @@ } } - private int parseIntField(Fieldable field) throws IOException { + private int parseIntField(IndexableField field) throws IOException { try { String stringValue = field.stringValue(); return Integer.parseInt(stringValue);