| |
@@ -1,2421 +0,0 @@
|
| |
- From 23e4a144935cf4237bb96e26382282ed4961b198 Mon Sep 17 00:00:00 2001
|
| |
- From: Mat Booth <mat.booth@redhat.com>
|
| |
- Date: Mon, 7 Aug 2017 20:45:54 +0100
|
| |
- Subject: [PATCH 1/2] Port to Lucene 5
|
| |
-
|
| |
- ---
|
| |
- .../apache/maven/index/cli/NexusIndexerCli.java | 2 +-
|
| |
- .../index/cli/AbstractNexusIndexerCliTest.java | 20 ++++---
|
| |
- indexer-core/pom.xml | 10 ++++
|
| |
- .../org/apache/maven/index/DefaultIndexer.java | 3 +-
|
| |
- .../apache/maven/index/DefaultIndexerEngine.java | 6 +-
|
| |
- .../maven/index/DefaultIteratorResultSet.java | 17 ++++--
|
| |
- .../apache/maven/index/DefaultNexusIndexer.java | 5 +-
|
| |
- .../apache/maven/index/DefaultQueryCreator.java | 38 +++++++------
|
| |
- .../apache/maven/index/DefaultScannerListener.java | 7 ++-
|
| |
- .../apache/maven/index/DefaultSearchEngine.java | 6 +-
|
| |
- .../java/org/apache/maven/index/QueryCreator.java | 2 +-
|
| |
- .../index/context/AbstractIndexingContext.java | 3 +-
|
| |
- .../index/context/DefaultIndexingContext.java | 66 ++++++++++++++--------
|
| |
- .../org/apache/maven/index/context/IndexUtils.java | 55 ++++++++----------
|
| |
- .../maven/index/context/MergedIndexingContext.java | 4 +-
|
| |
- .../apache/maven/index/context/NexusAnalyzer.java | 53 +++++++----------
|
| |
- .../maven/index/context/NexusIndexWriter.java | 3 +-
|
| |
- .../maven/index/context/NexusLegacyAnalyzer.java | 59 +++++++------------
|
| |
- .../index/creator/JarFileContentsIndexCreator.java | 1 +
|
| |
- .../incremental/DefaultIncrementalHandler.java | 5 +-
|
| |
- .../maven/index/packer/DefaultIndexPacker.java | 65 ++++++++++++++++++---
|
| |
- .../maven/index/packer/IndexPackingRequest.java | 2 +-
|
| |
- .../maven/index/treeview/DefaultIndexTreeView.java | 4 +-
|
| |
- .../maven/index/updater/DefaultIndexUpdater.java | 57 ++++++++++++++-----
|
| |
- .../maven/index/updater/FSDirectoryFactory.java | 2 +-
|
| |
- .../maven/index/updater/IndexDataWriter.java | 49 ++++++++--------
|
| |
- .../maven/index/AbstractNexusIndexerTest.java | 5 +-
|
| |
- .../maven/index/AbstractRepoNexusIndexerTest.java | 5 +-
|
| |
- .../maven/index/DefaultIndexNexusIndexerTest.java | 12 ++--
|
| |
- .../apache/maven/index/FSDirectoryDeleteTest.java | 4 +-
|
| |
- .../maven/index/FullIndexNexusIndexerTest.java | 19 ++++---
|
| |
- .../maven/index/Index20081108RegressionTest.java | 2 +
|
| |
- .../maven/index/Nexus1911IncrementalTest.java | 20 ++++---
|
| |
- .../maven/index/Nexus3881NexusIndexerTest.java | 9 ++-
|
| |
- .../maven/index/Nexus737NexusIndexerTest.java | 7 ++-
|
| |
- .../org/apache/maven/index/NexusIndexerTest.java | 31 ++++++++--
|
| |
- .../maven/index/SearchWithAnEmptyIndexTest.java | 20 +++----
|
| |
- .../archetype/NexusArchetypeDataSourceTest.java | 2 +-
|
| |
- .../maven/index/context/NexusAnalyzerTest.java | 11 ++--
|
| |
- .../creator/OsgiArtifactIndexCreatorTest.java | 27 +++++----
|
| |
- .../index/updater/DefaultIndexUpdaterTest.java | 25 ++++++--
|
| |
- .../apache/maven/index/updater/IndexDataTest.java | 5 +-
|
| |
- pom.xml | 24 +++-----
|
| |
- 43 files changed, 445 insertions(+), 327 deletions(-)
|
| |
-
|
| |
- diff --git a/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java b/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
|
| |
- index 4e15375..3436efb 100644
|
| |
- --- a/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
|
| |
- +++ b/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
|
| |
- @@ -412,7 +412,7 @@ public class NexusIndexerCli
|
| |
-
|
| |
- long tstart = System.currentTimeMillis();
|
| |
-
|
| |
- - final FSDirectory directory = FSDirectory.open( outputFolder );
|
| |
- + final FSDirectory directory = FSDirectory.open( outputFolder.toPath() );
|
| |
-
|
| |
- final List<IndexCreator> indexers = getIndexers( cli, plexus );
|
| |
-
|
| |
- diff --git a/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java b/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java
|
| |
- index 8f89365..93d59de 100644
|
| |
- --- a/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java
|
| |
- +++ b/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java
|
| |
- @@ -19,6 +19,12 @@ package org.apache.maven.index.cli;
|
| |
- * under the License.
|
| |
- */
|
| |
-
|
| |
- +import java.io.File;
|
| |
- +import java.io.IOException;
|
| |
- +import java.io.OutputStream;
|
| |
- +import java.util.List;
|
| |
- +import java.util.Random;
|
| |
- +
|
| |
- import org.apache.lucene.search.Query;
|
| |
- import org.apache.maven.index.FlatSearchRequest;
|
| |
- import org.apache.maven.index.FlatSearchResponse;
|
| |
- @@ -29,12 +35,7 @@ import org.apache.maven.index.context.IndexCreator;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- import org.codehaus.plexus.PlexusTestCase;
|
| |
- import org.codehaus.plexus.util.FileUtils;
|
| |
- -
|
| |
- -import java.io.File;
|
| |
- -import java.io.IOException;
|
| |
- -import java.io.OutputStream;
|
| |
- -import java.util.List;
|
| |
- -import java.util.Random;
|
| |
- +import org.junit.Ignore;
|
| |
-
|
| |
- public abstract class AbstractNexusIndexerCliTest
|
| |
- extends PlexusTestCase
|
| |
- @@ -131,7 +132,8 @@ public abstract class AbstractNexusIndexerCliTest
|
| |
- int code = execute( "--unpack", "--index", DEST_DIR, "-d", UNPACK_DIR );
|
| |
- String output = out.toString();
|
| |
- assertEquals( output, 0, code );
|
| |
- - assertIndexFiles( UNPACK_DIR );
|
| |
- + //FIXME: Looks strange that a newly generated index can not be reopened.
|
| |
- + //assertIndexFiles( UNPACK_DIR );
|
| |
- }
|
| |
-
|
| |
- public void testMissingArgs()
|
| |
- @@ -217,9 +219,11 @@ public abstract class AbstractNexusIndexerCliTest
|
| |
- private void assertIndexFiles()
|
| |
- throws Exception
|
| |
- {
|
| |
- - assertIndexFiles( INDEX_DIR );
|
| |
- + //FIXME: Looks strange that a newly generated index can not be reopened.
|
| |
- + //assertIndexFiles( INDEX_DIR );
|
| |
- }
|
| |
-
|
| |
- + @Ignore("Old lucene format not supported")
|
| |
- private void assertIndexFiles( final String indexDir )
|
| |
- throws Exception
|
| |
- {
|
| |
- diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml
|
| |
- index e6f4d8c..23097cb 100644
|
| |
- --- a/indexer-core/pom.xml
|
| |
- +++ b/indexer-core/pom.xml
|
| |
- @@ -57,6 +57,16 @@ under the License.
|
| |
- </dependency>
|
| |
- <dependency>
|
| |
- <groupId>org.apache.lucene</groupId>
|
| |
- + <artifactId>lucene-queryparser</artifactId>
|
| |
- + <version>${lucene.version}</version>
|
| |
- + </dependency>
|
| |
- + <dependency>
|
| |
- + <groupId>org.apache.lucene</groupId>
|
| |
- + <artifactId>lucene-analyzers-common</artifactId>
|
| |
- + <version>${lucene.version}</version>
|
| |
- + </dependency>
|
| |
- + <dependency>
|
| |
- + <groupId>org.apache.lucene</groupId>
|
| |
- <artifactId>lucene-highlighter</artifactId>
|
| |
- <version>${lucene.version}</version>
|
| |
- </dependency>
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
|
| |
- index ac7ec24..4b96cea 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
|
| |
- @@ -28,8 +28,7 @@ import java.util.ArrayList;
|
| |
- import java.util.Collection;
|
| |
- import java.util.Collections;
|
| |
- import java.util.List;
|
| |
- -
|
| |
- -import org.apache.lucene.queryParser.ParseException;
|
| |
- +import org.apache.lucene.queryparser.classic.ParseException;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- import org.apache.maven.index.context.ContextMemberProvider;
|
| |
- import org.apache.maven.index.context.DefaultIndexingContext;
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
|
| |
- index 6efe8d9..b3665e3 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
|
| |
- @@ -26,8 +26,8 @@ import java.util.Set;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.document.Field;
|
| |
- -import org.apache.lucene.document.Fieldable;
|
| |
- import org.apache.lucene.index.IndexWriter;
|
| |
- +import org.apache.lucene.index.IndexableField;
|
| |
- import org.apache.lucene.index.Term;
|
| |
- import org.apache.lucene.search.IndexSearcher;
|
| |
- import org.apache.lucene.search.TermQuery;
|
| |
- @@ -139,8 +139,8 @@ public class DefaultIndexerEngine
|
| |
-
|
| |
- for ( Object o : d.getFields() )
|
| |
- {
|
| |
- - Fieldable f = (Fieldable) o;
|
| |
- - if ( f.isStored() )
|
| |
- + IndexableField f = (IndexableField) o;
|
| |
- + if ( f.fieldType().stored())
|
| |
- {
|
| |
- result.put( f.name(), f.stringValue() );
|
| |
- }
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java
|
| |
- index 85410d8..85dd275 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java
|
| |
- @@ -24,6 +24,7 @@ import java.io.StringReader;
|
| |
- import java.util.ArrayList;
|
| |
- import java.util.Iterator;
|
| |
- import java.util.List;
|
| |
- +import org.apache.lucene.analysis.Analyzer;
|
| |
-
|
| |
- import org.apache.lucene.analysis.CachingTokenFilter;
|
| |
- import org.apache.lucene.analysis.TokenStream;
|
| |
- @@ -99,7 +100,7 @@ public class DefaultIteratorResultSet
|
| |
- for ( int i = 0; i < contexts.size(); i++ )
|
| |
- {
|
| |
- starts[i] = maxDoc;
|
| |
- - maxDoc += acquiredSearchers.get( i ).maxDoc(); // compute maxDocs
|
| |
- + maxDoc += acquiredSearchers.get( i ).getIndexReader().maxDoc(); // compute maxDocs
|
| |
- }
|
| |
- starts[contexts.size()] = maxDoc;
|
| |
- }
|
| |
- @@ -364,9 +365,11 @@ public class DefaultIteratorResultSet
|
| |
- {
|
| |
- text = text.replace( '/', '.' ).replaceAll( "^\\.", "" ).replaceAll( "\n\\.", "\n" );
|
| |
- }
|
| |
- -
|
| |
- - CachingTokenFilter tokenStream =
|
| |
- - new CachingTokenFilter( context.getAnalyzer().tokenStream( field.getKey(), new StringReader( text ) ) );
|
| |
- +
|
| |
- + Analyzer analyzer = context.getAnalyzer();
|
| |
- + TokenStream baseTokenStream = analyzer.tokenStream( field.getKey(), new StringReader( text ) );
|
| |
- +
|
| |
- + CachingTokenFilter tokenStream = new CachingTokenFilter(baseTokenStream);
|
| |
-
|
| |
- Formatter formatter = null;
|
| |
-
|
| |
- @@ -376,12 +379,16 @@ public class DefaultIteratorResultSet
|
| |
- }
|
| |
- else
|
| |
- {
|
| |
- + tokenStream.reset();
|
| |
- + tokenStream.end();
|
| |
- tokenStream.close();
|
| |
- throw new UnsupportedOperationException( "Hightlight more \"" + hr.getHighlightMode().toString()
|
| |
- + "\" is not supported!" );
|
| |
- }
|
| |
-
|
| |
- - return getBestFragments( hr.getQuery(), formatter, tokenStream, text, 3 );
|
| |
- + List<String> bestFragments = getBestFragments( hr.getQuery(), formatter, tokenStream, text, 3 );
|
| |
- +
|
| |
- + return bestFragments;
|
| |
- }
|
| |
-
|
| |
- protected final List<String> getBestFragments( Query query, Formatter formatter, TokenStream tokenStream,
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
|
| |
- index e9603c5..f9a0d18 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
|
| |
- @@ -26,8 +26,7 @@ import java.util.Collections;
|
| |
- import java.util.List;
|
| |
- import java.util.Map;
|
| |
- import java.util.concurrent.ConcurrentHashMap;
|
| |
- -
|
| |
- -import org.apache.lucene.queryParser.ParseException;
|
| |
- +import org.apache.lucene.queryparser.classic.ParseException;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.FSDirectory;
|
| |
- @@ -271,7 +270,7 @@ public class DefaultNexusIndexer
|
| |
- IndexingContext tmpContext = null;
|
| |
- try
|
| |
- {
|
| |
- - final FSDirectory directory = FSDirectory.open( tmpDir );
|
| |
- + final FSDirectory directory = FSDirectory.open( tmpDir.toPath() );
|
| |
- if ( update )
|
| |
- {
|
| |
- IndexUtils.copyDirectory( context.getIndexDirectory(), directory );
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
|
| |
- index aae6040..c03e31d 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
|
| |
- @@ -24,16 +24,16 @@ import java.io.StringReader;
|
| |
-
|
| |
- import org.apache.lucene.analysis.TokenStream;
|
| |
- import org.apache.lucene.index.Term;
|
| |
- -import org.apache.lucene.queryParser.ParseException;
|
| |
- -import org.apache.lucene.queryParser.QueryParser;
|
| |
- -import org.apache.lucene.queryParser.QueryParser.Operator;
|
| |
- +import org.apache.lucene.queryparser.classic.ParseException;
|
| |
- +import org.apache.lucene.queryparser.classic.QueryParser;
|
| |
- +import org.apache.lucene.queryparser.classic.QueryParser.Operator;
|
| |
- import org.apache.lucene.search.BooleanClause.Occur;
|
| |
- import org.apache.lucene.search.BooleanQuery;
|
| |
- +import org.apache.lucene.search.BoostQuery;
|
| |
- import org.apache.lucene.search.PrefixQuery;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- import org.apache.lucene.search.TermQuery;
|
| |
- import org.apache.lucene.search.WildcardQuery;
|
| |
- -import org.apache.lucene.util.Version;
|
| |
- import org.apache.maven.index.context.NexusAnalyzer;
|
| |
- import org.apache.maven.index.creator.JarFileContentsIndexCreator;
|
| |
- import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
|
| |
- @@ -140,7 +140,7 @@ public class DefaultQueryCreator
|
| |
- }
|
| |
- else
|
| |
- {
|
| |
- - QueryParser qp = new QueryParser( Version.LUCENE_24, field, new NexusAnalyzer() );
|
| |
- + QueryParser qp = new QueryParser( field, new NexusAnalyzer() );
|
| |
-
|
| |
- // small cheap trick
|
| |
- // if a query is not "expert" (does not contain field:val kind of expression)
|
| |
- @@ -272,7 +272,7 @@ public class DefaultQueryCreator
|
| |
- {
|
| |
- String qpQuery = query.toLowerCase().replaceAll( "\\.", " " ).replaceAll( "/", " " );
|
| |
- // tokenization should happen against the field!
|
| |
- - QueryParser qp = new QueryParser( Version.LUCENE_30, indexerField.getKey(), new NexusAnalyzer() );
|
| |
- + QueryParser qp = new QueryParser( indexerField.getKey(), new NexusAnalyzer() );
|
| |
- qp.setDefaultOperator( Operator.AND );
|
| |
- return qp.parse( qpQuery );
|
| |
- }
|
| |
- @@ -285,18 +285,18 @@ public class DefaultQueryCreator
|
| |
- }
|
| |
- else
|
| |
- {
|
| |
- - BooleanQuery bq = new BooleanQuery();
|
| |
- + BooleanQuery.Builder bq = new BooleanQuery.Builder();
|
| |
-
|
| |
- Term t = new Term( indexerField.getKey(), query );
|
| |
-
|
| |
- bq.add( new TermQuery( t ), Occur.SHOULD );
|
| |
-
|
| |
- PrefixQuery pq = new PrefixQuery( t );
|
| |
- - pq.setBoost( 0.8f );
|
| |
- + BoostQuery boostedQuery = new BoostQuery(pq, 0.8f);
|
| |
-
|
| |
- - bq.add( pq, Occur.SHOULD );
|
| |
- + bq.add( boostedQuery, Occur.SHOULD );
|
| |
-
|
| |
- - return bq;
|
| |
- + return bq.build();
|
| |
- }
|
| |
- }
|
| |
- else
|
| |
- @@ -305,7 +305,7 @@ public class DefaultQueryCreator
|
| |
- String qpQuery = query;
|
| |
-
|
| |
- // tokenization should happen against the field!
|
| |
- - QueryParser qp = new QueryParser( Version.LUCENE_30, indexerField.getKey(), new NexusAnalyzer() );
|
| |
- + QueryParser qp = new QueryParser( indexerField.getKey(), new NexusAnalyzer() );
|
| |
- qp.setDefaultOperator( Operator.AND );
|
| |
-
|
| |
- // small cheap trick
|
| |
- @@ -331,7 +331,7 @@ public class DefaultQueryCreator
|
| |
- {
|
| |
- // qpQuery = "\"" + qpQuery + "\"";
|
| |
-
|
| |
- - BooleanQuery q1 = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q1 = new BooleanQuery.Builder();
|
| |
-
|
| |
- q1.add( qp.parse( qpQuery ), Occur.SHOULD );
|
| |
-
|
| |
- @@ -358,17 +358,17 @@ public class DefaultQueryCreator
|
| |
-
|
| |
- if ( q2 == null )
|
| |
- {
|
| |
- - return q1;
|
| |
- + return q1.build();
|
| |
- }
|
| |
- else
|
| |
- {
|
| |
- - BooleanQuery bq = new BooleanQuery();
|
| |
- + BooleanQuery.Builder bq = new BooleanQuery.Builder();
|
| |
-
|
| |
- // trick with order
|
| |
- bq.add( q2, Occur.SHOULD );
|
| |
- - bq.add( q1, Occur.SHOULD );
|
| |
- + bq.add( q1.build(), Occur.SHOULD );
|
| |
-
|
| |
- - return bq;
|
| |
- + return bq.build();
|
| |
- }
|
| |
- }
|
| |
- catch ( ParseException e )
|
| |
- @@ -467,7 +467,8 @@ public class DefaultQueryCreator
|
| |
- {
|
| |
- try
|
| |
- {
|
| |
- - TokenStream ts = nexusAnalyzer.reusableTokenStream( indexerField.getKey(), new StringReader( query ) );
|
| |
- + TokenStream ts = nexusAnalyzer.tokenStream(indexerField.getKey(), new StringReader(query));
|
| |
- + ts.reset();
|
| |
-
|
| |
- int result = 0;
|
| |
-
|
| |
- @@ -475,6 +476,9 @@ public class DefaultQueryCreator
|
| |
- {
|
| |
- result++;
|
| |
- }
|
| |
- +
|
| |
- + ts.end();
|
| |
- + ts.close();
|
| |
-
|
| |
- return result;
|
| |
- }
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
|
| |
- index 5a277fc..bde581f 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
|
| |
- @@ -28,10 +28,12 @@ import java.util.Set;
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.index.CorruptIndexException;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.index.Term;
|
| |
- import org.apache.lucene.search.IndexSearcher;
|
| |
- import org.apache.lucene.search.TermQuery;
|
| |
- import org.apache.lucene.search.TopScoreDocCollector;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- import org.codehaus.plexus.logging.AbstractLogEnabled;
|
| |
-
|
| |
- @@ -212,10 +214,11 @@ public class DefaultScannerListener
|
| |
- try
|
| |
- {
|
| |
- final IndexReader r = indexSearcher.getIndexReader();
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
-
|
| |
- for ( int i = 0; i < r.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !r.isDeleted( i ) )
|
| |
- + if (liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- Document d = r.document( i );
|
| |
-
|
| |
- @@ -260,7 +263,7 @@ public class DefaultScannerListener
|
| |
- {
|
| |
- for ( String uinfo : uinfos )
|
| |
- {
|
| |
- - TopScoreDocCollector collector = TopScoreDocCollector.create( 1, false );
|
| |
- + TopScoreDocCollector collector = TopScoreDocCollector.create( 1 );
|
| |
-
|
| |
- indexSearcher.search( new TermQuery( new Term( ArtifactInfo.UINFO, uinfo ) ), collector );
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
|
| |
- index 85c443c..2d90360 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
|
| |
- @@ -320,7 +320,7 @@ public class DefaultSearchEngine
|
| |
- if ( AbstractSearchRequest.UNDEFINED != topHitCount )
|
| |
- {
|
| |
- // count is set, simply just execute it as-is
|
| |
- - final TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount, true );
|
| |
- + final TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount );
|
| |
-
|
| |
- indexSearcher.search( query, hits );
|
| |
-
|
| |
- @@ -332,7 +332,7 @@ public class DefaultSearchEngine
|
| |
- topHitCount = 1000;
|
| |
-
|
| |
- // perform search
|
| |
- - TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount, true );
|
| |
- + TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount );
|
| |
- indexSearcher.search( query, hits );
|
| |
-
|
| |
- // check total hits against, does it fit?
|
| |
- @@ -351,7 +351,7 @@ public class DefaultSearchEngine
|
| |
- }
|
| |
-
|
| |
- // redo all, but this time with correct numbers
|
| |
- - hits = TopScoreDocCollector.create( topHitCount, true );
|
| |
- + hits = TopScoreDocCollector.create( topHitCount );
|
| |
- indexSearcher.search( query, hits );
|
| |
- }
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/QueryCreator.java b/indexer-core/src/main/java/org/apache/maven/index/QueryCreator.java
|
| |
- index e169d08..c413c4c 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/QueryCreator.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/QueryCreator.java
|
| |
- @@ -19,7 +19,7 @@ package org.apache.maven.index;
|
| |
- * under the License.
|
| |
- */
|
| |
-
|
| |
- -import org.apache.lucene.queryParser.ParseException;
|
| |
- +import org.apache.lucene.queryparser.classic.ParseException;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- import org.apache.maven.index.expr.SearchExpression;
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/AbstractIndexingContext.java b/indexer-core/src/main/java/org/apache/maven/index/context/AbstractIndexingContext.java
|
| |
- index 37ec5c1..c2e864d 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/AbstractIndexingContext.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/AbstractIndexingContext.java
|
| |
- @@ -28,7 +28,8 @@ public abstract class AbstractIndexingContext
|
| |
- {
|
| |
- try
|
| |
- {
|
| |
- - return getIndexDirectory().fileExists( INDEX_UPDATER_PROPERTIES_FILE );
|
| |
- + getIndexDirectory().fileLength(INDEX_UPDATER_PROPERTIES_FILE);
|
| |
- + return true;
|
| |
- }
|
| |
- catch ( IOException e )
|
| |
- {
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
|
| |
- index dda3b18..81f7c3c 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
|
| |
- @@ -28,15 +28,15 @@ import java.util.Date;
|
| |
- import java.util.LinkedHashSet;
|
| |
- import java.util.List;
|
| |
- import java.util.Set;
|
| |
- -
|
| |
- import org.apache.lucene.analysis.Analyzer;
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.document.Field;
|
| |
- import org.apache.lucene.index.CorruptIndexException;
|
| |
- -import org.apache.lucene.index.IndexFileNameFilter;
|
| |
- +import org.apache.lucene.index.DirectoryReader;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- import org.apache.lucene.index.IndexWriter;
|
| |
- import org.apache.lucene.index.IndexWriterConfig;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.index.Term;
|
| |
- import org.apache.lucene.search.IndexSearcher;
|
| |
- import org.apache.lucene.search.SearcherManager;
|
| |
- @@ -45,6 +45,8 @@ import org.apache.lucene.search.TopDocs;
|
| |
- import org.apache.lucene.search.TopScoreDocCollector;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.FSDirectory;
|
| |
- +import org.apache.lucene.store.LockObtainFailedException;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- import org.apache.maven.index.artifact.GavCalculator;
|
| |
- import org.apache.maven.index.artifact.M2GavCalculator;
|
| |
- @@ -66,11 +68,11 @@ public class DefaultIndexingContext
|
| |
-
|
| |
- public static final String FLD_DESCRIPTOR = "DESCRIPTOR";
|
| |
-
|
| |
- - private static final String FLD_DESCRIPTOR_CONTENTS = "NexusIndex";
|
| |
- + public static final String FLD_DESCRIPTOR_CONTENTS = "NexusIndex";
|
| |
-
|
| |
- - private static final String FLD_IDXINFO = "IDXINFO";
|
| |
- + public static final String FLD_IDXINFO = "IDXINFO";
|
| |
-
|
| |
- - private static final String VERSION = "1.0";
|
| |
- + public static final String VERSION = "1.0";
|
| |
-
|
| |
- private static final Term DESCRIPTOR_TERM = new Term( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS );
|
| |
-
|
| |
- @@ -153,7 +155,7 @@ public class DefaultIndexingContext
|
| |
- throws IOException, ExistingLuceneIndexMismatchException
|
| |
- {
|
| |
- this( id, repositoryId, repository, repositoryUrl, indexUpdateUrl, indexCreators,
|
| |
- - FSDirectory.open( indexDirectoryFile ), reclaimIndex );
|
| |
- + FSDirectory.open( indexDirectoryFile.toPath() ), reclaimIndex );
|
| |
-
|
| |
- this.indexDirectoryFile = indexDirectoryFile;
|
| |
- }
|
| |
- @@ -168,7 +170,7 @@ public class DefaultIndexingContext
|
| |
-
|
| |
- if ( indexDirectory instanceof FSDirectory )
|
| |
- {
|
| |
- - this.indexDirectoryFile = ( (FSDirectory) indexDirectory ).getDirectory();
|
| |
- + this.indexDirectoryFile = ( (FSDirectory) indexDirectory ).getDirectory().toFile();
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- @@ -185,14 +187,17 @@ public class DefaultIndexingContext
|
| |
- private void prepareIndex( boolean reclaimIndex )
|
| |
- throws IOException, ExistingLuceneIndexMismatchException
|
| |
- {
|
| |
- - if ( IndexReader.indexExists( indexDirectory ) )
|
| |
- + if ( DirectoryReader.indexExists( indexDirectory ) )
|
| |
- {
|
| |
- try
|
| |
- {
|
| |
- // unlock the dir forcibly
|
| |
- - if ( IndexWriter.isLocked( indexDirectory ) )
|
| |
- + try
|
| |
- + {
|
| |
- + indexDirectory.obtainLock(IndexWriter.WRITE_LOCK_NAME).close();
|
| |
- + }
|
| |
- + catch (LockObtainFailedException failed)
|
| |
- {
|
| |
- - IndexWriter.unlock( indexDirectory );
|
| |
- }
|
| |
-
|
| |
- openAndWarmup();
|
| |
- @@ -227,9 +232,12 @@ public class DefaultIndexingContext
|
| |
- closeReaders();
|
| |
-
|
| |
- // unlock the dir forcibly
|
| |
- - if ( IndexWriter.isLocked( indexDirectory ) )
|
| |
- + try
|
| |
- + {
|
| |
- + indexDirectory.obtainLock(IndexWriter.WRITE_LOCK_NAME).close();
|
| |
- + }
|
| |
- + catch (LockObtainFailedException failed)
|
| |
- {
|
| |
- - IndexWriter.unlock( indexDirectory );
|
| |
- }
|
| |
-
|
| |
- deleteIndexFiles( true );
|
| |
- @@ -258,7 +266,7 @@ public class DefaultIndexingContext
|
| |
- // check for descriptor if this is not a "virgin" index
|
| |
- if ( getSize() > 0 )
|
| |
- {
|
| |
- - final TopScoreDocCollector collector = TopScoreDocCollector.create( 1, false );
|
| |
- + final TopScoreDocCollector collector = TopScoreDocCollector.create( 1 );
|
| |
- final IndexSearcher indexSearcher = acquireIndexSearcher();
|
| |
- try
|
| |
- {
|
| |
- @@ -334,28 +342,35 @@ public class DefaultIndexingContext
|
| |
-
|
| |
- if ( names != null )
|
| |
- {
|
| |
- - IndexFileNameFilter filter = IndexFileNameFilter.getFilter();
|
| |
-
|
| |
- - for ( int i = 0; i < names.length; i++ )
|
| |
- + for (String name : names)
|
| |
- {
|
| |
- - if ( filter.accept( null, names[i] ) )
|
| |
- + if (! (name.equals(INDEX_PACKER_PROPERTIES_FILE) || name.equals(INDEX_UPDATER_PROPERTIES_FILE) ))
|
| |
- {
|
| |
- - indexDirectory.deleteFile( names[i] );
|
| |
- + indexDirectory.deleteFile(name);
|
| |
- }
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- if ( full )
|
| |
- {
|
| |
- - if ( indexDirectory.fileExists( INDEX_PACKER_PROPERTIES_FILE ) )
|
| |
- + try
|
| |
- {
|
| |
- indexDirectory.deleteFile( INDEX_PACKER_PROPERTIES_FILE );
|
| |
- }
|
| |
- + catch ( IOException e )
|
| |
- + {
|
| |
- + // Does not exist
|
| |
- + }
|
| |
-
|
| |
- - if ( indexDirectory.fileExists( INDEX_UPDATER_PROPERTIES_FILE ) )
|
| |
- + try
|
| |
- {
|
| |
- indexDirectory.deleteFile( INDEX_UPDATER_PROPERTIES_FILE );
|
| |
- }
|
| |
- + catch ( IOException e )
|
| |
- + {
|
| |
- + // Does not exist
|
| |
- + }
|
| |
- }
|
| |
-
|
| |
- IndexUtils.deleteTimestamp( indexDirectory );
|
| |
- @@ -524,7 +539,6 @@ public class DefaultIndexingContext
|
| |
- public synchronized void optimize()
|
| |
- throws CorruptIndexException, IOException
|
| |
- {
|
| |
- - getIndexWriter().optimize();
|
| |
- commit();
|
| |
- }
|
| |
-
|
| |
- @@ -590,14 +604,15 @@ public class DefaultIndexingContext
|
| |
- try
|
| |
- {
|
| |
- final IndexWriter w = getIndexWriter();
|
| |
- - final IndexReader directoryReader = IndexReader.open( directory, true );
|
| |
- + final IndexReader directoryReader = DirectoryReader.open( directory);
|
| |
- TopScoreDocCollector collector = null;
|
| |
- try
|
| |
- {
|
| |
- int numDocs = directoryReader.maxDoc();
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(directoryReader);
|
| |
- for ( int i = 0; i < numDocs; i++ )
|
| |
- {
|
| |
- - if ( directoryReader.isDeleted( i ) )
|
| |
- + if (liveDocs != null && ! liveDocs.get(i) )
|
| |
- {
|
| |
- continue;
|
| |
- }
|
| |
- @@ -611,7 +626,7 @@ public class DefaultIndexingContext
|
| |
- String uinfo = d.get( ArtifactInfo.UINFO );
|
| |
- if ( uinfo != null )
|
| |
- {
|
| |
- - collector = TopScoreDocCollector.create( 1, false );
|
| |
- + collector = TopScoreDocCollector.create( 1 );
|
| |
- s.search( new TermQuery( new Term( ArtifactInfo.UINFO, uinfo ) ), collector );
|
| |
- if ( collector.getTotalHits() == 0 )
|
| |
- {
|
| |
- @@ -699,10 +714,11 @@ public class DefaultIndexingContext
|
| |
- Set<String> allGroups = new LinkedHashSet<String>();
|
| |
-
|
| |
- int numDocs = r.maxDoc();
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
-
|
| |
- for ( int i = 0; i < numDocs; i++ )
|
| |
- {
|
| |
- - if ( r.isDeleted( i ) )
|
| |
- + if (liveDocs != null && !liveDocs.get(i) )
|
| |
- {
|
| |
- continue;
|
| |
- }
|
| |
- @@ -759,7 +775,7 @@ public class DefaultIndexingContext
|
| |
- protected Set<String> getGroups( String field, String filedValue, String listField )
|
| |
- throws IOException, CorruptIndexException
|
| |
- {
|
| |
- - final TopScoreDocCollector collector = TopScoreDocCollector.create( 1, false );
|
| |
- + final TopScoreDocCollector collector = TopScoreDocCollector.create( 1 );
|
| |
- final IndexSearcher indexSearcher = acquireIndexSearcher();
|
| |
- try
|
| |
- {
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java b/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java
|
| |
- index c93c586..39e5922 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java
|
| |
- @@ -20,9 +20,11 @@ package org.apache.maven.index.context;
|
| |
- */
|
| |
-
|
| |
- import java.io.File;
|
| |
- +import java.io.FileNotFoundException;
|
| |
- import java.io.IOException;
|
| |
- import java.io.InputStream;
|
| |
- import java.io.OutputStream;
|
| |
- +import java.nio.file.NoSuchFileException;
|
| |
- import java.util.Date;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- @@ -30,6 +32,7 @@ import org.apache.lucene.document.Field;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- import org.apache.lucene.index.IndexWriter;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- +import org.apache.lucene.store.IOContext;
|
| |
- import org.apache.lucene.store.IndexInput;
|
| |
- import org.apache.lucene.store.IndexOutput;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- @@ -46,9 +49,10 @@ public class IndexUtils
|
| |
- public static void copyDirectory( Directory source, Directory target )
|
| |
- throws IOException
|
| |
- {
|
| |
- - // perform plain copy (but semantic changes between Lucene 2.4 and 2.9 exists, so timestamp file will be not
|
| |
- - // copied in 2.9)
|
| |
- - Directory.copy( source, target, false );
|
| |
- + for (String file : source.listAll())
|
| |
- + {
|
| |
- + target.copyFrom(source, file, file, IOContext.DEFAULT);
|
| |
- + }
|
| |
-
|
| |
- copyFile( source, target, IndexingContext.INDEX_UPDATER_PROPERTIES_FILE );
|
| |
- copyFile( source, target, IndexingContext.INDEX_PACKER_PROPERTIES_FILE );
|
| |
- @@ -66,10 +70,13 @@ public class IndexUtils
|
| |
- public static boolean copyFile( Directory source, Directory target, String srcName, String targetName )
|
| |
- throws IOException
|
| |
- {
|
| |
- - if ( !source.fileExists( srcName ) )
|
| |
- + try
|
| |
- {
|
| |
- - return false;
|
| |
- + source.fileLength( srcName );
|
| |
- }
|
| |
- + catch (IOException e) {
|
| |
- + return false;
|
| |
- + }
|
| |
-
|
| |
- byte[] buf = new byte[BUFFER_SIZE];
|
| |
-
|
| |
- @@ -78,9 +85,9 @@ public class IndexUtils
|
| |
-
|
| |
- try
|
| |
- {
|
| |
- - is = source.openInput( srcName );
|
| |
- + is = source.openInput( srcName, IOContext.DEFAULT);
|
| |
-
|
| |
- - os = target.createOutput( targetName );
|
| |
- + os = target.createOutput( targetName, IOContext.DEFAULT);
|
| |
-
|
| |
- // and copy to dest directory
|
| |
- long len = is.length();
|
| |
- @@ -164,10 +171,14 @@ public class IndexUtils
|
| |
- public static void deleteTimestamp( Directory directory )
|
| |
- throws IOException
|
| |
- {
|
| |
- - if ( directory.fileExists( TIMESTAMP_FILE ) )
|
| |
- + try
|
| |
- {
|
| |
- directory.deleteFile( TIMESTAMP_FILE );
|
| |
- }
|
| |
- + catch (IOException e)
|
| |
- + {
|
| |
- + // Does not exist
|
| |
- + }
|
| |
- }
|
| |
-
|
| |
- public static void updateTimestamp( Directory directory, Date timestamp )
|
| |
- @@ -181,17 +192,9 @@ public class IndexUtils
|
| |
- {
|
| |
- deleteTimestamp( directory );
|
| |
-
|
| |
- - IndexOutput io = directory.createOutput( TIMESTAMP_FILE );
|
| |
- -
|
| |
- - try
|
| |
- + try ( IndexOutput io = directory.createOutput( TIMESTAMP_FILE, IOContext.DEFAULT) )
|
| |
- {
|
| |
- io.writeLong( timestamp.getTime() );
|
| |
- -
|
| |
- - io.flush();
|
| |
- - }
|
| |
- - finally
|
| |
- - {
|
| |
- - close( io );
|
| |
- }
|
| |
- }
|
| |
- }
|
| |
- @@ -202,23 +205,9 @@ public class IndexUtils
|
| |
- synchronized ( directory )
|
| |
- {
|
| |
- Date result = null;
|
| |
- - try
|
| |
- + try ( IndexInput ii = directory.openInput( TIMESTAMP_FILE, IOContext.DEFAULT ) )
|
| |
- {
|
| |
- - if ( directory.fileExists( TIMESTAMP_FILE ) )
|
| |
- - {
|
| |
- - IndexInput ii = null;
|
| |
- -
|
| |
- - try
|
| |
- - {
|
| |
- - ii = directory.openInput( TIMESTAMP_FILE );
|
| |
- -
|
| |
- - result = new Date( ii.readLong() );
|
| |
- - }
|
| |
- - finally
|
| |
- - {
|
| |
- - close( ii );
|
| |
- - }
|
| |
- - }
|
| |
- + result = new Date( ii.readLong() );
|
| |
- }
|
| |
- catch ( IOException ex )
|
| |
- {
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java b/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
|
| |
- index 2fe0880..a763bac 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
|
| |
- @@ -78,7 +78,7 @@ public class MergedIndexingContext
|
| |
- boolean searchable, ContextMemberProvider membersProvider )
|
| |
- throws IOException
|
| |
- {
|
| |
- - this( membersProvider, id, repositoryId, repository, FSDirectory.open( indexDirectoryFile ), searchable );
|
| |
- + this( membersProvider, id, repositoryId, repository, FSDirectory.open( indexDirectoryFile.toPath() ), searchable );
|
| |
-
|
| |
- this.directoryFile = indexDirectoryFile;
|
| |
- }
|
| |
- @@ -92,7 +92,7 @@ public class MergedIndexingContext
|
| |
-
|
| |
- if ( indexDirectory instanceof FSDirectory )
|
| |
- {
|
| |
- - this.directoryFile = ( (FSDirectory) indexDirectory ).getDirectory();
|
| |
- + this.directoryFile = ( (FSDirectory) indexDirectory ).getDirectory().toFile();
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java
|
| |
- index 5f51188..e6c5f7e 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java
|
| |
- @@ -19,12 +19,9 @@ package org.apache.maven.index.context;
|
| |
- * under the License.
|
| |
- */
|
| |
-
|
| |
- -import java.io.Reader;
|
| |
- -
|
| |
- import org.apache.lucene.analysis.Analyzer;
|
| |
- -import org.apache.lucene.analysis.CharTokenizer;
|
| |
- -import org.apache.lucene.analysis.TokenStream;
|
| |
- import org.apache.lucene.analysis.Tokenizer;
|
| |
- +import org.apache.lucene.analysis.util.CharTokenizer;
|
| |
- import org.apache.maven.index.creator.JarFileContentsIndexCreator;
|
| |
-
|
| |
- /**
|
| |
- @@ -38,36 +35,38 @@ import org.apache.maven.index.creator.JarFileContentsIndexCreator;
|
| |
- public final class NexusAnalyzer
|
| |
- extends Analyzer
|
| |
- {
|
| |
- - public TokenStream tokenStream( String fieldName, Reader reader )
|
| |
- +
|
| |
- + public NexusAnalyzer()
|
| |
- {
|
| |
- - return getTokenizer( fieldName, reader );
|
| |
- + super(PER_FIELD_REUSE_STRATEGY);
|
| |
- }
|
| |
-
|
| |
- - protected Tokenizer getTokenizer( String fieldName, Reader reader )
|
| |
- + protected Tokenizer getTokenizer( String fieldName )
|
| |
- {
|
| |
- if ( JarFileContentsIndexCreator.FLD_CLASSNAMES_KW.getKey().equals( fieldName ) )
|
| |
- {
|
| |
- // To keep "backward" compatibility, we have to use old flawed tokenizer.
|
| |
- - return new DeprecatedClassnamesTokenizer( reader );
|
| |
- + return new DeprecatedClassnamesTokenizer();
|
| |
- }
|
| |
- else
|
| |
- {
|
| |
- - return new LetterOrDigitTokenizer( reader );
|
| |
- + return new LetterOrDigitTokenizer();
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- + @Override
|
| |
- + protected TokenStreamComponents createComponents(String fieldName)
|
| |
- + {
|
| |
- + return new TokenStreamComponents(getTokenizer(fieldName));
|
| |
- + }
|
| |
- +
|
| |
- // ==
|
| |
-
|
| |
- public static class NoopTokenizer
|
| |
- extends CharTokenizer
|
| |
- {
|
| |
- - public NoopTokenizer( Reader in )
|
| |
- - {
|
| |
- - super( in );
|
| |
- - }
|
| |
- -
|
| |
- @Override
|
| |
- - protected boolean isTokenChar( char c )
|
| |
- + protected boolean isTokenChar(int i)
|
| |
- {
|
| |
- return true;
|
| |
- }
|
| |
- @@ -77,42 +76,32 @@ public final class NexusAnalyzer
|
| |
- public static class DeprecatedClassnamesTokenizer
|
| |
- extends CharTokenizer
|
| |
- {
|
| |
- - public DeprecatedClassnamesTokenizer( Reader in )
|
| |
- - {
|
| |
- - super( in );
|
| |
- - }
|
| |
- -
|
| |
- @Override
|
| |
- - protected boolean isTokenChar( char c )
|
| |
- + protected boolean isTokenChar(int i)
|
| |
- {
|
| |
- - return c != '\n';
|
| |
- + return i != '\n';
|
| |
- }
|
| |
-
|
| |
- @Override
|
| |
- - protected char normalize( char c )
|
| |
- + protected int normalize(int c)
|
| |
- {
|
| |
- - return Character.toLowerCase( c );
|
| |
- + return Character.toLowerCase(c);
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- public static class LetterOrDigitTokenizer
|
| |
- extends CharTokenizer
|
| |
- {
|
| |
- - public LetterOrDigitTokenizer( Reader in )
|
| |
- - {
|
| |
- - super( in );
|
| |
- - }
|
| |
- -
|
| |
- @Override
|
| |
- - protected boolean isTokenChar( char c )
|
| |
- + protected boolean isTokenChar(int c)
|
| |
- {
|
| |
- return Character.isLetterOrDigit( c );
|
| |
- }
|
| |
-
|
| |
- @Override
|
| |
- - protected char normalize( char c )
|
| |
- + protected int normalize(int c)
|
| |
- {
|
| |
- - return Character.toLowerCase( c );
|
| |
- + return Character.toLowerCase(c);
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java
|
| |
- index 790c150..8adbf7d 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java
|
| |
- @@ -29,7 +29,6 @@ import org.apache.lucene.index.IndexWriterConfig.OpenMode;
|
| |
- import org.apache.lucene.index.SerialMergeScheduler;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.LockObtainFailedException;
|
| |
- -import org.apache.lucene.util.Version;
|
| |
-
|
| |
- /**
|
| |
- * An extension of <a
|
| |
- @@ -45,7 +44,7 @@ public class NexusIndexWriter
|
| |
-
|
| |
- public static IndexWriterConfigFactory CONFIG_FACTORY = new IndexWriterConfigFactory() {
|
| |
- public IndexWriterConfig create(final Analyzer analyzer) {
|
| |
- - IndexWriterConfig config = new IndexWriterConfig( Version.LUCENE_36, analyzer );
|
| |
- + IndexWriterConfig config = new IndexWriterConfig( analyzer );
|
| |
- config.setRAMBufferSizeMB( 2.0 ); // old default
|
| |
- config.setMergeScheduler( new SerialMergeScheduler() ); // merging serially
|
| |
- return config;
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java
|
| |
- index be608f0..ddfa961 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java
|
| |
- @@ -19,14 +19,10 @@ package org.apache.maven.index.context;
|
| |
- * under the License.
|
| |
- */
|
| |
-
|
| |
- -import java.io.IOException;
|
| |
- -import java.io.Reader;
|
| |
- -
|
| |
- import org.apache.lucene.analysis.Analyzer;
|
| |
- -import org.apache.lucene.analysis.CharTokenizer;
|
| |
- -import org.apache.lucene.analysis.TokenStream;
|
| |
- +import org.apache.lucene.analysis.AnalyzerWrapper;
|
| |
- import org.apache.lucene.analysis.standard.StandardAnalyzer;
|
| |
- -import org.apache.lucene.util.Version;
|
| |
- +import org.apache.lucene.analysis.util.CharTokenizer;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
-
|
| |
- /**
|
| |
- @@ -37,60 +33,45 @@ import org.apache.maven.index.ArtifactInfo;
|
| |
- * @author Jason van Zyl
|
| |
- */
|
| |
- public final class NexusLegacyAnalyzer
|
| |
- - extends Analyzer
|
| |
- + extends AnalyzerWrapper
|
| |
- {
|
| |
- - private static Analyzer DEFAULT_ANALYZER = new StandardAnalyzer( Version.LUCENE_30 );
|
| |
- -
|
| |
- - @Override
|
| |
- - public TokenStream tokenStream( String field, final Reader reader )
|
| |
- - {
|
| |
- - if ( !isTextField( field ) )
|
| |
- + private static final Analyzer DEFAULT_ANALYZER = new StandardAnalyzer();
|
| |
- + private static final Analyzer LETTER_OR_DIGIT_ANALYZER = new Analyzer() {
|
| |
- + @Override
|
| |
- + protected TokenStreamComponents createComponents(final String fieldName)
|
| |
- {
|
| |
- - return new CharTokenizer( reader )
|
| |
- + return new TokenStreamComponents( new CharTokenizer()
|
| |
- {
|
| |
- @Override
|
| |
- - protected boolean isTokenChar( char c )
|
| |
- + protected boolean isTokenChar( int c )
|
| |
- {
|
| |
- return Character.isLetterOrDigit( c );
|
| |
- }
|
| |
-
|
| |
- @Override
|
| |
- - protected char normalize( char c )
|
| |
- + protected int normalize( int c )
|
| |
- {
|
| |
- return Character.toLowerCase( c );
|
| |
- }
|
| |
- - };
|
| |
- - }
|
| |
- - else
|
| |
- - {
|
| |
- - return DEFAULT_ANALYZER.tokenStream( field, reader );
|
| |
- + });
|
| |
- }
|
| |
- + };
|
| |
- +
|
| |
- + public NexusLegacyAnalyzer()
|
| |
- + {
|
| |
- + super(PER_FIELD_REUSE_STRATEGY);
|
| |
- }
|
| |
-
|
| |
- @Override
|
| |
- - public TokenStream reusableTokenStream( String field, Reader reader )
|
| |
- - throws IOException
|
| |
- + protected Analyzer getWrappedAnalyzer(String fieldName)
|
| |
- {
|
| |
- - if ( !isTextField( field ) )
|
| |
- + if (!isTextField( fieldName ))
|
| |
- {
|
| |
- - return new CharTokenizer( reader )
|
| |
- - {
|
| |
- - @Override
|
| |
- - protected boolean isTokenChar( char c )
|
| |
- - {
|
| |
- - return Character.isLetterOrDigit( c );
|
| |
- - }
|
| |
- -
|
| |
- - @Override
|
| |
- - protected char normalize( char c )
|
| |
- - {
|
| |
- - return Character.toLowerCase( c );
|
| |
- - }
|
| |
- - };
|
| |
- + return LETTER_OR_DIGIT_ANALYZER;
|
| |
- }
|
| |
- else
|
| |
- {
|
| |
- - return DEFAULT_ANALYZER.reusableTokenStream( field, reader );
|
| |
- + return DEFAULT_ANALYZER;
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
|
| |
- index e43dbd4..1363341 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
|
| |
- @@ -227,6 +227,7 @@ public class JarFileContentsIndexCreator
|
| |
- return ID;
|
| |
- }
|
| |
-
|
| |
- + @Override
|
| |
- public Collection<IndexerField> getIndexerFields()
|
| |
- {
|
| |
- return Arrays.asList( FLD_CLASSNAMES, FLD_CLASSNAMES_KW );
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
|
| |
- index 1e518ce..4ddb1aa 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
|
| |
- @@ -37,7 +37,9 @@ import java.util.TreeMap;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.search.IndexSearcher;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- import org.apache.maven.index.packer.IndexPackingRequest;
|
| |
- @@ -150,9 +152,10 @@ public class DefaultIncrementalHandler
|
| |
- try
|
| |
- {
|
| |
- final IndexReader r = indexSearcher.getIndexReader();
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
- for ( int i = 0; i < r.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !r.isDeleted( i ) )
|
| |
- + if (liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- Document d = r.document( i );
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java b/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
|
| |
- index dd67ad3..7d57973 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
|
| |
- @@ -35,15 +35,21 @@ import java.util.zip.ZipOutputStream;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.document.Field;
|
| |
- +import org.apache.lucene.document.StringField;
|
| |
- import org.apache.lucene.index.CorruptIndexException;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- import org.apache.lucene.index.IndexWriter;
|
| |
- +import org.apache.lucene.index.IndexableField;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.search.IndexSearcher;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.FSDirectory;
|
| |
- +import org.apache.lucene.store.IOContext;
|
| |
- import org.apache.lucene.store.IndexInput;
|
| |
- import org.apache.lucene.store.LockObtainFailedException;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- +import org.apache.maven.index.context.DefaultIndexingContext;
|
| |
- import org.apache.maven.index.context.IndexCreator;
|
| |
- import org.apache.maven.index.context.IndexUtils;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- @@ -168,7 +174,7 @@ public class DefaultIndexPacker
|
| |
- {
|
| |
- info.setProperty( IndexingContext.INDEX_LEGACY_TIMESTAMP, format( timestamp ) );
|
| |
-
|
| |
- - writeIndexArchive( request.getContext(), legacyFile );
|
| |
- + writeIndexArchive( request.getContext(), legacyFile, request.getMaxIndexChunks() );
|
| |
-
|
| |
- if ( request.isCreateChecksumFiles() )
|
| |
- {
|
| |
- @@ -239,6 +245,12 @@ public class DefaultIndexPacker
|
| |
- void writeIndexArchive( IndexingContext context, File targetArchive )
|
| |
- throws IOException
|
| |
- {
|
| |
- + writeIndexArchive(context, targetArchive, IndexPackingRequest.MAX_CHUNKS);
|
| |
- + }
|
| |
- +
|
| |
- + void writeIndexArchive( IndexingContext context, File targetArchive, int maxSegments )
|
| |
- + throws IOException
|
| |
- + {
|
| |
- if ( targetArchive.exists() )
|
| |
- {
|
| |
- targetArchive.delete();
|
| |
- @@ -264,13 +276,22 @@ public class DefaultIndexPacker
|
| |
- public static void packIndexArchive( IndexingContext context, OutputStream os )
|
| |
- throws IOException
|
| |
- {
|
| |
- + packIndexArchive(context, os, IndexPackingRequest.MAX_CHUNKS);
|
| |
- + }
|
| |
- +
|
| |
- + /**
|
| |
- + * Pack legacy index archive into a specified output stream
|
| |
- + */
|
| |
- + public static void packIndexArchive( IndexingContext context, OutputStream os, int maxSegments )
|
| |
- + throws IOException
|
| |
- + {
|
| |
- File indexArchive = File.createTempFile( "nexus-index", "" );
|
| |
-
|
| |
- File indexDir = new File( indexArchive.getAbsoluteFile().getParentFile(), indexArchive.getName() + ".dir" );
|
| |
-
|
| |
- indexDir.mkdirs();
|
| |
-
|
| |
- - FSDirectory fdir = FSDirectory.open( indexDir );
|
| |
- + FSDirectory fdir = FSDirectory.open( indexDir.toPath() );
|
| |
-
|
| |
- try
|
| |
- {
|
| |
- @@ -281,7 +302,7 @@ public class DefaultIndexPacker
|
| |
- final IndexSearcher indexSearcher = context.acquireIndexSearcher();
|
| |
- try
|
| |
- {
|
| |
- - copyLegacyDocuments( indexSearcher.getIndexReader(), fdir, context );
|
| |
- + copyLegacyDocuments( indexSearcher.getIndexReader(), fdir, context, maxSegments);
|
| |
- }
|
| |
- finally
|
| |
- {
|
| |
- @@ -300,20 +321,42 @@ public class DefaultIndexPacker
|
| |
- static void copyLegacyDocuments( IndexReader r, Directory targetdir, IndexingContext context )
|
| |
- throws CorruptIndexException, LockObtainFailedException, IOException
|
| |
- {
|
| |
- + copyLegacyDocuments(r, targetdir, context, IndexPackingRequest.MAX_CHUNKS);
|
| |
- + }
|
| |
- +
|
| |
- + static void copyLegacyDocuments( IndexReader r, Directory targetdir, IndexingContext context, int maxSegments)
|
| |
- + throws CorruptIndexException, LockObtainFailedException, IOException
|
| |
- + {
|
| |
- IndexWriter w = null;
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
- try
|
| |
- {
|
| |
- w = new NexusIndexWriter( targetdir, new NexusLegacyAnalyzer(), true );
|
| |
-
|
| |
- for ( int i = 0; i < r.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !r.isDeleted( i ) )
|
| |
- + if ( liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- - w.addDocument( updateLegacyDocument( r.document( i ), context ) );
|
| |
- + Document legacyDocument = r.document( i );
|
| |
- + Document updatedLegacyDocument = updateLegacyDocument( legacyDocument, context );
|
| |
- +
|
| |
- + //Lucene does not return metadata for stored documents, so we need to fix that
|
| |
- + for (IndexableField indexableField : updatedLegacyDocument.getFields())
|
| |
- + {
|
| |
- + if(indexableField.name().equals(DefaultIndexingContext.FLD_DESCRIPTOR))
|
| |
- + {
|
| |
- + updatedLegacyDocument = new Document();
|
| |
- + updatedLegacyDocument.add(new StringField(DefaultIndexingContext.FLD_DESCRIPTOR, DefaultIndexingContext.FLD_DESCRIPTOR_CONTENTS, Field.Store.YES));
|
| |
- + updatedLegacyDocument.add( new StringField( DefaultIndexingContext.FLD_IDXINFO, DefaultIndexingContext.VERSION + ArtifactInfo.FS + context.getRepositoryId(), Field.Store.YES) );
|
| |
- + break;
|
| |
- + }
|
| |
- + }
|
| |
- +
|
| |
- + w.addDocument( updatedLegacyDocument );
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- - w.optimize();
|
| |
- + w.forceMerge(maxSegments);
|
| |
- w.commit();
|
| |
- }
|
| |
- finally
|
| |
- @@ -372,7 +415,13 @@ public class DefaultIndexPacker
|
| |
- }
|
| |
-
|
| |
- // FSDirectory filter out the foreign files
|
| |
- - if ( !savedTimestamp && directory.fileExists( IndexUtils.TIMESTAMP_FILE ) )
|
| |
- + boolean exists = true;
|
| |
- + try {
|
| |
- + directory.fileLength( IndexUtils.TIMESTAMP_FILE );
|
| |
- + } catch (IOException e) {
|
| |
- + exists = false;
|
| |
- + }
|
| |
- + if ( !savedTimestamp && exists )
|
| |
- {
|
| |
- writeFile( IndexUtils.TIMESTAMP_FILE, zos, directory, buf );
|
| |
- }
|
| |
- @@ -390,7 +439,7 @@ public class DefaultIndexPacker
|
| |
-
|
| |
- zos.putNextEntry( e );
|
| |
-
|
| |
- - IndexInput in = directory.openInput( name );
|
| |
- + IndexInput in = directory.openInput( name, IOContext.DEFAULT );
|
| |
-
|
| |
- try
|
| |
- {
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/packer/IndexPackingRequest.java b/indexer-core/src/main/java/org/apache/maven/index/packer/IndexPackingRequest.java
|
| |
- index 020ce60..7debc23 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/packer/IndexPackingRequest.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/packer/IndexPackingRequest.java
|
| |
- @@ -30,7 +30,7 @@ import org.apache.maven.index.context.IndexingContext;
|
| |
- */
|
| |
- public class IndexPackingRequest
|
| |
- {
|
| |
- - private static final int MAX_CHUNKS = 30;
|
| |
- + public static final int MAX_CHUNKS = 30;
|
| |
-
|
| |
- private IndexingContext context;
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java b/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
|
| |
- index 87552c9..0295fda 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
|
| |
- @@ -510,7 +510,7 @@ public class DefaultIndexTreeView
|
| |
- versionQ = getIndexer().constructQuery( MAVEN.VERSION, new SourcedSearchExpression( v ) );
|
| |
- }
|
| |
-
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( new BooleanClause( groupIdQ, BooleanClause.Occur.MUST ) );
|
| |
-
|
| |
- @@ -524,7 +524,7 @@ public class DefaultIndexTreeView
|
| |
- q.add( new BooleanClause( versionQ, BooleanClause.Occur.MUST ) );
|
| |
- }
|
| |
-
|
| |
- - IteratorSearchRequest searchRequest = new IteratorSearchRequest( q, request.getArtifactInfoFilter() );
|
| |
- + IteratorSearchRequest searchRequest = new IteratorSearchRequest( q.build(), request.getArtifactInfoFilter() );
|
| |
-
|
| |
- searchRequest.getContexts().add( request.getIndexingContext() );
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
|
| |
- index 7fb85f4..d85e71b 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
|
| |
- @@ -43,13 +43,22 @@ import java.util.zip.ZipEntry;
|
| |
- import java.util.zip.ZipInputStream;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- +import org.apache.lucene.document.Field;
|
| |
- +import org.apache.lucene.document.StringField;
|
| |
- import org.apache.lucene.index.CorruptIndexException;
|
| |
- +import org.apache.lucene.index.DirectoryReader;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- import org.apache.lucene.index.IndexWriter;
|
| |
- +import org.apache.lucene.index.IndexableField;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.FSDirectory;
|
| |
- +import org.apache.lucene.store.IOContext;
|
| |
- import org.apache.lucene.store.IndexOutput;
|
| |
- import org.apache.lucene.store.LockObtainFailedException;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- +import org.apache.maven.index.ArtifactInfo;
|
| |
- +import org.apache.maven.index.context.DefaultIndexingContext;
|
| |
- import org.apache.maven.index.context.DocumentFilter;
|
| |
- import org.apache.maven.index.context.IndexUtils;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- @@ -206,8 +215,7 @@ public class DefaultIndexUpdater
|
| |
- else
|
| |
- {
|
| |
- // legacy transfer format
|
| |
- - timestamp = unpackIndexArchive( is, directory, //
|
| |
- - updateRequest.getIndexingContext() );
|
| |
- + throw new IllegalArgumentException("The legacy format is no longer supported by this version of maven-indexer.");
|
| |
- }
|
| |
-
|
| |
- if ( updateRequest.getDocumentFilter() != null )
|
| |
- @@ -271,7 +279,7 @@ public class DefaultIndexUpdater
|
| |
-
|
| |
- indexDir.mkdirs();
|
| |
-
|
| |
- - FSDirectory fdir = FSDirectory.open( indexDir );
|
| |
- + FSDirectory fdir = FSDirectory.open( indexDir.toPath() );
|
| |
-
|
| |
- try
|
| |
- {
|
| |
- @@ -310,7 +318,7 @@ public class DefaultIndexUpdater
|
| |
- continue;
|
| |
- }
|
| |
-
|
| |
- - IndexOutput io = directory.createOutput( entry.getName() );
|
| |
- + IndexOutput io = directory.createOutput( entry.getName(), IOContext.DEFAULT );
|
| |
- try
|
| |
- {
|
| |
- int n = 0;
|
| |
- @@ -340,18 +348,33 @@ public class DefaultIndexUpdater
|
| |
- IndexReader r = null;
|
| |
- try
|
| |
- {
|
| |
- - r = IndexReader.open( sourcedir );
|
| |
- + r = DirectoryReader.open( sourcedir );
|
| |
- w = new NexusIndexWriter( targetdir, new NexusAnalyzer(), true );
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
-
|
| |
- for ( int i = 0; i < r.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !r.isDeleted( i ) )
|
| |
- + if (liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- - w.addDocument( IndexUtils.updateDocument( r.document( i ), context ) );
|
| |
- + Document sourceDocument = r.document( i );
|
| |
- + Document targetDocument = IndexUtils.updateDocument( sourceDocument, context );
|
| |
- +
|
| |
- + //Lucene does not return metadata for stored documents, so we need to fix that
|
| |
- + for (IndexableField indexableField : targetDocument.getFields())
|
| |
- + {
|
| |
- + if(indexableField.name().equals(DefaultIndexingContext.FLD_DESCRIPTOR))
|
| |
- + {
|
| |
- + targetDocument = new Document();
|
| |
- + targetDocument.add(new StringField(DefaultIndexingContext.FLD_DESCRIPTOR, DefaultIndexingContext.FLD_DESCRIPTOR_CONTENTS, Field.Store.YES));
|
| |
- + targetDocument.add( new StringField( DefaultIndexingContext.FLD_IDXINFO, DefaultIndexingContext.VERSION + ArtifactInfo.FS + context.getRepositoryId(), Field.Store.YES) );
|
| |
- + break;
|
| |
- + }
|
| |
- + }
|
| |
- + w.addDocument( targetDocument );
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- - w.optimize();
|
| |
- + w.forceMerge(1);
|
| |
- w.commit();
|
| |
- }
|
| |
- finally
|
| |
- @@ -365,16 +388,19 @@ public class DefaultIndexUpdater
|
| |
- throws IOException
|
| |
- {
|
| |
- IndexReader r = null;
|
| |
- + IndexWriter w = null;
|
| |
- try
|
| |
- {
|
| |
- - // explicitly RW reader needed
|
| |
- - r = IndexReader.open( directory, false );
|
| |
- + r = DirectoryReader.open( directory );
|
| |
- + w = new NexusIndexWriter( directory, new NexusAnalyzer(), false );
|
| |
- +
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
-
|
| |
- int numDocs = r.maxDoc();
|
| |
-
|
| |
- for ( int i = 0; i < numDocs; i++ )
|
| |
- {
|
| |
- - if ( r.isDeleted( i ) )
|
| |
- + if (liveDocs != null && ! liveDocs.get(i) )
|
| |
- {
|
| |
- continue;
|
| |
- }
|
| |
- @@ -383,23 +409,24 @@ public class DefaultIndexUpdater
|
| |
-
|
| |
- if ( !filter.accept( d ) )
|
| |
- {
|
| |
- - r.deleteDocument( i );
|
| |
- + boolean success = w.tryDeleteDocument(r, i);
|
| |
- + //FIXME handle deletion failure
|
| |
- }
|
| |
- }
|
| |
- + w.commit();
|
| |
- }
|
| |
- finally
|
| |
- {
|
| |
- IndexUtils.close( r );
|
| |
- + IndexUtils.close( w );
|
| |
- }
|
| |
-
|
| |
- - IndexWriter w = null;
|
| |
- + w = null;
|
| |
- try
|
| |
- {
|
| |
- // analyzer is unimportant, since we are not adding/searching to/on index, only reading/deleting
|
| |
- w = new NexusIndexWriter( directory, new NexusAnalyzer(), false );
|
| |
-
|
| |
- - w.optimize();
|
| |
- -
|
| |
- w.commit();
|
| |
- }
|
| |
- finally
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/FSDirectoryFactory.java b/indexer-core/src/main/java/org/apache/maven/index/updater/FSDirectoryFactory.java
|
| |
- index aa739ae..9866bbf 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/updater/FSDirectoryFactory.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/FSDirectoryFactory.java
|
| |
- @@ -40,7 +40,7 @@ public interface FSDirectoryFactory
|
| |
- public FSDirectory open( File indexDir )
|
| |
- throws IOException
|
| |
- {
|
| |
- - return FSDirectory.open( indexDir );
|
| |
- + return FSDirectory.open( indexDir.toPath() );
|
| |
- }
|
| |
- };
|
| |
-
|
| |
- diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java
|
| |
- index 3d30516..0f7a124 100644
|
| |
- --- a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java
|
| |
- +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java
|
| |
- @@ -32,10 +32,14 @@ import java.util.Set;
|
| |
- import java.util.zip.GZIPOutputStream;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- -import org.apache.lucene.document.Field;
|
| |
- -import org.apache.lucene.document.Fieldable;
|
| |
- +import org.apache.lucene.document.Field.Store;
|
| |
- +import org.apache.lucene.document.StringField;
|
| |
- +import org.apache.lucene.index.IndexOptions;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- +import org.apache.lucene.index.IndexableField;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.search.IndexSearcher;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- import org.apache.maven.index.context.DefaultIndexingContext;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- @@ -128,20 +132,16 @@ public class IndexDataWriter
|
| |
- throws IOException
|
| |
- {
|
| |
- {
|
| |
- - List<Fieldable> allGroupsFields = new ArrayList<Fieldable>( 2 );
|
| |
- - allGroupsFields.add( new Field( ArtifactInfo.ALL_GROUPS, ArtifactInfo.ALL_GROUPS_VALUE, Field.Store.YES,
|
| |
- - Field.Index.NOT_ANALYZED ) );
|
| |
- - allGroupsFields.add( new Field( ArtifactInfo.ALL_GROUPS_LIST, ArtifactInfo.lst2str( allGroups ),
|
| |
- - Field.Store.YES, Field.Index.NO ) );
|
| |
- + List<IndexableField> allGroupsFields = new ArrayList<>( 2 );
|
| |
- + allGroupsFields.add( new StringField( ArtifactInfo.ALL_GROUPS, ArtifactInfo.ALL_GROUPS_VALUE, Store.YES));
|
| |
- + allGroupsFields.add( new StringField( ArtifactInfo.ALL_GROUPS_LIST, ArtifactInfo.lst2str( allGroups ), Store.YES) );
|
| |
- writeDocumentFields( allGroupsFields );
|
| |
- }
|
| |
-
|
| |
- {
|
| |
- - List<Fieldable> rootGroupsFields = new ArrayList<Fieldable>( 2 );
|
| |
- - rootGroupsFields.add( new Field( ArtifactInfo.ROOT_GROUPS, ArtifactInfo.ROOT_GROUPS_VALUE, Field.Store.YES,
|
| |
- - Field.Index.NOT_ANALYZED ) );
|
| |
- - rootGroupsFields.add( new Field( ArtifactInfo.ROOT_GROUPS_LIST, ArtifactInfo.lst2str( rootGroups ),
|
| |
- - Field.Store.YES, Field.Index.NO ) );
|
| |
- + List<IndexableField> rootGroupsFields = new ArrayList<>( 2 );
|
| |
- + rootGroupsFields.add( new StringField( ArtifactInfo.ROOT_GROUPS, ArtifactInfo.ROOT_GROUPS_VALUE, Store.YES) );
|
| |
- + rootGroupsFields.add( new StringField( ArtifactInfo.ROOT_GROUPS_LIST, ArtifactInfo.lst2str( rootGroups ), Store.YES ));
|
| |
- writeDocumentFields( rootGroupsFields );
|
| |
- }
|
| |
- }
|
| |
- @@ -150,12 +150,13 @@ public class IndexDataWriter
|
| |
- throws IOException
|
| |
- {
|
| |
- int n = 0;
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(r);
|
| |
-
|
| |
- if ( docIndexes == null )
|
| |
- {
|
| |
- for ( int i = 0; i < r.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !r.isDeleted( i ) )
|
| |
- + if (liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- if ( writeDocument( r.document( i ) ) )
|
| |
- {
|
| |
- @@ -168,7 +169,7 @@ public class IndexDataWriter
|
| |
- {
|
| |
- for ( int i : docIndexes )
|
| |
- {
|
| |
- - if ( !r.isDeleted( i ) )
|
| |
- + if ( liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- if ( writeDocument( r.document( i ) ) )
|
| |
- {
|
| |
- @@ -184,11 +185,11 @@ public class IndexDataWriter
|
| |
- public boolean writeDocument( final Document document )
|
| |
- throws IOException
|
| |
- {
|
| |
- - List<Fieldable> fields = document.getFields();
|
| |
- + List<IndexableField> fields = document.getFields();
|
| |
-
|
| |
- - List<Fieldable> storedFields = new ArrayList<Fieldable>( fields.size() );
|
| |
- + List<IndexableField> storedFields = new ArrayList<>( fields.size() );
|
| |
-
|
| |
- - for ( Fieldable field : fields )
|
| |
- + for (IndexableField field : fields )
|
| |
- {
|
| |
- if ( DefaultIndexingContext.FLD_DESCRIPTOR.equals( field.name() ) )
|
| |
- {
|
| |
- @@ -226,7 +227,7 @@ public class IndexDataWriter
|
| |
- return false;
|
| |
- }
|
| |
-
|
| |
- - if ( field.isStored() )
|
| |
- + if ( field.fieldType().stored())
|
| |
- {
|
| |
- storedFields.add( field );
|
| |
- }
|
| |
- @@ -237,23 +238,23 @@ public class IndexDataWriter
|
| |
- return true;
|
| |
- }
|
| |
-
|
| |
- - public void writeDocumentFields( List<Fieldable> fields )
|
| |
- + public void writeDocumentFields( List<IndexableField> fields )
|
| |
- throws IOException
|
| |
- {
|
| |
- dos.writeInt( fields.size() );
|
| |
-
|
| |
- - for ( Fieldable field : fields )
|
| |
- + for ( IndexableField field : fields )
|
| |
- {
|
| |
- writeField( field );
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- - public void writeField( Fieldable field )
|
| |
- + public void writeField( IndexableField field )
|
| |
- throws IOException
|
| |
- {
|
| |
- - int flags = ( field.isIndexed() ? F_INDEXED : 0 ) //
|
| |
- - + ( field.isTokenized() ? F_TOKENIZED : 0 ) //
|
| |
- - + ( field.isStored() ? F_STORED : 0 ); //
|
| |
- + int flags = ( field.fieldType().indexOptions() != IndexOptions.NONE ? F_INDEXED : 0 ) //
|
| |
- + + ( field.fieldType().tokenized() ? F_TOKENIZED : 0 ) //
|
| |
- + + ( field.fieldType().stored() ? F_STORED : 0 ); //
|
| |
- // + ( false ? F_COMPRESSED : 0 ); // Compressed not supported anymore
|
| |
-
|
| |
- String name = field.name();
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java
|
| |
- index 8bb8dbb..cba1f0f 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java
|
| |
- @@ -26,10 +26,6 @@ import org.apache.lucene.index.Term;
|
| |
- import org.apache.lucene.search.PrefixQuery;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.RAMDirectory;
|
| |
- -import org.apache.maven.index.ArtifactInfo;
|
| |
- -import org.apache.maven.index.FlatSearchRequest;
|
| |
- -import org.apache.maven.index.FlatSearchResponse;
|
| |
- -import org.apache.maven.index.NexusIndexer;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
-
|
| |
- public abstract class AbstractNexusIndexerTest
|
| |
- @@ -45,6 +41,7 @@ public abstract class AbstractNexusIndexerTest
|
| |
- protected void setUp()
|
| |
- throws Exception
|
| |
- {
|
| |
- +// indexDir = new SimpleFSDirectory(new File("/tmp/nexus-test"));
|
| |
- super.setUp();
|
| |
- // FileUtils.deleteDirectory( indexDir );
|
| |
- nexusIndexer = lookup( NexusIndexer.class );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
|
| |
- index b78a82a..cfb504b 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
|
| |
- @@ -29,7 +29,9 @@ import java.util.Set;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
- import org.apache.maven.index.search.grouping.GAGrouping;
|
| |
-
|
| |
- public abstract class AbstractRepoNexusIndexerTest
|
| |
- @@ -521,9 +523,10 @@ public abstract class AbstractRepoNexusIndexerTest
|
| |
- {
|
| |
- IndexReader reader = context.acquireIndexSearcher().getIndexReader();
|
| |
-
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(reader);
|
| |
- for ( int i = 0; i < reader.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !reader.isDeleted( i ) )
|
| |
- + if (liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- Document document = reader.document( i );
|
| |
-
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
|
| |
- index f344b71..fdbff39 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
|
| |
- @@ -30,10 +30,10 @@ import java.util.List;
|
| |
- import java.util.Set;
|
| |
-
|
| |
- import org.apache.lucene.index.Term;
|
| |
- -import org.apache.lucene.search.FilteredQuery;
|
| |
- +import org.apache.lucene.search.BooleanClause.Occur;
|
| |
- +import org.apache.lucene.search.BooleanQuery;
|
| |
- import org.apache.lucene.search.PrefixQuery;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- -import org.apache.lucene.search.QueryWrapperFilter;
|
| |
- import org.apache.lucene.search.TermQuery;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.FSDirectory;
|
| |
- @@ -76,7 +76,7 @@ public class DefaultIndexNexusIndexerTest
|
| |
- // bq.add(new PrefixQuery(new Term(ArtifactInfo.GROUP_ID, term + "*")), Occur.SHOULD);
|
| |
- // bq.add(new PrefixQuery(new Term(ArtifactInfo.ARTIFACT_ID, term + "*")), Occur.SHOULD);
|
| |
- TermQuery tq = new TermQuery( new Term( ArtifactInfo.PACKAGING, "maven-plugin" ) );
|
| |
- - Query query = new FilteredQuery( tq, new QueryWrapperFilter( bq ) );
|
| |
- + Query query = new BooleanQuery.Builder().add(tq, Occur.MUST).add(bq, Occur.FILTER).build();
|
| |
-
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( new FlatSearchRequest( query ) );
|
| |
-
|
| |
- @@ -170,7 +170,7 @@ public class DefaultIndexNexusIndexerTest
|
| |
-
|
| |
- File newIndex = new File( getBasedir(), "target/test-new" );
|
| |
-
|
| |
- - Directory newIndexDir = FSDirectory.open( newIndex );
|
| |
- + Directory newIndexDir = FSDirectory.open( newIndex.toPath() );
|
| |
-
|
| |
- DefaultIndexUpdater.unpackIndexArchive( new ByteArrayInputStream( os.toByteArray() ), newIndexDir, context );
|
| |
-
|
| |
- @@ -209,7 +209,7 @@ public class DefaultIndexNexusIndexerTest
|
| |
-
|
| |
- newContext.close( false );
|
| |
-
|
| |
- - newIndexDir = FSDirectory.open( newIndex );
|
| |
- + newIndexDir = FSDirectory.open( newIndex.toPath() );
|
| |
-
|
| |
- DefaultIndexUpdater.unpackIndexArchive( new ByteArrayInputStream( os.toByteArray() ), newIndexDir, context );
|
| |
-
|
| |
- @@ -230,7 +230,7 @@ public class DefaultIndexNexusIndexerTest
|
| |
-
|
| |
- Query bq = new PrefixQuery( new Term( ArtifactInfo.GROUP_ID, term ) );
|
| |
- TermQuery tq = new TermQuery( new Term( ArtifactInfo.PACKAGING, "maven-archetype" ) );
|
| |
- - Query query = new FilteredQuery( tq, new QueryWrapperFilter( bq ) );
|
| |
- + Query query = new BooleanQuery.Builder().add(tq, Occur.MUST).add(bq, Occur.FILTER).build();
|
| |
-
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( new FlatSearchRequest( query ) );
|
| |
-
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/FSDirectoryDeleteTest.java b/indexer-core/src/test/java/org/apache/maven/index/FSDirectoryDeleteTest.java
|
| |
- index 0912334..5a541ca 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/FSDirectoryDeleteTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/FSDirectoryDeleteTest.java
|
| |
- @@ -53,13 +53,13 @@ public class FSDirectoryDeleteTest
|
| |
-
|
| |
- nexusIndexer = lookup( NexusIndexer.class );
|
| |
-
|
| |
- - indexDir = FSDirectory.open( indexDirFile );
|
| |
- + indexDir = FSDirectory.open( indexDirFile.toPath() );
|
| |
-
|
| |
- context = nexusIndexer.addIndexingContext( "one", "nexus-13", repo, indexDir, null, null, DEFAULT_CREATORS );
|
| |
-
|
| |
- nexusIndexer.scan( context );
|
| |
-
|
| |
- - otherIndexDir = FSDirectory.open( otherIndexDirFile );
|
| |
- + otherIndexDir = FSDirectory.open( otherIndexDirFile.toPath() );
|
| |
-
|
| |
- otherContext =
|
| |
- nexusIndexer.addIndexingContext( "other", "nexus-13", repo, otherIndexDir, null, null, DEFAULT_CREATORS );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
|
| |
- index c9c0dbb..2f5963f 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
|
| |
- @@ -29,13 +29,12 @@ import java.util.Iterator;
|
| |
- import java.util.List;
|
| |
- import java.util.Map;
|
| |
- import java.util.Set;
|
| |
- -
|
| |
- import org.apache.lucene.index.Term;
|
| |
- -import org.apache.lucene.queryParser.ParseException;
|
| |
- -import org.apache.lucene.search.FilteredQuery;
|
| |
- +import org.apache.lucene.queryparser.classic.ParseException;
|
| |
- +import org.apache.lucene.search.BooleanClause.Occur;
|
| |
- +import org.apache.lucene.search.BooleanQuery;
|
| |
- import org.apache.lucene.search.PrefixQuery;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- -import org.apache.lucene.search.QueryWrapperFilter;
|
| |
- import org.apache.lucene.search.TermQuery;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.FSDirectory;
|
| |
- @@ -59,6 +58,8 @@ import org.apache.maven.index.packer.DefaultIndexPacker;
|
| |
- import org.apache.maven.index.search.grouping.GAGrouping;
|
| |
- import org.apache.maven.index.search.grouping.GGrouping;
|
| |
- import org.apache.maven.index.updater.DefaultIndexUpdater;
|
| |
- +import static org.hamcrest.CoreMatchers.is;
|
| |
- +import static org.junit.Assert.assertThat;
|
| |
-
|
| |
- public class FullIndexNexusIndexerTest
|
| |
- extends DefaultIndexNexusIndexerTest
|
| |
- @@ -125,7 +126,7 @@ public class FullIndexNexusIndexerTest
|
| |
- GroupedSearchResponse response = nexusIndexer.searchGrouped( request );
|
| |
-
|
| |
- Map<String, ArtifactInfoGroup> r = response.getResults();
|
| |
- - assertEquals( r.toString(), 2, r.size() );
|
| |
- + assertThat(r.toString(), r.size(), is(2));
|
| |
-
|
| |
- Iterator<ArtifactInfoGroup> it = r.values().iterator();
|
| |
-
|
| |
- @@ -350,7 +351,7 @@ public class FullIndexNexusIndexerTest
|
| |
-
|
| |
- File newIndex = new File( getBasedir(), "target/test-new" );
|
| |
-
|
| |
- - Directory newIndexDir = FSDirectory.open( newIndex );
|
| |
- + Directory newIndexDir = FSDirectory.open( newIndex.toPath() );
|
| |
-
|
| |
- DefaultIndexUpdater.unpackIndexArchive( new ByteArrayInputStream( os.toByteArray() ), newIndexDir, context );
|
| |
-
|
| |
- @@ -389,7 +390,7 @@ public class FullIndexNexusIndexerTest
|
| |
-
|
| |
- newContext.close( false );
|
| |
-
|
| |
- - newIndexDir = FSDirectory.open( newIndex );
|
| |
- + newIndexDir = FSDirectory.open( newIndex.toPath() );
|
| |
-
|
| |
- DefaultIndexUpdater.unpackIndexArchive( new ByteArrayInputStream( os.toByteArray() ), newIndexDir, context );
|
| |
-
|
| |
- @@ -410,7 +411,7 @@ public class FullIndexNexusIndexerTest
|
| |
-
|
| |
- Query bq = new PrefixQuery( new Term( ArtifactInfo.GROUP_ID, term ) );
|
| |
- TermQuery tq = new TermQuery( new Term( ArtifactInfo.PACKAGING, "maven-archetype" ) );
|
| |
- - Query query = new FilteredQuery( tq, new QueryWrapperFilter( bq ) );
|
| |
- + Query query = new BooleanQuery.Builder().add(tq, Occur.MUST).add(bq, Occur.FILTER).build();
|
| |
-
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( new FlatSearchRequest( query ) );
|
| |
-
|
| |
- @@ -509,6 +510,8 @@ public class FullIndexNexusIndexerTest
|
| |
- }
|
| |
- }
|
| |
- }
|
| |
- +
|
| |
- + assertThat(response.getTotalHitsCount(), is(5));
|
| |
-
|
| |
- assertEquals( "found in jcl104-over-slf4j and commons-logging", 5, response.getTotalHits() );
|
| |
- }
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/Index20081108RegressionTest.java b/indexer-core/src/test/java/org/apache/maven/index/Index20081108RegressionTest.java
|
| |
- index ff6cd63..fa261fb 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/Index20081108RegressionTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/Index20081108RegressionTest.java
|
| |
- @@ -42,10 +42,12 @@ import org.apache.maven.index.GroupedSearchResponse;
|
| |
- import org.apache.maven.index.NexusIndexer;
|
| |
- import org.apache.maven.index.search.grouping.GAGrouping;
|
| |
- import org.apache.maven.index.updater.DefaultIndexUpdater;
|
| |
- +import org.junit.Ignore;
|
| |
-
|
| |
- /**
|
| |
- * @author Eugene Kuleshov
|
| |
- */
|
| |
- +@Ignore("Index format too old for Lucene 4")
|
| |
- public class Index20081108RegressionTest
|
| |
- extends AbstractRepoNexusIndexerTest
|
| |
- {
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java
|
| |
- index 4ee8d14..c0a4ed9 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus1911IncrementalTest.java
|
| |
- @@ -24,15 +24,15 @@ import java.io.FileInputStream;
|
| |
- import java.util.HashSet;
|
| |
- import java.util.Properties;
|
| |
- import java.util.Set;
|
| |
- -
|
| |
- import junit.framework.Assert;
|
| |
-
|
| |
- -import org.apache.maven.index.NexusIndexer;
|
| |
- import org.apache.maven.index.context.IndexingContext;
|
| |
- import org.apache.maven.index.packer.IndexPacker;
|
| |
- import org.apache.maven.index.packer.IndexPackingRequest;
|
| |
- import org.codehaus.plexus.util.FileUtils;
|
| |
-
|
| |
- +//FIXME - hardcoded assumptions in test that break with lucene 4, or bugs?
|
| |
- +//@Ignore("Segment merge may work differently in Lucene 4")
|
| |
- public class Nexus1911IncrementalTest
|
| |
- extends AbstractIndexCreatorHelper
|
| |
- {
|
| |
- @@ -157,7 +157,8 @@ public class Nexus1911IncrementalTest
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".zip" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".gz" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".properties" ) );
|
| |
- - Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".1.gz" ) );
|
| |
- + //1 is missing with updated Lucene 4 implementation
|
| |
- +// Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".1.gz" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".2.gz" ) );
|
| |
- Assert.assertFalse( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".3.gz" ) );
|
| |
-
|
| |
- @@ -189,8 +190,9 @@ public class Nexus1911IncrementalTest
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".zip" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".gz" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".properties" ) );
|
| |
- - Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".1.gz" ) );
|
| |
- - Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".2.gz" ) );
|
| |
- + //1,2 are missing with updated Lucene 4 implementation
|
| |
- +// Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".1.gz" ) );
|
| |
- +// Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".2.gz" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".3.gz" ) );
|
| |
-
|
| |
- Assert.assertNotNull( props );
|
| |
- @@ -219,13 +221,15 @@ public class Nexus1911IncrementalTest
|
| |
-
|
| |
- Set<String> filenames = getFilenamesFromFiles( indexPackDir.listFiles() );
|
| |
- Properties props = getPropertiesFromFiles( indexPackDir.listFiles() );
|
| |
- -
|
| |
- +
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".zip" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".gz" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".properties" ) );
|
| |
- Assert.assertFalse( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".1.gz" ) );
|
| |
- - Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".2.gz" ) );
|
| |
- - Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".3.gz" ) );
|
| |
- +
|
| |
- + //2,3 are missing with updated Lucene 4 implementation
|
| |
- +// Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".2.gz" ) );
|
| |
- +// Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".3.gz" ) );
|
| |
- Assert.assertTrue( filenames.contains( IndexingContext.INDEX_FILE_PREFIX + ".4.gz" ) );
|
| |
-
|
| |
- Assert.assertNotNull( props );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java
|
| |
- index 09988a0..6074917 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java
|
| |
- @@ -21,11 +21,10 @@ package org.apache.maven.index;
|
| |
-
|
| |
- import java.io.File;
|
| |
-
|
| |
- -import junit.framework.Assert;
|
| |
- -
|
| |
- import org.apache.lucene.search.BooleanClause.Occur;
|
| |
- import org.apache.lucene.search.BooleanQuery;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- +import org.junit.Assert;
|
| |
-
|
| |
- public class Nexus3881NexusIndexerTest
|
| |
- extends AbstractNexusIndexerTest
|
| |
- @@ -47,16 +46,16 @@ public class Nexus3881NexusIndexerTest
|
| |
- Query q1 = nexusIndexer.constructQuery( MAVEN.GROUP_ID, "solution", SearchType.SCORED );
|
| |
- Query q2 = nexusIndexer.constructQuery( MAVEN.ARTIFACT_ID, "solution", SearchType.SCORED );
|
| |
-
|
| |
- - BooleanQuery bq = new BooleanQuery();
|
| |
- + BooleanQuery.Builder bq = new BooleanQuery.Builder();
|
| |
- bq.add( q1, Occur.SHOULD );
|
| |
- bq.add( q2, Occur.SHOULD );
|
| |
-
|
| |
- - IteratorSearchRequest request = new IteratorSearchRequest( bq );
|
| |
- + IteratorSearchRequest request = new IteratorSearchRequest( bq.build() );
|
| |
- request.setLuceneExplain( true );
|
| |
-
|
| |
- IteratorSearchResponse response = nexusIndexer.searchIterator( request );
|
| |
-
|
| |
- - Assert.assertEquals( "All artifacts has 'solution' in their GA!", 4, response.getTotalHits() );
|
| |
- + Assert.assertEquals( "All artifacts has 'solution' in their GA!", 4, response.getTotalHitsCount() );
|
| |
-
|
| |
-
|
| |
- // for (ArtifactInfo ai : response) {
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java
|
| |
- index dac9a59..78591c1 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java
|
| |
- @@ -23,8 +23,8 @@ import java.io.File;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- -import org.apache.maven.index.ArtifactInfo;
|
| |
- -import org.apache.maven.index.NexusIndexer;
|
| |
- +import org.apache.lucene.index.MultiFields;
|
| |
- +import org.apache.lucene.util.Bits;
|
| |
-
|
| |
- /** http://issues.sonatype.org/browse/NEXUS-737 */
|
| |
- public class Nexus737NexusIndexerTest
|
| |
- @@ -45,12 +45,13 @@ public class Nexus737NexusIndexerTest
|
| |
- throws Exception
|
| |
- {
|
| |
- IndexReader reader = context.acquireIndexSearcher().getIndexReader();
|
| |
- + Bits liveDocs = MultiFields.getLiveDocs(reader);
|
| |
-
|
| |
- int foundCount = 0;
|
| |
-
|
| |
- for ( int i = 0; i < reader.maxDoc(); i++ )
|
| |
- {
|
| |
- - if ( !reader.isDeleted( i ) )
|
| |
- + if (liveDocs == null || liveDocs.get(i) )
|
| |
- {
|
| |
- Document document = reader.document( i );
|
| |
-
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
|
| |
- index 84f70c0..f915e1e 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
|
| |
- @@ -33,7 +33,6 @@ import java.util.Collections;
|
| |
- import java.util.List;
|
| |
- import java.util.Map;
|
| |
- import java.util.Set;
|
| |
- -
|
| |
- import org.apache.lucene.index.Term;
|
| |
- import org.apache.lucene.search.BooleanClause.Occur;
|
| |
- import org.apache.lucene.search.BooleanQuery;
|
| |
- @@ -51,6 +50,8 @@ import org.apache.maven.index.packer.DefaultIndexPacker;
|
| |
- import org.apache.maven.index.search.grouping.GAGrouping;
|
| |
- import org.apache.maven.index.updater.DefaultIndexUpdater;
|
| |
- import org.codehaus.plexus.util.StringUtils;
|
| |
- +import static org.hamcrest.CoreMatchers.is;
|
| |
- +import static org.junit.Assert.assertThat;
|
| |
-
|
| |
- /** @author Jason van Zyl */
|
| |
- public class NexusIndexerTest
|
| |
- @@ -58,6 +59,25 @@ public class NexusIndexerTest
|
| |
- {
|
| |
- private IndexingContext context;
|
| |
-
|
| |
- + public void testSingleQuery() throws Exception
|
| |
- + {
|
| |
- + NexusIndexer indexer = lookup(NexusIndexer.class);
|
| |
- + // Directory indexDir = new RAMDirectory();
|
| |
- + File indexDir = super.getDirectory( "index/test" );
|
| |
- + super.deleteDirectory( indexDir );
|
| |
- +
|
| |
- + File repo = new File( getBasedir(), "src/test/repo" );
|
| |
- +
|
| |
- + context = indexer.addIndexingContext( "test", "test", repo, indexDir, null, null, DEFAULT_CREATORS );
|
| |
- + indexer.scan( context );
|
| |
- +
|
| |
- + Query q = null;
|
| |
- +
|
| |
- + // scored search against field having tokenized IndexerField only (should be impossible).
|
| |
- + q = indexer.constructQuery( MAVEN.NAME, "Some artifact name from Pom", SearchType.SCORED );
|
| |
- + assertThat(q.toString(), is("(+n:some +n:artifact +n:name +n:from +n:pom*) n:\"some artifact name from pom\""));
|
| |
- + }
|
| |
- +
|
| |
- public void testQueryCreatorNG()
|
| |
- throws Exception
|
| |
- {
|
| |
- @@ -199,7 +219,7 @@ public class NexusIndexerTest
|
| |
- // and comes the "trick", i will perform single _selection_!
|
| |
- // I want to ensure there is an artifact present!
|
| |
- // explanation: see for yourself ;)
|
| |
- - BooleanQuery bq = new BooleanQuery();
|
| |
- + BooleanQuery.Builder bq = new BooleanQuery.Builder();
|
| |
-
|
| |
- Query g = indexer.constructQuery( MAVEN.GROUP_ID, "commons-logging", SearchType.EXACT );
|
| |
- Query a = indexer.constructQuery( MAVEN.ARTIFACT_ID, "commons-logging", SearchType.EXACT );
|
| |
- @@ -215,7 +235,7 @@ public class NexusIndexerTest
|
| |
- bq.add( c, Occur.MUST_NOT );
|
| |
-
|
| |
- // invoking the old method (was present since day 1), that will return the match only and if only there is 1 hit
|
| |
- - Collection<ArtifactInfo> ais = indexer.identify( bq, Collections.singletonList( context ) );
|
| |
- + Collection<ArtifactInfo> ais = indexer.identify( bq.build(), Collections.singletonList( context ) );
|
| |
-
|
| |
- assertEquals( 1, ais.size() );
|
| |
-
|
| |
- @@ -314,6 +334,7 @@ public class NexusIndexerTest
|
| |
- {
|
| |
- respw.println( currentline );
|
| |
- }
|
| |
- + reader.close();
|
| |
-
|
| |
- String shouldBe = ressw.toString();
|
| |
- String whatWeHave = sw.toString();
|
| |
- @@ -415,12 +436,12 @@ public class NexusIndexerTest
|
| |
- }
|
| |
-
|
| |
- {
|
| |
- - BooleanQuery bq = new BooleanQuery( true );
|
| |
- + BooleanQuery.Builder bq = new BooleanQuery.Builder().setDisableCoord( true );
|
| |
- bq.add( new WildcardQuery( new Term( ArtifactInfo.GROUP_ID, "testng*" ) ), Occur.SHOULD );
|
| |
- bq.add( new WildcardQuery( new Term( ArtifactInfo.ARTIFACT_ID, "testng*" ) ), Occur.SHOULD );
|
| |
- bq.setMinimumNumberShouldMatch( 1 );
|
| |
-
|
| |
- - FlatSearchResponse response = indexer.searchFlat( new FlatSearchRequest( bq ) );
|
| |
- + FlatSearchResponse response = indexer.searchFlat( new FlatSearchRequest( bq.build() ) );
|
| |
- Set<ArtifactInfo> r = response.getResults();
|
| |
-
|
| |
- assertEquals( r.toString(), 4, r.size() );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java b/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
|
| |
- index 12642eb..4176016 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
|
| |
- @@ -93,13 +93,13 @@ public class SearchWithAnEmptyIndexTest
|
| |
-
|
| |
- try
|
| |
- {
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.SYMBOLIC_NAME,
|
| |
- new StringSearchExpression( "org.apache.karaf.features.command" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - FlatSearchRequest request = new FlatSearchRequest( q );
|
| |
- + FlatSearchRequest request = new FlatSearchRequest( q.build() );
|
| |
- assertEquals( 2, nexusIndexer.getIndexingContexts().values().size() );
|
| |
- request.setContexts( Arrays.asList( nexusIndexer.getIndexingContexts().get( INDEX_ID2 ),
|
| |
- nexusIndexer.getIndexingContexts().get( INDEX_ID1 ) ) );
|
| |
- @@ -108,14 +108,14 @@ public class SearchWithAnEmptyIndexTest
|
| |
-
|
| |
- assertEquals( 1, response.getResults().size() );
|
| |
-
|
| |
- - q = new BooleanQuery();
|
| |
- + q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.SYMBOLIC_NAME,
|
| |
- new StringSearchExpression( "org.apache.karaf.features.core" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - request = new FlatSearchRequest( q );
|
| |
- - request.setContexts( new ArrayList( nexusIndexer.getIndexingContexts().values() ) );
|
| |
- + request = new FlatSearchRequest( q.build() );
|
| |
- + request.setContexts( new ArrayList<IndexingContext>( nexusIndexer.getIndexingContexts().values() ) );
|
| |
-
|
| |
- response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- @@ -123,7 +123,7 @@ public class SearchWithAnEmptyIndexTest
|
| |
-
|
| |
- String term = "org.apache.karaf.features";
|
| |
-
|
| |
- - q = new BooleanQuery();
|
| |
- + q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( term ) ),
|
| |
- BooleanClause.Occur.SHOULD );
|
| |
- @@ -136,8 +136,8 @@ public class SearchWithAnEmptyIndexTest
|
| |
- q.add( nexusIndexer.constructQuery( MAVEN.CLASSNAMES, new StringSearchExpression( term ) ),
|
| |
- BooleanClause.Occur.SHOULD );
|
| |
-
|
| |
- - request = new FlatSearchRequest( q );
|
| |
- - request.setContexts( new ArrayList( nexusIndexer.getIndexingContexts().values() ) );
|
| |
- + request = new FlatSearchRequest( q.build() );
|
| |
- + request.setContexts( new ArrayList<IndexingContext>( nexusIndexer.getIndexingContexts().values() ) );
|
| |
-
|
| |
- response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- @@ -177,7 +177,7 @@ public class SearchWithAnEmptyIndexTest
|
| |
-
|
| |
- try
|
| |
- {
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "commons-cli" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
- @@ -188,7 +188,7 @@ public class SearchWithAnEmptyIndexTest
|
| |
- q.add( nexusIndexer.constructQuery( MAVEN.CLASSIFIER, new StringSearchExpression( "sources" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - FlatSearchRequest request = new FlatSearchRequest( q );
|
| |
- + FlatSearchRequest request = new FlatSearchRequest( q.build() );
|
| |
- assertEquals( 2, nexusIndexer.getIndexingContexts().values().size() );
|
| |
- request.setContexts( Arrays.asList( nexusIndexer.getIndexingContexts().get( INDEX_ID2 ),
|
| |
- nexusIndexer.getIndexingContexts().get( INDEX_ID1 ) ) );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/archetype/NexusArchetypeDataSourceTest.java b/indexer-core/src/test/java/org/apache/maven/index/archetype/NexusArchetypeDataSourceTest.java
|
| |
- index 1818d3c..4164f3a 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/archetype/NexusArchetypeDataSourceTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/archetype/NexusArchetypeDataSourceTest.java
|
| |
- @@ -70,7 +70,7 @@ public class NexusArchetypeDataSourceTest
|
| |
-
|
| |
- super.deleteDirectory( indexDirFile );
|
| |
-
|
| |
- - indexDir = FSDirectory.open( indexDirFile );
|
| |
- + indexDir = FSDirectory.open( indexDirFile.toPath() );
|
| |
- }
|
| |
-
|
| |
- File repo = new File( getBasedir(), "src/test/repo" );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
|
| |
- index 8f4b027..ec4862b 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
|
| |
- @@ -27,7 +27,7 @@ import java.util.Arrays;
|
| |
- import junit.framework.TestCase;
|
| |
-
|
| |
- import org.apache.lucene.analysis.Tokenizer;
|
| |
- -import org.apache.lucene.analysis.tokenattributes.TermAttribute;
|
| |
- +import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
|
| |
- import org.apache.maven.index.IndexerField;
|
| |
- import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
|
| |
-
|
| |
- @@ -55,7 +55,9 @@ public class NexusAnalyzerTest
|
| |
- protected void runAndCompare( IndexerField indexerField, String text, String[] expected )
|
| |
- throws IOException
|
| |
- {
|
| |
- - Tokenizer ts = (Tokenizer) nexusAnalyzer.reusableTokenStream( indexerField.getKey(), new StringReader( text ) );
|
| |
- + Tokenizer ts = (Tokenizer) nexusAnalyzer.createComponents(indexerField.getKey() ).getTokenizer();
|
| |
- + ts.setReader(new StringReader(text));
|
| |
- + ts.reset();
|
| |
-
|
| |
- ArrayList<String> tokenList = new ArrayList<String>();
|
| |
-
|
| |
- @@ -63,9 +65,8 @@ public class NexusAnalyzerTest
|
| |
- {
|
| |
- while ( ts.incrementToken() )
|
| |
- {
|
| |
- - TermAttribute term = ts.getAttribute( TermAttribute.class );
|
| |
- -
|
| |
- - tokenList.add( term.term() );
|
| |
- + CharTermAttribute term = ts.addAttribute( CharTermAttribute.class );
|
| |
- + tokenList.add( term.toString());
|
| |
- }
|
| |
- }
|
| |
- else
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java
|
| |
- index c12c0e1..fc8e442 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java
|
| |
- @@ -19,6 +19,9 @@ package org.apache.maven.index.creator;
|
| |
- * under the License.
|
| |
- */
|
| |
-
|
| |
- +import java.io.File;
|
| |
- +import java.util.Arrays;
|
| |
- +import java.util.List;
|
| |
- import org.apache.lucene.search.BooleanClause;
|
| |
- import org.apache.lucene.search.BooleanQuery;
|
| |
- import org.apache.maven.index.ArtifactContext;
|
| |
- @@ -33,10 +36,6 @@ import org.apache.maven.index.expr.StringSearchExpression;
|
| |
- import org.codehaus.plexus.PlexusTestCase;
|
| |
- import org.codehaus.plexus.util.FileUtils;
|
| |
-
|
| |
- -import java.io.File;
|
| |
- -import java.util.Arrays;
|
| |
- -import java.util.List;
|
| |
- -
|
| |
- /**
|
| |
- * @author Olivier Lamy
|
| |
- */
|
| |
- @@ -145,25 +144,25 @@ public class OsgiArtifactIndexCreatorTest
|
| |
- {
|
| |
- indexOSGIRepo();
|
| |
-
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.SYMBOLIC_NAME,
|
| |
- new StringSearchExpression( "org.apache.karaf.features.command" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - FlatSearchRequest request = new FlatSearchRequest( q );
|
| |
- + FlatSearchRequest request = new FlatSearchRequest( q.build() );
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- // here only one results !
|
| |
- assertEquals( 1, response.getResults().size() );
|
| |
-
|
| |
- - q = new BooleanQuery();
|
| |
- + q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.SYMBOLIC_NAME,
|
| |
- new StringSearchExpression( "org.apache.karaf.features.core" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - request = new FlatSearchRequest( q );
|
| |
- + request = new FlatSearchRequest( q.build() );
|
| |
- response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- // here two results !
|
| |
- @@ -184,7 +183,7 @@ public class OsgiArtifactIndexCreatorTest
|
| |
- try
|
| |
- {
|
| |
-
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.SYMBOLIC_NAME,
|
| |
- new StringSearchExpression( "org.apache.karaf.features.core" ) ),
|
| |
- @@ -193,7 +192,7 @@ public class OsgiArtifactIndexCreatorTest
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.VERSION, new StringSearchExpression( "2.2.1" ) ),
|
| |
- BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - FlatSearchRequest request = new FlatSearchRequest( q );
|
| |
- + FlatSearchRequest request = new FlatSearchRequest( q.build() );
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- // here only one results as we use version
|
| |
- @@ -215,12 +214,12 @@ public class OsgiArtifactIndexCreatorTest
|
| |
- try
|
| |
- {
|
| |
-
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.EXPORT_PACKAGE, new StringSearchExpression(
|
| |
- "org.apache.karaf.features.command.completers" ) ), BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - FlatSearchRequest request = new FlatSearchRequest( q );
|
| |
- + FlatSearchRequest request = new FlatSearchRequest( q.build() );
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- //System.out.println("results with export package query " + response.getResults() );
|
| |
- @@ -261,12 +260,12 @@ public class OsgiArtifactIndexCreatorTest
|
| |
- try
|
| |
- {
|
| |
-
|
| |
- - BooleanQuery q = new BooleanQuery();
|
| |
- + BooleanQuery.Builder q = new BooleanQuery.Builder();
|
| |
-
|
| |
- q.add( nexusIndexer.constructQuery( OSGI.EXPORT_SERVICE, new StringSearchExpression(
|
| |
- "org.apache.felix.bundlerepository.RepositoryAdmin" ) ), BooleanClause.Occur.MUST );
|
| |
-
|
| |
- - FlatSearchRequest request = new FlatSearchRequest( q );
|
| |
- + FlatSearchRequest request = new FlatSearchRequest( q.build() );
|
| |
- FlatSearchResponse response = nexusIndexer.searchFlat( request );
|
| |
-
|
| |
- //System.out.println("results with export package query " + response.getResults() );
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java
|
| |
- index 1d64f39..29e0c4a 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java
|
| |
- @@ -30,11 +30,11 @@ import java.util.Collection;
|
| |
- import java.util.Date;
|
| |
- import java.util.Properties;
|
| |
- import java.util.Set;
|
| |
- -
|
| |
- import org.apache.lucene.index.Term;
|
| |
- import org.apache.lucene.search.Query;
|
| |
- import org.apache.lucene.search.TermQuery;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- +import org.apache.lucene.store.IOContext;
|
| |
- import org.apache.lucene.store.RAMDirectory;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- import org.apache.maven.index.FlatSearchRequest;
|
| |
- @@ -49,6 +49,7 @@ import org.jmock.Mockery;
|
| |
- import org.jmock.api.Invocation;
|
| |
- import org.jmock.lib.action.ReturnValueAction;
|
| |
- import org.jmock.lib.action.VoidAction;
|
| |
- +import org.junit.Ignore;
|
| |
-
|
| |
- /**
|
| |
- * @author Eugene Kuleshov
|
| |
- @@ -149,8 +150,11 @@ public class DefaultIndexUpdaterTest
|
| |
- Collection<ArtifactInfo> tempContent = tempResponse.getResults();
|
| |
- assertEquals( tempContent.toString(), 3, tempContent.size() );
|
| |
-
|
| |
- - RAMDirectory tempDir2 = new RAMDirectory( tempContext.getIndexDirectory() );
|
| |
- -
|
| |
- + RAMDirectory tempDir2 = new RAMDirectory();
|
| |
- + for (String file : tempContext.getIndexDirectory().listAll())
|
| |
- + {
|
| |
- + tempDir2.copyFrom(tempContext.getIndexDirectory(), file, file, IOContext.DEFAULT);
|
| |
- + }
|
| |
- indexer.removeIndexingContext( tempContext, false );
|
| |
-
|
| |
- context.merge( tempDir2 );
|
| |
- @@ -192,7 +196,11 @@ public class DefaultIndexUpdaterTest
|
| |
- indexer.deleteArtifactFromIndex(
|
| |
- createArtifactContext( repositoryId, "commons-lang", "commons-lang", "2.4", null ), tempContext );
|
| |
-
|
| |
- - RAMDirectory tempDir2 = new RAMDirectory( tempContext.getIndexDirectory() );
|
| |
- + RAMDirectory tempDir2 = new RAMDirectory();
|
| |
- + for (String file : tempContext.getIndexDirectory().listAll())
|
| |
- + {
|
| |
- + tempDir2.copyFrom(tempContext.getIndexDirectory(), file, file, IOContext.DEFAULT);
|
| |
- + }
|
| |
-
|
| |
- indexer.removeIndexingContext( tempContext, false );
|
| |
-
|
| |
- @@ -266,7 +274,11 @@ public class DefaultIndexUpdaterTest
|
| |
- indexer.addArtifactToIndex(
|
| |
- createArtifactContext( repositoryId, "org.slf4j.foo", "jcl104-over-slf4j", "1.4.2", null ), context );
|
| |
-
|
| |
- - RAMDirectory tempDir2 = new RAMDirectory( tempContext.getIndexDirectory() );
|
| |
- + RAMDirectory tempDir2 = new RAMDirectory();
|
| |
- + for (String file : tempContext.getIndexDirectory().listAll())
|
| |
- + {
|
| |
- + tempDir2.copyFrom(tempContext.getIndexDirectory(), file, file, IOContext.DEFAULT);
|
| |
- + }
|
| |
-
|
| |
- indexer.removeIndexingContext( tempContext, false );
|
| |
-
|
| |
- @@ -827,7 +839,8 @@ public class DefaultIndexUpdaterTest
|
| |
- assertIndexUpdateSucceeded(updateResult);
|
| |
- }
|
| |
-
|
| |
- - public void testUpdateForceFullUpdateNoGZ()
|
| |
- + @Ignore("Legacy format no longer supported with Lucene 4")
|
| |
- + public void ignoreTestUpdateForceFullUpdateNoGZ()
|
| |
- throws Exception
|
| |
- {
|
| |
- Mockery mockery = new Mockery();
|
| |
- diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java b/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java
|
| |
- index b098b27..8753b9a 100644
|
| |
- --- a/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java
|
| |
- +++ b/indexer-core/src/test/java/org/apache/maven/index/updater/IndexDataTest.java
|
| |
- @@ -29,6 +29,7 @@ import java.util.Map.Entry;
|
| |
-
|
| |
- import org.apache.lucene.document.Document;
|
| |
- import org.apache.lucene.index.CorruptIndexException;
|
| |
- +import org.apache.lucene.index.DirectoryReader;
|
| |
- import org.apache.lucene.index.IndexReader;
|
| |
- import org.apache.lucene.store.Directory;
|
| |
- import org.apache.lucene.store.RAMDirectory;
|
| |
- @@ -36,8 +37,6 @@ import org.apache.maven.index.AbstractRepoNexusIndexerTest;
|
| |
- import org.apache.maven.index.ArtifactInfo;
|
| |
- import org.apache.maven.index.NexusIndexer;
|
| |
- import org.apache.maven.index.context.IndexUtils;
|
| |
- -import org.apache.maven.index.updater.DefaultIndexUpdater;
|
| |
- -import org.apache.maven.index.updater.IndexDataWriter;
|
| |
-
|
| |
- /**
|
| |
- * @author Eugene Kuleshov
|
| |
- @@ -119,7 +118,7 @@ public class IndexDataTest
|
| |
-
|
| |
- Map<String, ArtifactInfo> r1map = readIndex( r1 );
|
| |
-
|
| |
- - IndexReader r2 = IndexReader.open( newDir );
|
| |
- + IndexReader r2 = DirectoryReader.open( newDir );
|
| |
-
|
| |
- Map<String, ArtifactInfo> r2map = readIndex( r2 );
|
| |
-
|
| |
- diff --git a/pom.xml b/pom.xml
|
| |
- index f1464b0..c708cfb 100644
|
| |
- --- a/pom.xml
|
| |
- +++ b/pom.xml
|
| |
- @@ -73,13 +73,12 @@ under the License.
|
| |
- </distributionManagement>
|
| |
-
|
| |
- <properties>
|
| |
- - <surefire.redirectTestOutputToFile>false</surefire.redirectTestOutputToFile>
|
| |
- - <maven.compiler.source>1.6</maven.compiler.source>
|
| |
- - <maven.compiler.target>1.6</maven.compiler.target>
|
| |
- + <maven.compiler.source>1.7</maven.compiler.source>
|
| |
- + <maven.compiler.target>1.7</maven.compiler.target>
|
| |
-
|
| |
- <sisu-inject-plexus.version>2.2.3</sisu-inject-plexus.version>
|
| |
- - <lucene.version>3.6.2</lucene.version>
|
| |
- - <maven.version>3.0.4</maven.version>
|
| |
- + <lucene.version>5.4.1</lucene.version>
|
| |
- + <maven.version>3.0.5</maven.version>
|
| |
- <aether.version>1.13.1</aether.version>
|
| |
- <archetype.version>2.2</archetype.version>
|
| |
- <wagon.version>2.3</wagon.version>
|
| |
- @@ -202,13 +201,13 @@ under the License.
|
| |
- <configuration>
|
| |
- <signature>
|
| |
- <groupId>org.codehaus.mojo.signature</groupId>
|
| |
- - <artifactId>java15</artifactId>
|
| |
- + <artifactId>java17</artifactId>
|
| |
- <version>1.0</version>
|
| |
- </signature>
|
| |
- </configuration>
|
| |
- <executions>
|
| |
- <execution>
|
| |
- - <id>check-java-1.5-compat</id>
|
| |
- + <id>check-java-1.7-compat</id>
|
| |
- <phase>process-classes</phase>
|
| |
- <goals>
|
| |
- <goal>check</goal>
|
| |
- @@ -239,7 +238,6 @@ under the License.
|
| |
- <plugin>
|
| |
- <groupId>org.apache.rat</groupId>
|
| |
- <artifactId>apache-rat-plugin</artifactId>
|
| |
- - <version>0.10</version>
|
| |
- <executions>
|
| |
- <execution>
|
| |
- <id>rat-verify</id>
|
| |
- @@ -277,21 +275,17 @@ under the License.
|
| |
- <plugin>
|
| |
- <groupId>org.apache.maven.plugins</groupId>
|
| |
- <artifactId>maven-compiler-plugin</artifactId>
|
| |
- - <version>2.5.1</version>
|
| |
- - <configuration>
|
| |
- - <source>1.5</source>
|
| |
- - <target>1.5</target>
|
| |
- - </configuration>
|
| |
- + <version>3.1</version>
|
| |
- </plugin>
|
| |
- <plugin>
|
| |
- <groupId>org.apache.maven.plugins</groupId>
|
| |
- <artifactId>maven-failsafe-plugin</artifactId>
|
| |
- - <version>2.12</version>
|
| |
- + <version>2.16</version>
|
| |
- </plugin>
|
| |
- <plugin>
|
| |
- <groupId>org.apache.maven.plugins</groupId>
|
| |
- <artifactId>maven-surefire-plugin</artifactId>
|
| |
- - <version>2.12</version>
|
| |
- + <version>2.16</version>
|
| |
- </plugin>
|
| |
- <plugin>
|
| |
- <groupId>org.apache.maven.plugins</groupId>
|
| |
- --
|
| |
- 2.7.5
|
| |
-
|
| |
RHBZ:
https://bugzilla.redhat.com/show_bug.cgi?id=1523074