#1 Update to upstream version 6.0.0
Closed 3 years ago by mbooth. Opened 4 years ago by mkoncek.
rpms/ mkoncek/maven-indexer update-version  into  master

file modified
+1
@@ -1,3 +1,4 @@ 

  /maven-indexer-5.1.1-source-release-CLEAN.zip

  /maven-indexer-5.1.2.tar.gz

  /*.src.rpm

+ /maven-indexer-6.0.0.tar.gz

0000-Port-to-Lucene-7.patch 0002-Port-to-Lucene-6.patch
file renamed
+335 -228
@@ -1,31 +1,8 @@ 

- From d5d64d78d0dd66c40bf38741f404a768cdc3b753 Mon Sep 17 00:00:00 2001

- From: Mat Booth <mat.booth@redhat.com>

- Date: Mon, 7 Aug 2017 22:29:33 +0100

- Subject: [PATCH 2/2] Port to Lucene 6

- 

- ---

-  .../org/apache/maven/index/ArtifactContext.java    | 10 ++--

-  .../org/apache/maven/index/ArtifactInfoRecord.java |  9 ++--

-  .../apache/maven/index/DefaultIndexerEngine.java   |  8 +--

-  .../maven/index/DefaultIteratorResultSet.java      |  2 -

-  .../java/org/apache/maven/index/IndexerField.java  | 60 ++++------------------

-  .../index/context/DefaultIndexingContext.java      | 17 +++---

-  .../org/apache/maven/index/context/IndexUtils.java | 10 ++--

-  .../apache/maven/index/context/NexusAnalyzer.java  |  2 +-

-  .../index/creator/JarFileContentsIndexCreator.java |  7 ++-

-  .../MavenPluginArtifactInfoIndexCreator.java       |  8 +--

-  .../creator/MinimalArtifactInfoIndexCreator.java   | 38 +++++++-------

-  .../index/creator/OsgiArtifactIndexCreator.java    | 42 +++++++--------

-  .../maven/index/packer/DefaultIndexPacker.java     |  2 +-

-  .../maven/index/updater/IndexDataReader.java       | 21 ++++----

-  pom.xml                                            | 27 ++--------

-  15 files changed, 98 insertions(+), 165 deletions(-)

- 

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java

- index 33323ac..82ac857 100644

+ index a720028..c22a813 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java

- @@ -30,9 +30,9 @@ import java.util.ArrayList;

+ @@ -27,9 +27,9 @@ import java.util.ArrayList;

   import java.util.List;

   

   import org.apache.lucene.document.Document;
@@ -37,7 +14,7 @@ 

   import org.apache.maven.index.artifact.Gav;

   import org.apache.maven.index.context.IndexCreator;

   import org.apache.maven.index.context.IndexingContext;

- @@ -172,10 +172,10 @@ public class ArtifactContext

+ @@ -166,10 +166,10 @@ public class ArtifactContext

           Document doc = new Document();

   

           // unique key
@@ -52,7 +29,7 @@ 

           for ( IndexCreator indexCreator : context.getIndexCreators() )

           {

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java

- index 9e65d53..23a0213 100644

+ index 9e65d53..4c94a5b 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java

  @@ -22,8 +22,8 @@ package org.apache.maven.index;
@@ -80,14 +57,14 @@ 

       public static final IndexerField FLD_DELETED = new IndexerField( NEXUS.DELETED, IndexerFieldVersion.V1, "del",

  -        "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", Store.YES,

  -        Index.NO );

- +        "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", StoredField.TYPE );

+ +        "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", StoredField.TYPE);

   

   }

  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 b3665e3..86b0684 100644

+ index ba234eb..e29e3d2 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

- @@ -25,7 +25,7 @@ import java.util.Map;

+ @@ -27,7 +27,7 @@ import java.util.Map;

   import java.util.Set;

   

   import org.apache.lucene.document.Document;
@@ -105,25 +82,88 @@ 

  -                Long.toString( System.currentTimeMillis() ), Field.Store.YES, Field.Index.NO ) );

  +            doc.add( new StoredField( ArtifactInfo.DELETED, uinfo ) );

  +            doc.add( new StoredField( ArtifactInfo.LAST_MODIFIED, //

- +                Long.toString( System.currentTimeMillis() ) ) );

+ +            		Long.toString( System.currentTimeMillis() ) ) );

   

               IndexWriter w = context.getIndexWriter();

               w.addDocument( doc );

- 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 85dd275..d4da8bf 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

- @@ -399,8 +399,6 @@ public class DefaultIteratorResultSet

+ 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 63a2196..fecb6d5 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

+ @@ -30,6 +30,7 @@ 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;

+ @@ -280,18 +281,17 @@ public class DefaultQueryCreator

+                  }

+                  else

+                  {

+ -                    BooleanQuery bq = new BooleanQuery();

+ +                    BooleanQuery.Builder bqb = new BooleanQuery.Builder();

   

-          highlighter.setTextFragmenter( new OneLineFragmenter() );

+                      Term t = new Term( indexerField.getKey(), query );

   

- -        tokenStream.reset();

- -

-          maxNumFragments = Math.max( 1, maxNumFragments ); // sanity check

+ -                    bq.add( new TermQuery( t ), Occur.SHOULD );

+ +                    bqb.add( new TermQuery( t ), Occur.SHOULD );

+  

+ -                    PrefixQuery pq = new PrefixQuery( t );

+ -                    pq.setBoost( 0.8f );

+ +                    BoostQuery pq = new BoostQuery( new PrefixQuery( t ), 0.8f );

   

-          TextFragment[] frag;

+ -                    bq.add( pq, Occur.SHOULD );

+ +                    bqb.add( pq, Occur.SHOULD );

+  

+ -                    return bq;

+ +                    return bqb.build();

+                  }

+              }

+              else

+ @@ -326,13 +326,13 @@ public class DefaultQueryCreator

+                  {

+                      // qpQuery = "\"" + qpQuery + "\"";

+  

+ -                    BooleanQuery q1 = new BooleanQuery();

+ +                    BooleanQuery.Builder q1b = new BooleanQuery.Builder();

+  

+ -                    q1.add( qp.parse( qpQuery ), Occur.SHOULD );

+ +                    q1b.add( qp.parse( qpQuery ), Occur.SHOULD );

+  

+                      if ( qpQuery.contains( " " ) )

+                      {

+ -                        q1.add( qp.parse( "\"" + qpQuery + "\"" ), Occur.SHOULD );

+ +                        q1b.add( qp.parse( "\"" + qpQuery + "\"" ), Occur.SHOULD );

+                      }

+  

+                      Query q2 = null;

+ @@ -353,17 +353,17 @@ public class DefaultQueryCreator

+  

+                      if ( q2 == null )

+                      {

+ -                        return q1;

+ +                        return q1b.build();

+                      }

+                      else

+                      {

+ -                        BooleanQuery bq = new BooleanQuery();

+ +                        BooleanQuery.Builder bqb = new BooleanQuery.Builder();

+  

+                          // trick with order

+ -                        bq.add( q2, Occur.SHOULD );

+ -                        bq.add( q1, Occur.SHOULD );

+ +                        bqb.add( q2, Occur.SHOULD );

+ +                        bqb.add( q1b.build(), Occur.SHOULD );

+  

+ -                        return bq;

+ +                        return bqb.build();

+                      }

+                  }

+                  catch ( ParseException e )

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java b/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java

- index bf99c97..ae69853 100644

+ index bf99c97..003d8e2 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java

  @@ -20,9 +20,9 @@ package org.apache.maven.index;
@@ -138,16 +178,16 @@ 

   

   /**

    * Holds basic information about Indexer field, how it is stored. To keep this centralized, and not spread across code.

- @@ -38,21 +38,10 @@ public class IndexerField

+ @@ -38,21 +38,11 @@ public class IndexerField

   

       private final String key;

   

  -    private final Store storeMethod;

- -

+ +    private final FieldType fieldType;

+  

  -    private final Index indexMethod;

  -

  -    private final TermVector termVector;

- +    private final FieldType fieldType;

   

       public IndexerField( final org.apache.maven.index.Field ontology, final IndexerFieldVersion version,

  -                         final String key, final String description, final Store storeMethod, final Index indexMethod )
@@ -162,7 +202,7 @@ 

       {

           this.ontology = ontology;

   

- @@ -60,11 +49,7 @@ public class IndexerField

+ @@ -60,11 +50,7 @@ public class IndexerField

   

           this.key = key;

   
@@ -175,7 +215,7 @@ 

   

           ontology.addIndexerField( this );

       }

- @@ -84,54 +69,31 @@ public class IndexerField

+ @@ -84,54 +70,31 @@ public class IndexerField

           return key;

       }

   
@@ -193,25 +233,25 @@ 

  +    public FieldType getFieldType()

       {

  -        return termVector;

- +    	return fieldType;

+ +        return fieldType;

       }

   

       public boolean isIndexed()

       {

  -        return !Index.NO.equals( indexMethod );

- +        return !fieldType.indexOptions().equals(IndexOptions.NONE);

+ +    	return !fieldType.indexOptions().equals(IndexOptions.NONE);

       }

   

       public boolean isKeyword()

       {

  -        return isIndexed() && !Index.ANALYZED.equals( indexMethod );

- +        return isIndexed() && fieldType.tokenized();

+ +    	return isIndexed() && fieldType.tokenized();

       }

   

       public boolean isStored()

       {

  -        return !( Store.NO.equals( storeMethod ) );

- +        return fieldType.stored();

+ +    	return fieldType.stored();

       }

   

       public Field toField( String value )
@@ -236,15 +276,40 @@ 

   

           return result;

       }

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

+ index d346a04..d0c9af3 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

+ @@ -19,7 +19,6 @@ package org.apache.maven.index;

+   * under the License.

+   */

+  

+ -import org.apache.lucene.analysis.Token;

+  import org.apache.lucene.analysis.TokenStream;

+  import org.apache.lucene.search.highlight.Fragmenter;

+  

+ @@ -33,16 +32,6 @@ public class OneLineFragmenter

+          setText( originalText );

+      }

+  

+ -    public boolean isNewFragment( Token nextToken )

+ -    {

+ -        // text: /org/sonatype/...

+ -        // tokens: org sonatype

+ -        boolean result =

+ -            isNewline( getChar( nextToken.startOffset() - 1 ) ) || isNewline( getChar( nextToken.startOffset() - 2 ) );

+ -

+ -        return result;

+ -    }

+ -

+      protected boolean isNewline( char c )

+      {

+          return c == '\n';

  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 81f7c3c..069d8f2 100644

+ index 6a092c1..c81a3d3 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,9 +28,12 @@

-  import java.util.LinkedHashSet;

-  import java.util.List;

-  import java.util.Set;

- +

+ @@ -36,6 +36,8 @@ import java.util.Set;

   import org.apache.lucene.analysis.Analyzer;

   import org.apache.lucene.document.Document;

   import org.apache.lucene.document.Field;
@@ -253,19 +318,62 @@ 

   import org.apache.lucene.index.CorruptIndexException;

   import org.apache.lucene.index.DirectoryReader;

   import org.apache.lucene.index.IndexReader;

- @@ -322,9 +325,9 @@

+ @@ -237,14 +239,18 @@ public class DefaultIndexingContext

+          if ( DirectoryReader.indexExists( indexDirectory ) )

+          {

+              try

+ +            {

+ +                indexDirectory.obtainLock( IndexWriter.WRITE_LOCK_NAME );

+ +            }

+ +            catch ( LockObtainFailedException ex)

+              {

+                  // unlock the dir forcibly

+ -                if ( IndexWriter.isLocked( indexDirectory ) )

+ -                {

+ -                    unlockForcibly( lockFactory, indexDirectory );

+ -                }

+ -

+ -                openAndWarmup();

+ +            	unlockForcibly( lockFactory, indexDirectory );

+ +            }

+ +            

+ +            try

+ +            {

+ +            	openAndWarmup();

+  

+                  checkAndUpdateIndexDescriptor( reclaimIndex );

+              }

+ @@ -276,9 +282,14 @@ public class DefaultIndexingContext

+              closeReaders();

+  

+              // unlock the dir forcibly

+ -            if ( IndexWriter.isLocked( indexDirectory ) )

+ +            try

+              {

+ -                unlockForcibly( lockFactory, indexDirectory );

+ +                indexDirectory.obtainLock( IndexWriter.WRITE_LOCK_NAME );

+ +            }

+ +            catch ( LockObtainFailedException ex)

+ +            {

+ +                // unlock the dir forcibly

+ +            	unlockForcibly( lockFactory, indexDirectory );

+              }

+  

+              deleteIndexFiles( true );

+ @@ -363,10 +374,9 @@ public class DefaultIndexingContext

       {

           Document hdr = new Document();

   

  -        hdr.add( new Field( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES, Field.Index.NOT_ANALYZED ) );

  +        hdr.add( new StringField( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES ) );

   

- -        hdr.add( new Field( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId(), Field.Store.YES, Field.Index.NO ) );

+ -        hdr.add( new Field( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId(), Field.Store.YES,

+ -                            Field.Index.NO ) );

  +        hdr.add( new StoredField( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId() ) );

   

           IndexWriter w = getIndexWriter();

   

- @@ -487,7 +490,7 @@

+ @@ -530,7 +540,7 @@ public class DefaultIndexingContext

   

           this.indexWriter = new NexusIndexWriter( getIndexDirectory(), getWriterConfig() );

           this.indexWriter.commit(); // LUCENE-2386
@@ -274,7 +382,7 @@ 

       }

   

       /**

- @@ -781,7 +784,7 @@

+ @@ -845,7 +855,7 @@ public class DefaultIndexingContext

           {

               indexSearcher.search( new TermQuery( new Term( field, filedValue ) ), collector );

               TopDocs topDocs = collector.topDocs();
@@ -283,7 +391,7 @@ 

               if ( topDocs.totalHits > 0 )

               {

                   Document doc = indexSearcher.doc( topDocs.scoreDocs[0].doc );

- @@ -812,10 +815,10 @@

+ @@ -876,10 +886,10 @@ public class DefaultIndexingContext

                                                String listField )

       {

           final Document groupDoc = new Document();
@@ -299,7 +407,7 @@ 

       }

   

  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 39e5922..ff5e586 100644

+ index cd676ff..7be414e 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,15 +20,15 @@ package org.apache.maven.index.context;
@@ -320,7 +428,16 @@ 

   import org.apache.lucene.index.IndexReader;

   import org.apache.lucene.index.IndexWriter;

   import org.apache.lucene.store.Directory;

- @@ -148,12 +148,12 @@ public class IndexUtils

+ @@ -77,7 +77,7 @@ public class IndexUtils

+          {

+              source.fileLength( srcName ); // instead of fileExists

+          }

+ -        catch ( FileNotFoundException | NoSuchFileException e )

+ +        catch ( IOException e )

+          {

+              return false;

+          }

+ @@ -149,12 +149,12 @@ public class IndexUtils

           Document document = new Document();

   

           // unique key
@@ -331,29 +448,56 @@ 

           {

  -            document.add( new Field( ArtifactInfo.LAST_MODIFIED, //

  -                Long.toString( System.currentTimeMillis() ), Field.Store.YES, Field.Index.NO ) );

- +            document.add( new StoredField( ArtifactInfo.LAST_MODIFIED, //

+ +        	document.add( new StoredField( ArtifactInfo.LAST_MODIFIED, //

  +                Long.toString( System.currentTimeMillis() ) ) );

           }

           else

           {

- 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 e6c5f7e..a808b5e 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

- @@ -95,7 +95,7 @@ public final class NexusAnalyzer

-          @Override

-          protected boolean isTokenChar(int c)

+ @@ -176,7 +176,7 @@ public class IndexUtils

+          {

+              directory.deleteFile( TIMESTAMP_FILE );

+          }

+ -        catch ( FileNotFoundException | NoSuchFileException e )

+ +        catch ( IOException e )

           {

- -            return Character.isLetterOrDigit( c );

- +            return !Character.isWhitespace(c);

+              //Does not exist

           }

+ @@ -216,10 +216,6 @@ public class IndexUtils

+              {

+                  result = new Date( ii.readLong() );

+              }

+ -            catch ( FileNotFoundException | NoSuchFileException e )

+ -            {

+ -                // Does not exist

+ -            }

+              catch ( IOException ex )

+              {

+                  // IO failure

+ 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 eb2246b..45b6d93 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

+ @@ -28,6 +28,7 @@ import org.apache.lucene.index.IndexWriterConfig;

+  import org.apache.lucene.index.SerialMergeScheduler;

+  import org.apache.lucene.store.Directory;

+  import org.apache.lucene.store.LockObtainFailedException;

+ +import org.apache.lucene.store.SleepingLockWrapper;

   

-          @Override

+  /**

+   * An extension of <a

+ @@ -63,7 +64,6 @@ public class NexusIndexWriter

+          // default open mode is CreateOrAppend which suits us

+          config.setRAMBufferSizeMB( 2.0 ); // old default

+          config.setMergeScheduler( new SerialMergeScheduler() ); // merging serially

+ -        config.setWriteLockTimeout( IndexWriterConfig.WRITE_LOCK_TIMEOUT );

+          return config;

+      }

+  }

  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 1363341..bbba815 100644

+ index 9318fbb..88c00c1 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

- @@ -26,8 +26,7 @@ import java.util.Collection;

+ @@ -28,8 +28,7 @@ import java.util.Collection;

   import java.util.List;

   

   import org.apache.lucene.document.Document;
@@ -363,7 +507,7 @@ 

   import org.apache.maven.index.ArtifactContext;

   import org.apache.maven.index.ArtifactInfo;

   import org.apache.maven.index.IndexerField;

- @@ -51,7 +50,7 @@ public class JarFileContentsIndexCreator

+ @@ -52,7 +51,7 @@ public class JarFileContentsIndexCreator

       public static final String ID = "jarContent";

   

       public static final IndexerField FLD_CLASSNAMES = new IndexerField( MAVEN.CLASSNAMES, IndexerFieldVersion.V3,
@@ -372,7 +516,7 @@ 

   

       /**

        * NexusAnalyzer makes exception with this field only, to keep backward compatibility with old consumers of

- @@ -59,7 +58,7 @@ public class JarFileContentsIndexCreator

+ @@ -60,7 +59,7 @@ public class JarFileContentsIndexCreator

        * registered BEFORE FLD_CLASSNAMES_KW!

        */

       public static final IndexerField FLD_CLASSNAMES_KW = new IndexerField( MAVEN.CLASSNAMES, IndexerFieldVersion.V1,
@@ -382,10 +526,10 @@ 

       public JarFileContentsIndexCreator()

       {

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java

- index 48e1a59..a571ddb 100644

+ index 71e18d9..06e2c8b 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java

- @@ -29,8 +29,8 @@ import java.util.Arrays;

+ @@ -31,8 +31,8 @@ import java.util.Arrays;

   import java.util.Collection;

   

   import org.apache.lucene.document.Document;
@@ -396,7 +540,7 @@ 

   import org.apache.maven.index.ArtifactContext;

   import org.apache.maven.index.ArtifactInfo;

   import org.apache.maven.index.IndexerField;

- @@ -60,10 +60,10 @@ public class MavenPluginArtifactInfoIndexCreator

+ @@ -61,10 +61,10 @@ public class MavenPluginArtifactInfoIndexCreator

       private static final String MAVEN_PLUGIN_PACKAGING = "maven-plugin";

   

       public static final IndexerField FLD_PLUGIN_PREFIX = new IndexerField( MAVEN.PLUGIN_PREFIX, IndexerFieldVersion.V1,
@@ -410,10 +554,10 @@ 

       public MavenPluginArtifactInfoIndexCreator()

       {

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java

- index b9f4837..2bf5eaa 100644

+ index feea2d2..bb023fb 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java

- @@ -26,8 +26,9 @@ import java.util.Collection;

+ @@ -28,8 +28,9 @@ import java.util.Collection;

   

   import org.apache.lucene.document.Document;

   import org.apache.lucene.document.Field;
@@ -422,10 +566,10 @@ 

  +import org.apache.lucene.document.StoredField;

  +import org.apache.lucene.document.StringField;

  +import org.apache.lucene.document.TextField;

-  import org.apache.maven.index.ArtifactAvailablility;

+  import org.apache.maven.index.ArtifactAvailability;

   import org.apache.maven.index.ArtifactContext;

   import org.apache.maven.index.ArtifactInfo;

- @@ -66,43 +67,43 @@ public class MinimalArtifactInfoIndexCreator

+ @@ -67,46 +68,46 @@ public class MinimalArtifactInfoIndexCreator

        * Info: packaging, lastModified, size, sourcesExists, javadocExists, signatureExists. Stored, not indexed.

        */

       public static final IndexerField FLD_INFO = new IndexerField( NEXUS.INFO, IndexerFieldVersion.V1, "i",
@@ -460,13 +604,17 @@ 

  -        "Artifact Packaging (as keyword)", Store.NO, Index.NOT_ANALYZED );

  +        "Artifact Packaging (as keyword)", TextField.TYPE_NOT_STORED );

   

+      public static final IndexerField FLD_EXTENSION = new IndexerField( MAVEN.EXTENSION, IndexerFieldVersion.V1, "e",

+ -        "Artifact extension (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "Artifact extension (as keyword)", TextField.TYPE_NOT_STORED );

+  

       public static final IndexerField FLD_CLASSIFIER = new IndexerField( MAVEN.CLASSIFIER, IndexerFieldVersion.V1, "l",

  -        "Artifact classifier (as keyword)", Store.NO, Index.NOT_ANALYZED );

  +        "Artifact classifier (as keyword)", TextField.TYPE_NOT_STORED );

   

       public static final IndexerField FLD_NAME = new IndexerField( MAVEN.NAME, IndexerFieldVersion.V1, "n",

  -        "Artifact name (tokenized, stored)", Store.YES, Index.ANALYZED );

- +        "Artifact name (tokenized, stored)", TextField.TYPE_STORED );

+ +        "Artifact name (tokenized, stored)", TextField.TYPE_NOT_STORED );

   

       public static final IndexerField FLD_DESCRIPTION = new IndexerField( MAVEN.DESCRIPTION, IndexerFieldVersion.V1,

  -        "d", "Artifact description (tokenized, stored)", Store.YES, Index.ANALYZED );
@@ -482,72 +630,56 @@ 

   

       private Locator jl = new JavadocLocator();

   

- @@ -307,17 +308,16 @@ public class MinimalArtifactInfoIndexCreator

+ @@ -310,18 +311,16 @@ public class MinimalArtifactInfoIndexCreator

           // legacy!

-          if ( ai.prefix != null )

+          if ( ai.getPrefix() != null )

           {

- -            doc.add( new Field( ArtifactInfo.PLUGIN_PREFIX, ai.prefix, Field.Store.YES, Field.Index.NOT_ANALYZED ) );

- +            doc.add( new StringField( ArtifactInfo.PLUGIN_PREFIX, ai.prefix, Field.Store.YES ) );

+ -            doc.add( new Field( ArtifactInfo.PLUGIN_PREFIX, ai.getPrefix(), Field.Store.YES,

+ -                                Field.Index.NOT_ANALYZED ) );

+ +        	doc.add( new StringField( ArtifactInfo.PLUGIN_PREFIX, ai.getPrefix(), Field.Store.YES ) );

           }

   

-          if ( ai.goals != null )

+          if ( ai.getGoals() != null )

           {

- -            doc.add( new Field( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.goals ), Field.Store.YES,

+ -            doc.add( new Field( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.getGoals() ), Field.Store.YES,

  -                Field.Index.NO ) );

- +            doc.add( new StoredField( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.goals ) ) );

+ +        	doc.add( new StoredField( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.getGoals() ) ) );

           }

   

           doc.removeField( ArtifactInfo.GROUP_ID );

- -        doc.add( new Field( ArtifactInfo.GROUP_ID, ai.groupId, Field.Store.NO, Field.Index.NOT_ANALYZED ) );

- +        doc.add( new StringField( ArtifactInfo.GROUP_ID, ai.groupId, Field.Store.NO ) );

+ -        doc.add( new Field( ArtifactInfo.GROUP_ID, ai.getGroupId(), Field.Store.NO, Field.Index.NOT_ANALYZED ) );

+ +        doc.add( new StringField( ArtifactInfo.GROUP_ID, ai.getGroupId(), Field.Store.NO ) );

       }

   

       public boolean updateArtifactInfo( Document doc, ArtifactInfo ai )

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java

- index 41c1451..5e28703 100644

+ index ed06d0b..0d9041b 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java

- @@ -19,8 +19,16 @@ package org.apache.maven.index.creator;

-   * under the License.

-   */

+ @@ -23,7 +23,8 @@ import javax.inject.Named;

+  import javax.inject.Singleton;

   

- +import java.io.File;

- +import java.io.IOException;

- +import java.util.Arrays;

- +import java.util.Collection;

- +import java.util.List;

- +import java.util.jar.Attributes;

- +import java.util.jar.Manifest;

- +

   import org.apache.lucene.document.Document;

  -import org.apache.lucene.document.Field;

+ +import org.apache.lucene.document.StringField;

  +import org.apache.lucene.document.TextField;

   import org.apache.maven.index.ArtifactContext;

   import org.apache.maven.index.ArtifactInfo;

   import org.apache.maven.index.IndexerField;

- @@ -32,14 +40,6 @@ import org.apache.maven.index.util.zip.ZipHandle;

-  import org.codehaus.plexus.component.annotations.Component;

-  import org.codehaus.plexus.util.StringUtils;

-  

- -import java.io.File;

- -import java.io.IOException;

- -import java.util.Arrays;

- -import java.util.Collection;

- -import java.util.List;

- -import java.util.jar.Attributes;

- -import java.util.jar.Manifest;

- -

-  /**

-   * This indexCreator will index some OSGI metadatas.

-   * <br/>

- @@ -68,65 +68,61 @@ public class OsgiArtifactIndexCreator

+ @@ -72,95 +73,90 @@ public class OsgiArtifactIndexCreator

+  

+      public static final IndexerField FLD_SHA256 =

+          new IndexerField( OSGI.SHA256, IndexerFieldVersion.V4, "sha256", "SHA-256 (not analyzed, stored)",

+ -                          Field.Store.YES, Field.Index.NOT_ANALYZED );

+ +                          StringField.TYPE_STORED);

+  

+      private static final String BSN = "Bundle-SymbolicName";

   

       public static final IndexerField FLD_BUNDLE_SYMBOLIC_NAME =

           new IndexerField( OSGI.SYMBOLIC_NAME, IndexerFieldVersion.V4, BSN, "Bundle-SymbolicName (indexed, stored)",

  -                          Field.Store.YES, Field.Index.ANALYZED );

  +                          TextField.TYPE_STORED );

   

-  

       private static final String BV = "Bundle-Version";

   

       public static final IndexerField FLD_BUNDLE_VERSION =
@@ -555,7 +687,6 @@ 

  -                          Field.Index.ANALYZED );

  +        new IndexerField( OSGI.VERSION, IndexerFieldVersion.V4, BV, "Bundle-Version (indexed, stored)", TextField.TYPE_STORED );

   

-  

       private static final String BEP = "Export-Package";

   

       public static final IndexerField FLD_BUNDLE_EXPORT_PACKAGE =
@@ -563,14 +694,14 @@ 

  -                          Field.Store.YES, Field.Index.ANALYZED );

  +                          TextField.TYPE_STORED );

   

+      @Deprecated

       private static final String BES = "Export-Service";

-  

+      @Deprecated

       public static final IndexerField FLD_BUNDLE_EXPORT_SERVIVE =

           new IndexerField( OSGI.EXPORT_SERVICE, IndexerFieldVersion.V4, BES, "Export-Service (indexed, stored)",

  -                          Field.Store.YES, Field.Index.ANALYZED );

  +                          TextField.TYPE_STORED );

   

-  

       private static final String BD = "Bundle-Description";

   

       public static final IndexerField FLD_BUNDLE_DESCRIPTION =
@@ -614,27 +745,88 @@ 

  -                          Field.Store.YES, Field.Index.ANALYZED );

  +                          TextField.TYPE_STORED );

   

+      private static final String PROVIDE_CAPABILITY = "Provide-Capability";

+  

+      public static final IndexerField FLD_BUNDLE_PROVIDE_CAPABILITY =

+          new IndexerField( OSGI.PROVIDE_CAPABILITY, IndexerFieldVersion.V4, PROVIDE_CAPABILITY,

+ -                          "Provide-Capability (indexed, stored)", Field.Store.YES, Field.Index.ANALYZED );

+ +                          "Provide-Capability (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String REQUIRE_CAPABILITY = "Require-Capability";

+  

+      public static final IndexerField FLD_BUNDLE_REQUIRE_CAPABILITY =

+          new IndexerField( OSGI.REQUIRE_CAPABILITY, IndexerFieldVersion.V4, REQUIRE_CAPABILITY,

+ -                          "Require-Capability (indexed, stored)", Field.Store.YES, Field.Index.ANALYZED );

+ +                          "Require-Capability (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String FRAGMENT_HOST = "Fragment-Host";

+  

+      public static final IndexerField FLD_BUNDLE_FRAGMENT_HOST =

+          new IndexerField( OSGI.FRAGMENT_HOST, IndexerFieldVersion.V4, FRAGMENT_HOST, "Fragment-Host (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      private static final String BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT = "Bundle-RequiredExecutionEnvironment";

   

+      public static final IndexerField FLD_BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT =

+          new IndexerField( OSGI.BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT, IndexerFieldVersion.V4,

+                            BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT,

+ -                          "Bundle-RequiredExecutionEnvironment (indexed, stored)", Field.Store.YES,

+ -                          Field.Index.ANALYZED );

+ +                          "Bundle-RequiredExecutionEnvironment (indexed, stored)", TextField.TYPE_STORED );

   

- 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 7d57973..c673bf6 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

- @@ -374,7 +374,7 @@ public class DefaultIndexPacker

+  

+      public Collection<IndexerField> getIndexerFields()

+ 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 61f450c..08f8c3e 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

+ @@ -518,21 +518,21 @@ public class DefaultIndexTreeView

+              versionQ = getIndexer().constructQuery( MAVEN.VERSION, new SourcedSearchExpression( v ) );

           }

   

-          Document document = new Document();

- -        document.add( new Field( ArtifactInfo.UINFO, ai.getUinfo(), Field.Store.YES, Field.Index.NOT_ANALYZED ) );

- +        document.add( new StringField( ArtifactInfo.UINFO, ai.getUinfo(), Field.Store.YES ) );

+ -        BooleanQuery q = new BooleanQuery();

+ +        BooleanQuery.Builder qb = new BooleanQuery.Builder();

   

-          for ( IndexCreator ic : context.getIndexCreators() )

+ -        q.add( new BooleanClause( groupIdQ, BooleanClause.Occur.MUST ) );

+ +        qb.add( new BooleanClause( groupIdQ, BooleanClause.Occur.MUST ) );

+  

+          if ( artifactIdQ != null )

           {

+ -            q.add( new BooleanClause( artifactIdQ, BooleanClause.Occur.MUST ) );

+ +            qb.add( new BooleanClause( artifactIdQ, BooleanClause.Occur.MUST ) );

+          }

+  

+          if ( versionQ != null )

+          {

+ -            q.add( new BooleanClause( versionQ, BooleanClause.Occur.MUST ) );

+ +            qb.add( new BooleanClause( versionQ, BooleanClause.Occur.MUST ) );

+          }

+  

+ -        IteratorSearchRequest searchRequest = new IteratorSearchRequest( q, request.getArtifactInfoFilter() );

+ +        IteratorSearchRequest searchRequest = new IteratorSearchRequest( qb.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 38c8d0d..83b726c 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

+ @@ -273,7 +273,7 @@ public class DefaultIndexUpdater

+  

+                  if ( !filter.accept( d ) )

+                  {

+ -                    boolean success = w.tryDeleteDocument( r, i );

+ +                	boolean success = w.tryDeleteDocument(r, i) != -1;

+                      // FIXME handle deletion failure

+                  }

+              }

  diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java

- index 70eaa84..568398b 100644

+ index 67f823d..db3f442 100644

  --- a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java

  +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java

- @@ -31,8 +31,8 @@ import java.util.zip.GZIPInputStream;

-  

+ @@ -34,8 +34,8 @@ import java.util.LinkedHashSet;

+  import java.util.Set;

   import org.apache.lucene.document.Document;

   import org.apache.lucene.document.Field;

  -import org.apache.lucene.document.Field.Index;
@@ -642,9 +834,9 @@ 

  +import org.apache.lucene.document.FieldType;

  +import org.apache.lucene.index.IndexOptions;

   import org.apache.lucene.index.IndexWriter;

+  import org.apache.maven.index.ArtifactInfo;

   import org.apache.maven.index.context.IndexUtils;

-  import org.apache.maven.index.context.IndexingContext;

- @@ -143,23 +143,20 @@ public class IndexDataReader

+ @@ -181,23 +181,20 @@ public class IndexDataReader

       {

           int flags = dis.read();

   
@@ -660,7 +852,7 @@ 

  -        if ( ( flags & IndexDataWriter.F_STORED ) > 0 )

  -        {

  -            store = Store.YES;

- +            boolean tokenized = ( flags & IndexDataWriter.F_TOKENIZED ) > 0;

+ +        	boolean tokenized = ( flags & IndexDataWriter.F_TOKENIZED ) > 0;

  +            fieldType.setTokenized(tokenized);

  +            fieldType.setOmitNorms(!tokenized);

  +            fieldType.setIndexOptions((tokenized ? IndexOptions.DOCS_AND_FREQS_AND_POSITIONS : IndexOptions.DOCS));
@@ -675,88 +867,3 @@ 

       }

   

       private static String readUTF( DataInput in )

- diff --git a/pom.xml b/pom.xml

- index c708cfb..415818d 100644

- --- a/pom.xml

- +++ b/pom.xml

- @@ -73,11 +73,11 @@ under the License.

-    </distributionManagement>

-  

-    <properties>

- -    <maven.compiler.source>1.7</maven.compiler.source>

- -    <maven.compiler.target>1.7</maven.compiler.target>

- +    <maven.compiler.source>1.8</maven.compiler.source>

- +    <maven.compiler.target>1.8</maven.compiler.target>

-  

-      <sisu-inject-plexus.version>2.2.3</sisu-inject-plexus.version>

- -    <lucene.version>5.4.1</lucene.version>

- +    <lucene.version>6.1.0</lucene.version>

-      <maven.version>3.0.5</maven.version>

-      <aether.version>1.13.1</aether.version>

-      <archetype.version>2.2</archetype.version>

- @@ -194,27 +194,6 @@ under the License.

-          </configuration>

-        </plugin>

-  

- -      <plugin>

- -        <groupId>org.codehaus.mojo</groupId>

- -        <artifactId>animal-sniffer-maven-plugin</artifactId>

- -        <version>1.6</version>

- -        <configuration>

- -          <signature>

- -            <groupId>org.codehaus.mojo.signature</groupId>

- -            <artifactId>java17</artifactId>

- -            <version>1.0</version>

- -          </signature>

- -        </configuration>

- -        <executions>

- -          <execution>

- -            <id>check-java-1.7-compat</id>

- -            <phase>process-classes</phase>

- -            <goals>

- -              <goal>check</goal>

- -            </goals>

- -          </execution>

- -        </executions>

- -      </plugin>

-        <plugin><!-- TODO remove when upgrading to maven-parent 25 -->

-          <groupId>org.apache.maven.plugins</groupId>

-          <artifactId>maven-enforcer-plugin</artifactId>

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

- @@ -409,7 +409,7 @@

-  

-                  if ( !filter.accept( d ) )

-                  {

- -                    boolean success = w.tryDeleteDocument(r, i);

- +                    boolean success = w.tryDeleteDocument(r, i) != -1;

-                      //FIXME handle deletion failure

-                  }

-              }

- --- a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

- +++ b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

- @@ -19,7 +19,6 @@

-   * under the License.

-   */

-  

- -import org.apache.lucene.analysis.Token;

-  import org.apache.lucene.analysis.TokenStream;

-  import org.apache.lucene.search.highlight.Fragmenter;

-  

- @@ -33,16 +32,6 @@

-          setText( originalText );

-      }

-  

- -    public boolean isNewFragment( Token nextToken )

- -    {

- -        // text: /org/sonatype/...

- -        // tokens: org sonatype

- -        boolean result =

- -            isNewline( getChar( nextToken.startOffset() - 1 ) ) || isNewline( getChar( nextToken.startOffset() - 2 ) );

- -

- -        return result;

- -    }

- -

-      protected boolean isNewline( char c )

-      {

-          return c == '\n';

@@ -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

- 

@@ -0,0 +1,895 @@ 

+ 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 2/2] Port to Lucene 6

+ 

+ ---

+  .../apache/maven/index/ArtifactContext.java   | 10 ++--

+  .../maven/index/ArtifactInfoRecord.java       |  9 ++-

+  .../maven/index/DefaultIndexerEngine.java     |  8 +--

+  .../maven/index/DefaultQueryCreator.java      | 28 ++++-----

+  .../org/apache/maven/index/IndexerField.java  | 59 ++++---------------

+  .../apache/maven/index/OneLineFragmenter.java | 11 ----

+  .../index/context/DefaultIndexingContext.java | 44 ++++++++------

+  .../maven/index/context/IndexUtils.java       | 18 +++---

+  .../maven/index/context/NexusIndexWriter.java |  2 +-

+  .../creator/JarFileContentsIndexCreator.java  |  7 +--

+  .../MavenPluginArtifactInfoIndexCreator.java  |  8 +--

+  .../MinimalArtifactInfoIndexCreator.java      | 41 +++++++------

+  .../creator/OsgiArtifactIndexCreator.java     | 38 ++++++------

+  .../index/treeview/DefaultIndexTreeView.java  | 10 ++--

+  .../index/updater/DefaultIndexUpdater.java    |  2 +-

+  .../maven/index/updater/IndexDataReader.java  | 21 +++----

+  16 files changed, 132 insertions(+), 184 deletions(-)

+ 

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java

+ index a720028..c22a813 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java

+ @@ -27,9 +27,9 @@ import java.util.ArrayList;

+  import java.util.List;

+  

+  import org.apache.lucene.document.Document;

+ -import org.apache.lucene.document.Field;

+ -import org.apache.lucene.document.Field.Index;

+  import org.apache.lucene.document.Field.Store;

+ +import org.apache.lucene.document.StoredField;

+ +import org.apache.lucene.document.StringField;

+  import org.apache.maven.index.artifact.Gav;

+  import org.apache.maven.index.context.IndexCreator;

+  import org.apache.maven.index.context.IndexingContext;

+ @@ -166,10 +166,10 @@ public class ArtifactContext

+          Document doc = new Document();

+  

+          // unique key

+ -        doc.add( new Field( ArtifactInfo.UINFO, getArtifactInfo().getUinfo(), Store.YES, Index.NOT_ANALYZED ) );

+ +        doc.add( new StringField( ArtifactInfo.UINFO, getArtifactInfo().getUinfo(), Store.YES ) );

+  

+ -        doc.add( new Field( ArtifactInfo.LAST_MODIFIED, //

+ -            Long.toString( System.currentTimeMillis() ), Store.YES, Index.NO ) );

+ +        doc.add( new StoredField( ArtifactInfo.LAST_MODIFIED, //

+ +            Long.toString( System.currentTimeMillis() ) ) );

+  

+          for ( IndexCreator indexCreator : context.getIndexCreators() )

+          {

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java

+ index 9e65d53..4c94a5b 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java

+ @@ -22,8 +22,8 @@ package org.apache.maven.index;

+  import java.io.Serializable;

+  import java.util.regex.Pattern;

+  

+ -import org.apache.lucene.document.Field.Index;

+ -import org.apache.lucene.document.Field.Store;

+ +import org.apache.lucene.document.StoredField;

+ +import org.apache.lucene.document.StringField;

+  

+  /**

+   * Pulling out ArtifactInfo, clearing up. TBD. This gonna be extensible "map-like" class with fields.

+ @@ -53,14 +53,13 @@ public class ArtifactInfoRecord

+       * Unique groupId, artifactId, version, classifier, extension (or packaging). Stored, indexed untokenized

+       */

+      public static final IndexerField FLD_UINFO = new IndexerField( NEXUS.UINFO, IndexerFieldVersion.V1, "u",

+ -        "Artifact UINFO (as keyword, stored)", Store.YES, Index.NOT_ANALYZED );

+ +        "Artifact UINFO (as keyword, stored)", StringField.TYPE_STORED );

+  

+      /**

+       * Del: contains UINFO to mark record as deleted (needed for incremental updates!). The original document IS

+       * removed, but this marker stays on index to note that fact.

+       */

+      public static final IndexerField FLD_DELETED = new IndexerField( NEXUS.DELETED, IndexerFieldVersion.V1, "del",

+ -        "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", Store.YES,

+ -        Index.NO );

+ +        "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", StoredField.TYPE);

+  

+  }

+ 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 ba234eb..e29e3d2 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

+ @@ -27,7 +27,7 @@ import java.util.Map;

+  import java.util.Set;

+  

+  import org.apache.lucene.document.Document;

+ -import org.apache.lucene.document.Field;

+ +import org.apache.lucene.document.StoredField;

+  import org.apache.lucene.index.IndexWriter;

+  import org.apache.lucene.index.IndexableField;

+  import org.apache.lucene.index.Term;

+ @@ -100,9 +100,9 @@ public class DefaultIndexerEngine

+              // add artifact deletion marker

+              final Document doc = new Document();

+  

+ -            doc.add( new Field( ArtifactInfo.DELETED, uinfo, Field.Store.YES, Field.Index.NO ) );

+ -            doc.add( new Field( ArtifactInfo.LAST_MODIFIED, //

+ -                Long.toString( System.currentTimeMillis() ), Field.Store.YES, Field.Index.NO ) );

+ +            doc.add( new StoredField( ArtifactInfo.DELETED, uinfo ) );

+ +            doc.add( new StoredField( ArtifactInfo.LAST_MODIFIED, //

+ +            		Long.toString( System.currentTimeMillis() ) ) );

+  

+              IndexWriter w = context.getIndexWriter();

+              w.addDocument( doc );

+ 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 63a2196..fecb6d5 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

+ @@ -30,6 +30,7 @@ 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;

+ @@ -280,18 +281,17 @@ public class DefaultQueryCreator

+                  }

+                  else

+                  {

+ -                    BooleanQuery bq = new BooleanQuery();

+ +                    BooleanQuery.Builder bqb = new BooleanQuery.Builder();

+  

+                      Term t = new Term( indexerField.getKey(), query );

+  

+ -                    bq.add( new TermQuery( t ), Occur.SHOULD );

+ +                    bqb.add( new TermQuery( t ), Occur.SHOULD );

+  

+ -                    PrefixQuery pq = new PrefixQuery( t );

+ -                    pq.setBoost( 0.8f );

+ +                    BoostQuery pq = new BoostQuery( new PrefixQuery( t ), 0.8f );

+  

+ -                    bq.add( pq, Occur.SHOULD );

+ +                    bqb.add( pq, Occur.SHOULD );

+  

+ -                    return bq;

+ +                    return bqb.build();

+                  }

+              }

+              else

+ @@ -326,13 +326,13 @@ public class DefaultQueryCreator

+                  {

+                      // qpQuery = "\"" + qpQuery + "\"";

+  

+ -                    BooleanQuery q1 = new BooleanQuery();

+ +                    BooleanQuery.Builder q1b = new BooleanQuery.Builder();

+  

+ -                    q1.add( qp.parse( qpQuery ), Occur.SHOULD );

+ +                    q1b.add( qp.parse( qpQuery ), Occur.SHOULD );

+  

+                      if ( qpQuery.contains( " " ) )

+                      {

+ -                        q1.add( qp.parse( "\"" + qpQuery + "\"" ), Occur.SHOULD );

+ +                        q1b.add( qp.parse( "\"" + qpQuery + "\"" ), Occur.SHOULD );

+                      }

+  

+                      Query q2 = null;

+ @@ -353,17 +353,17 @@ public class DefaultQueryCreator

+  

+                      if ( q2 == null )

+                      {

+ -                        return q1;

+ +                        return q1b.build();

+                      }

+                      else

+                      {

+ -                        BooleanQuery bq = new BooleanQuery();

+ +                        BooleanQuery.Builder bqb = new BooleanQuery.Builder();

+  

+                          // trick with order

+ -                        bq.add( q2, Occur.SHOULD );

+ -                        bq.add( q1, Occur.SHOULD );

+ +                        bqb.add( q2, Occur.SHOULD );

+ +                        bqb.add( q1b.build(), Occur.SHOULD );

+  

+ -                        return bq;

+ +                        return bqb.build();

+                      }

+                  }

+                  catch ( ParseException e )

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java b/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java

+ index bf99c97..003d8e2 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java

+ @@ -20,9 +20,9 @@ package org.apache.maven.index;

+   */

+  

+  import org.apache.lucene.document.Field;

+ -import org.apache.lucene.document.Field.Index;

+  import org.apache.lucene.document.Field.Store;

+ -import org.apache.lucene.document.Field.TermVector;

+ +import org.apache.lucene.index.IndexOptions;

+ +import org.apache.lucene.document.FieldType;

+  

+  /**

+   * Holds basic information about Indexer field, how it is stored. To keep this centralized, and not spread across code.

+ @@ -38,21 +38,11 @@ public class IndexerField

+  

+      private final String key;

+  

+ -    private final Store storeMethod;

+ +    private final FieldType fieldType;

+  

+ -    private final Index indexMethod;

+ -

+ -    private final TermVector termVector;

+  

+      public IndexerField( final org.apache.maven.index.Field ontology, final IndexerFieldVersion version,

+ -                         final String key, final String description, final Store storeMethod, final Index indexMethod )

+ -    {

+ -        this( ontology, version, key, description, storeMethod, indexMethod, null );

+ -    }

+ -

+ -    public IndexerField( final org.apache.maven.index.Field ontology, final IndexerFieldVersion version,

+ -                         final String key, final String description, final Store storeMethod, final Index indexMethod,

+ -                         final TermVector termVector )

+ +                         final String key, final String description, final FieldType fieldType )

+      {

+          this.ontology = ontology;

+  

+ @@ -60,11 +50,7 @@ public class IndexerField

+  

+          this.key = key;

+  

+ -        this.storeMethod = storeMethod;

+ -

+ -        this.indexMethod = indexMethod;

+ -

+ -        this.termVector = termVector;

+ +        this.fieldType = fieldType;

+  

+          ontology.addIndexerField( this );

+      }

+ @@ -84,54 +70,31 @@ public class IndexerField

+          return key;

+      }

+  

+ -    public Field.Store getStoreMethod()

+ -    {

+ -        return storeMethod;

+ -    }

+ -

+ -    public Field.Index getIndexMethod()

+ -    {

+ -        return indexMethod;

+ -    }

+ -

+ -    public Field.TermVector getTermVector()

+ +    public FieldType getFieldType()

+      {

+ -        return termVector;

+ +        return fieldType;

+      }

+  

+      public boolean isIndexed()

+      {

+ -        return !Index.NO.equals( indexMethod );

+ +    	return !fieldType.indexOptions().equals(IndexOptions.NONE);

+      }

+  

+      public boolean isKeyword()

+      {

+ -        return isIndexed() && !Index.ANALYZED.equals( indexMethod );

+ +    	return isIndexed() && fieldType.tokenized();

+      }

+  

+      public boolean isStored()

+      {

+ -        return !( Store.NO.equals( storeMethod ) );

+ +    	return fieldType.stored();

+      }

+  

+      public Field toField( String value )

+      {

+          Field result;

+  

+ -        if ( getTermVector() != null )

+ -        {

+ -            result = new Field( getKey(), value, getStoreMethod(), getIndexMethod(), getTermVector() );

+ -        }

+ -        else

+ -        {

+ -            result = new Field( getKey(), value, getStoreMethod(), getIndexMethod() );

+ -        }

+ -

+ -        // if ( isKeyword() )

+ -        // {

+ -        // result.setOmitNorms( true );

+ -        // result.setOmitTf( true );

+ -        // }

+ +        result = new Field( getKey(), value, getFieldType());

+  

+          return result;

+      }

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

+ index d346a04..d0c9af3 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java

+ @@ -19,7 +19,6 @@ package org.apache.maven.index;

+   * under the License.

+   */

+  

+ -import org.apache.lucene.analysis.Token;

+  import org.apache.lucene.analysis.TokenStream;

+  import org.apache.lucene.search.highlight.Fragmenter;

+  

+ @@ -33,16 +32,6 @@ public class OneLineFragmenter

+          setText( originalText );

+      }

+  

+ -    public boolean isNewFragment( Token nextToken )

+ -    {

+ -        // text: /org/sonatype/...

+ -        // tokens: org sonatype

+ -        boolean result =

+ -            isNewline( getChar( nextToken.startOffset() - 1 ) ) || isNewline( getChar( nextToken.startOffset() - 2 ) );

+ -

+ -        return result;

+ -    }

+ -

+      protected boolean isNewline( char c )

+      {

+          return c == '\n';

+ 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 6a092c1..c81a3d3 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

+ @@ -36,6 +36,8 @@ 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.document.StoredField;

+ +import org.apache.lucene.document.StringField;

+  import org.apache.lucene.index.CorruptIndexException;

+  import org.apache.lucene.index.DirectoryReader;

+  import org.apache.lucene.index.IndexReader;

+ @@ -237,14 +239,18 @@ public class DefaultIndexingContext

+          if ( DirectoryReader.indexExists( indexDirectory ) )

+          {

+              try

+ +            {

+ +                indexDirectory.obtainLock( IndexWriter.WRITE_LOCK_NAME );

+ +            }

+ +            catch ( LockObtainFailedException ex)

+              {

+                  // unlock the dir forcibly

+ -                if ( IndexWriter.isLocked( indexDirectory ) )

+ -                {

+ -                    unlockForcibly( lockFactory, indexDirectory );

+ -                }

+ -

+ -                openAndWarmup();

+ +            	unlockForcibly( lockFactory, indexDirectory );

+ +            }

+ +            

+ +            try

+ +            {

+ +            	openAndWarmup();

+  

+                  checkAndUpdateIndexDescriptor( reclaimIndex );

+              }

+ @@ -276,9 +282,14 @@ public class DefaultIndexingContext

+              closeReaders();

+  

+              // unlock the dir forcibly

+ -            if ( IndexWriter.isLocked( indexDirectory ) )

+ +            try

+              {

+ -                unlockForcibly( lockFactory, indexDirectory );

+ +                indexDirectory.obtainLock( IndexWriter.WRITE_LOCK_NAME );

+ +            }

+ +            catch ( LockObtainFailedException ex)

+ +            {

+ +                // unlock the dir forcibly

+ +            	unlockForcibly( lockFactory, indexDirectory );

+              }

+  

+              deleteIndexFiles( true );

+ @@ -363,10 +374,9 @@ public class DefaultIndexingContext

+      {

+          Document hdr = new Document();

+  

+ -        hdr.add( new Field( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES, Field.Index.NOT_ANALYZED ) );

+ +        hdr.add( new StringField( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES ) );

+  

+ -        hdr.add( new Field( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId(), Field.Store.YES,

+ -                            Field.Index.NO ) );

+ +        hdr.add( new StoredField( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId() ) );

+  

+          IndexWriter w = getIndexWriter();

+  

+ @@ -530,7 +540,7 @@ public class DefaultIndexingContext

+  

+          this.indexWriter = new NexusIndexWriter( getIndexDirectory(), getWriterConfig() );

+          this.indexWriter.commit(); // LUCENE-2386

+ -        this.searcherManager = new SearcherManager( indexWriter, false, new NexusIndexSearcherFactory( this ) );

+ +        this.searcherManager = new SearcherManager( indexWriter, false, false, new NexusIndexSearcherFactory( this ) );

+      }

+  

+      /**

+ @@ -845,7 +855,7 @@ public class DefaultIndexingContext

+          {

+              indexSearcher.search( new TermQuery( new Term( field, filedValue ) ), collector );

+              TopDocs topDocs = collector.topDocs();

+ -            Set<String> groups = new LinkedHashSet<String>( Math.max( 10, topDocs.totalHits ) );

+ +            Set<String> groups = new LinkedHashSet<String>( (int)Math.max( 10, topDocs.totalHits ) );

+              if ( topDocs.totalHits > 0 )

+              {

+                  Document doc = indexSearcher.doc( topDocs.scoreDocs[0].doc );

+ @@ -876,10 +886,10 @@ public class DefaultIndexingContext

+                                               String listField )

+      {

+          final Document groupDoc = new Document();

+ -        groupDoc.add( new Field( field, //

+ -            fieldValue, Field.Store.YES, Field.Index.NOT_ANALYZED ) );

+ -        groupDoc.add( new Field( listField, //

+ -            ArtifactInfo.lst2str( groups ), Field.Store.YES, Field.Index.NO ) );

+ +        groupDoc.add( new StringField( field, //

+ +            fieldValue, Field.Store.YES ) );

+ +        groupDoc.add( new StoredField( listField, //

+ +            ArtifactInfo.lst2str( groups ) ) );

+          return groupDoc;

+      }

+  

+ 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 cd676ff..7be414e 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,15 +20,15 @@ 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;

+  import org.apache.lucene.document.Field;

+ +import org.apache.lucene.document.StoredField;

+ +import org.apache.lucene.document.StringField;

+  import org.apache.lucene.index.IndexReader;

+  import org.apache.lucene.index.IndexWriter;

+  import org.apache.lucene.store.Directory;

+ @@ -77,7 +77,7 @@ public class IndexUtils

+          {

+              source.fileLength( srcName ); // instead of fileExists

+          }

+ -        catch ( FileNotFoundException | NoSuchFileException e )

+ +        catch ( IOException e )

+          {

+              return false;

+          }

+ @@ -149,12 +149,12 @@ public class IndexUtils

+          Document document = new Document();

+  

+          // unique key

+ -        document.add( new Field( ArtifactInfo.UINFO, ai.getUinfo(), Field.Store.YES, Field.Index.NOT_ANALYZED ) );

+ +        document.add( new StringField( ArtifactInfo.UINFO, ai.getUinfo(), Field.Store.YES ) );

+  

+          if ( updateLastModified || doc.getField( ArtifactInfo.LAST_MODIFIED ) == null )

+          {

+ -            document.add( new Field( ArtifactInfo.LAST_MODIFIED, //

+ -                Long.toString( System.currentTimeMillis() ), Field.Store.YES, Field.Index.NO ) );

+ +        	document.add( new StoredField( ArtifactInfo.LAST_MODIFIED, //

+ +                Long.toString( System.currentTimeMillis() ) ) );

+          }

+          else

+          {

+ @@ -176,7 +176,7 @@ public class IndexUtils

+          {

+              directory.deleteFile( TIMESTAMP_FILE );

+          }

+ -        catch ( FileNotFoundException | NoSuchFileException e )

+ +        catch ( IOException e )

+          {

+              //Does not exist

+          }

+ @@ -216,10 +216,6 @@ public class IndexUtils

+              {

+                  result = new Date( ii.readLong() );

+              }

+ -            catch ( FileNotFoundException | NoSuchFileException e )

+ -            {

+ -                // Does not exist

+ -            }

+              catch ( IOException ex )

+              {

+                  // IO failure

+ 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 eb2246b..45b6d93 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

+ @@ -28,6 +28,7 @@ import org.apache.lucene.index.IndexWriterConfig;

+  import org.apache.lucene.index.SerialMergeScheduler;

+  import org.apache.lucene.store.Directory;

+  import org.apache.lucene.store.LockObtainFailedException;

+ +import org.apache.lucene.store.SleepingLockWrapper;

+  

+  /**

+   * An extension of <a

+ @@ -63,7 +64,6 @@ public class NexusIndexWriter

+          // default open mode is CreateOrAppend which suits us

+          config.setRAMBufferSizeMB( 2.0 ); // old default

+          config.setMergeScheduler( new SerialMergeScheduler() ); // merging serially

+ -        config.setWriteLockTimeout( IndexWriterConfig.WRITE_LOCK_TIMEOUT );

+          return config;

+      }

+  }

+ 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 9318fbb..88c00c1 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

+ @@ -28,8 +28,7 @@ import java.util.Collection;

+  import java.util.List;

+  

+  import org.apache.lucene.document.Document;

+ -import org.apache.lucene.document.Field.Index;

+ -import org.apache.lucene.document.Field.Store;

+ +import org.apache.lucene.document.TextField;

+  import org.apache.maven.index.ArtifactContext;

+  import org.apache.maven.index.ArtifactInfo;

+  import org.apache.maven.index.IndexerField;

+ @@ -52,7 +51,7 @@ public class JarFileContentsIndexCreator

+      public static final String ID = "jarContent";

+  

+      public static final IndexerField FLD_CLASSNAMES = new IndexerField( MAVEN.CLASSNAMES, IndexerFieldVersion.V3,

+ -        "classnames", "Artifact Classes (tokenized)", Store.NO, Index.ANALYZED );

+ +        "classnames", "Artifact Classes (tokenized)", TextField.TYPE_NOT_STORED );

+  

+      /**

+       * NexusAnalyzer makes exception with this field only, to keep backward compatibility with old consumers of

+ @@ -60,7 +59,7 @@ public class JarFileContentsIndexCreator

+       * registered BEFORE FLD_CLASSNAMES_KW!

+       */

+      public static final IndexerField FLD_CLASSNAMES_KW = new IndexerField( MAVEN.CLASSNAMES, IndexerFieldVersion.V1,

+ -        "c", "Artifact Classes (tokenized on newlines only)", Store.YES, Index.ANALYZED );

+ +        "c", "Artifact Classes (tokenized on newlines only)", TextField.TYPE_STORED );

+  

+      public JarFileContentsIndexCreator()

+      {

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java

+ index 71e18d9..06e2c8b 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java

+ @@ -31,8 +31,8 @@ import java.util.Arrays;

+  import java.util.Collection;

+  

+  import org.apache.lucene.document.Document;

+ -import org.apache.lucene.document.Field.Index;

+ -import org.apache.lucene.document.Field.Store;

+ +import org.apache.lucene.document.StringField;

+ +import org.apache.lucene.document.TextField;

+  import org.apache.maven.index.ArtifactContext;

+  import org.apache.maven.index.ArtifactInfo;

+  import org.apache.maven.index.IndexerField;

+ @@ -61,10 +61,10 @@ public class MavenPluginArtifactInfoIndexCreator

+      private static final String MAVEN_PLUGIN_PACKAGING = "maven-plugin";

+  

+      public static final IndexerField FLD_PLUGIN_PREFIX = new IndexerField( MAVEN.PLUGIN_PREFIX, IndexerFieldVersion.V1,

+ -        "px", "MavenPlugin prefix (as keyword, stored)", Store.YES, Index.NOT_ANALYZED );

+ +        "px", "MavenPlugin prefix (as keyword, stored)", StringField.TYPE_STORED );

+  

+      public static final IndexerField FLD_PLUGIN_GOALS = new IndexerField( MAVEN.PLUGIN_GOALS, IndexerFieldVersion.V1,

+ -        "gx", "MavenPlugin goals (as keyword, stored)", Store.YES, Index.ANALYZED );

+ +        "gx", "MavenPlugin goals (as keyword, stored)", TextField.TYPE_STORED );

+  

+      public MavenPluginArtifactInfoIndexCreator()

+      {

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java

+ index feea2d2..bb023fb 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java

+ @@ -28,8 +28,9 @@ import java.util.Collection;

+  

+  import org.apache.lucene.document.Document;

+  import org.apache.lucene.document.Field;

+ -import org.apache.lucene.document.Field.Index;

+ -import org.apache.lucene.document.Field.Store;

+ +import org.apache.lucene.document.StoredField;

+ +import org.apache.lucene.document.StringField;

+ +import org.apache.lucene.document.TextField;

+  import org.apache.maven.index.ArtifactAvailability;

+  import org.apache.maven.index.ArtifactContext;

+  import org.apache.maven.index.ArtifactInfo;

+ @@ -67,46 +68,46 @@ public class MinimalArtifactInfoIndexCreator

+       * Info: packaging, lastModified, size, sourcesExists, javadocExists, signatureExists. Stored, not indexed.

+       */

+      public static final IndexerField FLD_INFO = new IndexerField( NEXUS.INFO, IndexerFieldVersion.V1, "i",

+ -        "Artifact INFO (not indexed, stored)", Store.YES, Index.NO );

+ +        "Artifact INFO (not indexed, stored)", StoredField.TYPE );

+  

+      public static final IndexerField FLD_GROUP_ID_KW = new IndexerField( MAVEN.GROUP_ID, IndexerFieldVersion.V1, "g",

+ -        "Artifact GroupID (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "Artifact GroupID (as keyword)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_GROUP_ID = new IndexerField( MAVEN.GROUP_ID, IndexerFieldVersion.V3,

+ -        "groupId", "Artifact GroupID (tokenized)", Store.NO, Index.ANALYZED );

+ +        "groupId", "Artifact GroupID (tokenized)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_ARTIFACT_ID_KW = new IndexerField( MAVEN.ARTIFACT_ID, IndexerFieldVersion.V1,

+ -        "a", "Artifact ArtifactID (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "a", "Artifact ArtifactID (as keyword)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_ARTIFACT_ID = new IndexerField( MAVEN.ARTIFACT_ID, IndexerFieldVersion.V3,

+ -        "artifactId", "Artifact ArtifactID (tokenized)", Store.NO, Index.ANALYZED );

+ +        "artifactId", "Artifact ArtifactID (tokenized)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_VERSION_KW = new IndexerField( MAVEN.VERSION, IndexerFieldVersion.V1, "v",

+ -        "Artifact Version (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "Artifact Version (as keyword)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_VERSION = new IndexerField( MAVEN.VERSION, IndexerFieldVersion.V3, "version",

+ -        "Artifact Version (tokenized)", Store.NO, Index.ANALYZED );

+ +        "Artifact Version (tokenized)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_PACKAGING = new IndexerField( MAVEN.PACKAGING, IndexerFieldVersion.V1, "p",

+ -        "Artifact Packaging (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "Artifact Packaging (as keyword)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_EXTENSION = new IndexerField( MAVEN.EXTENSION, IndexerFieldVersion.V1, "e",

+ -        "Artifact extension (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "Artifact extension (as keyword)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_CLASSIFIER = new IndexerField( MAVEN.CLASSIFIER, IndexerFieldVersion.V1, "l",

+ -        "Artifact classifier (as keyword)", Store.NO, Index.NOT_ANALYZED );

+ +        "Artifact classifier (as keyword)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_NAME = new IndexerField( MAVEN.NAME, IndexerFieldVersion.V1, "n",

+ -        "Artifact name (tokenized, stored)", Store.YES, Index.ANALYZED );

+ +        "Artifact name (tokenized, stored)", TextField.TYPE_NOT_STORED );

+  

+      public static final IndexerField FLD_DESCRIPTION = new IndexerField( MAVEN.DESCRIPTION, IndexerFieldVersion.V1,

+ -        "d", "Artifact description (tokenized, stored)", Store.YES, Index.ANALYZED );

+ +        "d", "Artifact description (tokenized, stored)", TextField.TYPE_STORED );

+  

+      public static final IndexerField FLD_LAST_MODIFIED = new IndexerField( MAVEN.LAST_MODIFIED, IndexerFieldVersion.V1,

+ -        "m", "Artifact last modified (not indexed, stored)", Store.YES, Index.NO );

+ +        "m", "Artifact last modified (not indexed, stored)", StoredField.TYPE );

+  

+      public static final IndexerField FLD_SHA1 = new IndexerField( MAVEN.SHA1, IndexerFieldVersion.V1, "1",

+ -        "Artifact SHA1 checksum (as keyword, stored)", Store.YES, Index.NOT_ANALYZED );

+ +        "Artifact SHA1 checksum (as keyword, stored)", TextField.TYPE_STORED );

+  

+      private Locator jl = new JavadocLocator();

+  

+ @@ -310,18 +311,16 @@ public class MinimalArtifactInfoIndexCreator

+          // legacy!

+          if ( ai.getPrefix() != null )

+          {

+ -            doc.add( new Field( ArtifactInfo.PLUGIN_PREFIX, ai.getPrefix(), Field.Store.YES,

+ -                                Field.Index.NOT_ANALYZED ) );

+ +        	doc.add( new StringField( ArtifactInfo.PLUGIN_PREFIX, ai.getPrefix(), Field.Store.YES ) );

+          }

+  

+          if ( ai.getGoals() != null )

+          {

+ -            doc.add( new Field( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.getGoals() ), Field.Store.YES,

+ -                Field.Index.NO ) );

+ +        	doc.add( new StoredField( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.getGoals() ) ) );

+          }

+  

+          doc.removeField( ArtifactInfo.GROUP_ID );

+ -        doc.add( new Field( ArtifactInfo.GROUP_ID, ai.getGroupId(), Field.Store.NO, Field.Index.NOT_ANALYZED ) );

+ +        doc.add( new StringField( ArtifactInfo.GROUP_ID, ai.getGroupId(), Field.Store.NO ) );

+      }

+  

+      public boolean updateArtifactInfo( Document doc, ArtifactInfo ai )

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java

+ index ed06d0b..0d9041b 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java

+ @@ -23,7 +23,8 @@ import javax.inject.Named;

+  import javax.inject.Singleton;

+  

+  import org.apache.lucene.document.Document;

+ -import org.apache.lucene.document.Field;

+ +import org.apache.lucene.document.StringField;

+ +import org.apache.lucene.document.TextField;

+  import org.apache.maven.index.ArtifactContext;

+  import org.apache.maven.index.ArtifactInfo;

+  import org.apache.maven.index.IndexerField;

+ @@ -72,95 +73,90 @@ public class OsgiArtifactIndexCreator

+  

+      public static final IndexerField FLD_SHA256 =

+          new IndexerField( OSGI.SHA256, IndexerFieldVersion.V4, "sha256", "SHA-256 (not analyzed, stored)",

+ -                          Field.Store.YES, Field.Index.NOT_ANALYZED );

+ +                          StringField.TYPE_STORED);

+  

+      private static final String BSN = "Bundle-SymbolicName";

+  

+      public static final IndexerField FLD_BUNDLE_SYMBOLIC_NAME =

+          new IndexerField( OSGI.SYMBOLIC_NAME, IndexerFieldVersion.V4, BSN, "Bundle-SymbolicName (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      private static final String BV = "Bundle-Version";

+  

+      public static final IndexerField FLD_BUNDLE_VERSION =

+ -        new IndexerField( OSGI.VERSION, IndexerFieldVersion.V4, BV, "Bundle-Version (indexed, stored)", Field.Store.YES,

+ -                          Field.Index.ANALYZED );

+ +        new IndexerField( OSGI.VERSION, IndexerFieldVersion.V4, BV, "Bundle-Version (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String BEP = "Export-Package";

+  

+      public static final IndexerField FLD_BUNDLE_EXPORT_PACKAGE =

+          new IndexerField( OSGI.EXPORT_PACKAGE, IndexerFieldVersion.V4, BEP, "Export-Package (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      @Deprecated

+      private static final String BES = "Export-Service";

+      @Deprecated

+      public static final IndexerField FLD_BUNDLE_EXPORT_SERVIVE =

+          new IndexerField( OSGI.EXPORT_SERVICE, IndexerFieldVersion.V4, BES, "Export-Service (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      private static final String BD = "Bundle-Description";

+  

+      public static final IndexerField FLD_BUNDLE_DESCRIPTION =

+          new IndexerField( OSGI.DESCRIPTION, IndexerFieldVersion.V4, BD, "Bundle-Description (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      private static final String BN = "Bundle-Name";

+  

+      public static final IndexerField FLD_BUNDLE_NAME =

+ -        new IndexerField( OSGI.NAME, IndexerFieldVersion.V4, BN, "Bundle-Name (indexed, stored)", Field.Store.YES,

+ -                          Field.Index.ANALYZED );

+ +        new IndexerField( OSGI.NAME, IndexerFieldVersion.V4, BN, "Bundle-Name (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String BL = "Bundle-License";

+  

+      public static final IndexerField FLD_BUNDLE_LICENSE =

+ -        new IndexerField( OSGI.LICENSE, IndexerFieldVersion.V4, BL, "Bundle-License (indexed, stored)", Field.Store.YES,

+ -                          Field.Index.ANALYZED );

+ +        new IndexerField( OSGI.LICENSE, IndexerFieldVersion.V4, BL, "Bundle-License (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String BDU = "Bundle-DocURL";

+  

+      public static final IndexerField FLD_BUNDLE_DOCURL =

+ -        new IndexerField( OSGI.DOCURL, IndexerFieldVersion.V4, BDU, "Bundle-DocURL (indexed, stored)", Field.Store.YES,

+ -                          Field.Index.ANALYZED );

+ +        new IndexerField( OSGI.DOCURL, IndexerFieldVersion.V4, BDU, "Bundle-DocURL (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String BIP = "Import-Package";

+  

+      public static final IndexerField FLD_BUNDLE_IMPORT_PACKAGE =

+          new IndexerField( OSGI.IMPORT_PACKAGE, IndexerFieldVersion.V4, BIP, "Import-Package (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+  

+      private static final String BRB = "Require-Bundle";

+  

+      public static final IndexerField FLD_BUNDLE_REQUIRE_BUNDLE =

+          new IndexerField( OSGI.REQUIRE_BUNDLE, IndexerFieldVersion.V4, BRB, "Require-Bundle (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      private static final String PROVIDE_CAPABILITY = "Provide-Capability";

+  

+      public static final IndexerField FLD_BUNDLE_PROVIDE_CAPABILITY =

+          new IndexerField( OSGI.PROVIDE_CAPABILITY, IndexerFieldVersion.V4, PROVIDE_CAPABILITY,

+ -                          "Provide-Capability (indexed, stored)", Field.Store.YES, Field.Index.ANALYZED );

+ +                          "Provide-Capability (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String REQUIRE_CAPABILITY = "Require-Capability";

+  

+      public static final IndexerField FLD_BUNDLE_REQUIRE_CAPABILITY =

+          new IndexerField( OSGI.REQUIRE_CAPABILITY, IndexerFieldVersion.V4, REQUIRE_CAPABILITY,

+ -                          "Require-Capability (indexed, stored)", Field.Store.YES, Field.Index.ANALYZED );

+ +                          "Require-Capability (indexed, stored)", TextField.TYPE_STORED );

+  

+      private static final String FRAGMENT_HOST = "Fragment-Host";

+  

+      public static final IndexerField FLD_BUNDLE_FRAGMENT_HOST =

+          new IndexerField( OSGI.FRAGMENT_HOST, IndexerFieldVersion.V4, FRAGMENT_HOST, "Fragment-Host (indexed, stored)",

+ -                          Field.Store.YES, Field.Index.ANALYZED );

+ +                          TextField.TYPE_STORED );

+  

+      private static final String BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT = "Bundle-RequiredExecutionEnvironment";

+  

+      public static final IndexerField FLD_BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT =

+          new IndexerField( OSGI.BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT, IndexerFieldVersion.V4,

+                            BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT,

+ -                          "Bundle-RequiredExecutionEnvironment (indexed, stored)", Field.Store.YES,

+ -                          Field.Index.ANALYZED );

+ +                          "Bundle-RequiredExecutionEnvironment (indexed, stored)", TextField.TYPE_STORED );

+  

+  

+      public Collection<IndexerField> getIndexerFields()

+ 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 61f450c..08f8c3e 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

+ @@ -518,21 +518,21 @@ public class DefaultIndexTreeView

+              versionQ = getIndexer().constructQuery( MAVEN.VERSION, new SourcedSearchExpression( v ) );

+          }

+  

+ -        BooleanQuery q = new BooleanQuery();

+ +        BooleanQuery.Builder qb = new BooleanQuery.Builder();

+  

+ -        q.add( new BooleanClause( groupIdQ, BooleanClause.Occur.MUST ) );

+ +        qb.add( new BooleanClause( groupIdQ, BooleanClause.Occur.MUST ) );

+  

+          if ( artifactIdQ != null )

+          {

+ -            q.add( new BooleanClause( artifactIdQ, BooleanClause.Occur.MUST ) );

+ +            qb.add( new BooleanClause( artifactIdQ, BooleanClause.Occur.MUST ) );

+          }

+  

+          if ( versionQ != null )

+          {

+ -            q.add( new BooleanClause( versionQ, BooleanClause.Occur.MUST ) );

+ +            qb.add( new BooleanClause( versionQ, BooleanClause.Occur.MUST ) );

+          }

+  

+ -        IteratorSearchRequest searchRequest = new IteratorSearchRequest( q, request.getArtifactInfoFilter() );

+ +        IteratorSearchRequest searchRequest = new IteratorSearchRequest( qb.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 38c8d0d..83b726c 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

+ @@ -273,7 +273,7 @@ public class DefaultIndexUpdater

+  

+                  if ( !filter.accept( d ) )

+                  {

+ -                    boolean success = w.tryDeleteDocument( r, i );

+ +                	boolean success = w.tryDeleteDocument(r, i) != -1;

+                      // FIXME handle deletion failure

+                  }

+              }

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java

+ index 67f823d..db3f442 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java

+ @@ -34,8 +34,8 @@ import java.util.LinkedHashSet;

+  import java.util.Set;

+  import org.apache.lucene.document.Document;

+  import org.apache.lucene.document.Field;

+ -import org.apache.lucene.document.Field.Index;

+ -import org.apache.lucene.document.Field.Store;

+ +import org.apache.lucene.document.FieldType;

+ +import org.apache.lucene.index.IndexOptions;

+  import org.apache.lucene.index.IndexWriter;

+  import org.apache.maven.index.ArtifactInfo;

+  import org.apache.maven.index.context.IndexUtils;

+ @@ -181,23 +181,20 @@ public class IndexDataReader

+      {

+          int flags = dis.read();

+  

+ -        Index index = Index.NO;

+ +        FieldType fieldType = new FieldType();

+          if ( ( flags & IndexDataWriter.F_INDEXED ) > 0 )

+          {

+ -            boolean isTokenized = ( flags & IndexDataWriter.F_TOKENIZED ) > 0;

+ -            index = isTokenized ? Index.ANALYZED : Index.NOT_ANALYZED;

+ -        }

+ -

+ -        Store store = Store.NO;

+ -        if ( ( flags & IndexDataWriter.F_STORED ) > 0 )

+ -        {

+ -            store = Store.YES;

+ +        	boolean tokenized = ( flags & IndexDataWriter.F_TOKENIZED ) > 0;

+ +            fieldType.setTokenized(tokenized);

+ +            fieldType.setOmitNorms(!tokenized);

+ +            fieldType.setIndexOptions((tokenized ? IndexOptions.DOCS_AND_FREQS_AND_POSITIONS : IndexOptions.DOCS));

+          }

+ +        fieldType.setStored(( flags & IndexDataWriter.F_STORED ) > 0);

+  

+          String name = dis.readUTF();

+          String value = readUTF( dis );

+  

+ -        return new Field( name, value, store, index );

+ +        return new Field( name, value, fieldType );

+      }

+  

+      private static String readUTF( DataInput in )

+ -- 

+ 2.20.1

0001-Remove-dep-truezip.patch maven-indexer-truezip.patch
file renamed
+8 -5
@@ -1,6 +1,8 @@ 

- --- indexer-core/src/main/java/org/apache/maven/index/util/zip/ZipFacade.java.orig	2017-01-20 10:00:27.930024271 +0000

- +++ indexer-core/src/main/java/org/apache/maven/index/util/zip/ZipFacade.java	2017-01-20 10:00:55.415708439 +0000

- @@ -52,14 +52,7 @@

+ diff --git a/indexer-core/src/main/java/org/apache/maven/index/util/zip/ZipFacade.java b/indexer-core/src/main/java/org/apache/maven/index/util/zip/ZipFacade.java

+ index 1dcae06..dbeacf0 100644

+ --- a/indexer-core/src/main/java/org/apache/maven/index/util/zip/ZipFacade.java

+ +++ b/indexer-core/src/main/java/org/apache/maven/index/util/zip/ZipFacade.java

+ @@ -52,14 +52,7 @@ public class ZipFacade

       {

           if ( targetFile.isFile() )

           {
@@ -10,8 +12,9 @@ 

  -            }

  -            else

  -            {

-                  return new JavaZipFileHandle( targetFile );

+ -                return new JavaZipFileHandle( targetFile );

  -            }

+ +            return new JavaZipFileHandle( targetFile );

           }

   

-          throw new IOException( "The targetFile should point to an existing ZIP file!" );

+          throw new IOException( "The targetFile should point to an existing ZIP file:" + targetFile );

file modified
+31 -35
@@ -1,43 +1,43 @@ 

- # Use 5.1.2 snapshot there was no release tagged by upstream,

- # but this is what is available in maven central

- %global git_tag e0570bff5c60604115ab7ad0d5498055a60fc772

- 

  Name:           maven-indexer

- Version:        5.1.2

- Release:        0.7.gite0570bf%{?dist}

+ Version:        6.0.0

+ Release:        1%{?dist}

  Summary:        Standard for producing indexes of Maven repositories

  

  License:        ASL 2.0

  URL:            http://maven.apache.org/maven-indexer/index.html

  

- Source0:        https://github.com/apache/maven-indexer/archive/%{git_tag}/maven-indexer-%{version}.tar.gz

+ Source0:        https://github.com/apache/maven-indexer/archive/maven-indexer-%{version}.tar.gz

  

  # Port to latest lucene

- Patch0:         0001-Port-to-Lucene-5.patch

- Patch1:         0002-Port-to-Lucene-6.patch

+ Patch0:         0001-Port-to-Lucene-7.patch

  

  # Drop dep on truezip

- Patch2:         maven-indexer-truezip.patch

+ Patch1:         maven-indexer-truezip.patch

  

  BuildArch:      noarch

  

  BuildRequires:  maven-local

+ BuildRequires:  mvn(com.google.guava:guava:20.0)

+ BuildRequires:  mvn(com.google.inject:guice)

+ BuildRequires:  mvn(javax.annotation:javax.annotation-api)

+ BuildRequires:  mvn(javax.inject:javax.inject)

  BuildRequires:  mvn(org.apache.felix:maven-bundle-plugin)

  BuildRequires:  mvn(org.apache.lucene:lucene-analyzers-common)

+ BuildRequires:  mvn(org.apache.lucene:lucene-backward-codecs)

  BuildRequires:  mvn(org.apache.lucene:lucene-core)

  BuildRequires:  mvn(org.apache.lucene:lucene-highlighter)

  BuildRequires:  mvn(org.apache.lucene:lucene-queryparser)

- BuildRequires:  mvn(org.apache.maven.archetype:archetype-common)

+ BuildRequires:  mvn(org.apache.maven.archetype:archetype-catalog)

  BuildRequires:  mvn(org.apache.maven:maven-model)

  BuildRequires:  mvn(org.apache.maven:maven-parent:pom:)

  BuildRequires:  mvn(org.apache.maven.plugins:maven-failsafe-plugin)

+ BuildRequires:  mvn(org.apache.maven.plugins:maven-shade-plugin)

+ BuildRequires:  mvn(org.apache.maven.resolver:maven-resolver-api)

+ BuildRequires:  mvn(org.apache.maven.resolver:maven-resolver-util)

  BuildRequires:  mvn(org.apache.maven.wagon:wagon-provider-api)

- BuildRequires:  mvn(org.codehaus.plexus:plexus-component-annotations)

- BuildRequires:  mvn(org.codehaus.plexus:plexus-component-metadata)

- BuildRequires:  mvn(org.codehaus.plexus:plexus-container-default)

- BuildRequires:  mvn(org.codehaus.plexus:plexus-utils)

- BuildRequires:  mvn(org.eclipse.aether:aether-api)

- BuildRequires:  mvn(org.eclipse.aether:aether-util)

+ BuildRequires:  mvn(org.eclipse.sisu:org.eclipse.sisu.inject)

+ BuildRequires:  mvn(org.eclipse.sisu:org.eclipse.sisu.plexus)

+ BuildRequires:  mvn(org.slf4j:slf4j-api)

  

  %description

  Apache Maven Indexer (former Sonatype Nexus Indexer) is the defacto
@@ -51,10 +51,9 @@ 

  This package contains the API documentation for %{name}.

  

  %prep

- %setup -q -n %{name}-%{git_tag}

+ %setup -q -n %{name}-%{name}-%{version}

  %patch0 -p1

- %patch1 -p1

- %patch2

+ %patch1

  

  find -name '*.jar' -delete

  find -name '*.zip' -delete
@@ -63,21 +62,6 @@ 

  # Tests need porting to a modern jetty

  %pom_remove_dep -r org.mortbay.jetty:jetty

  

- # Switch from sonatype aether to eclipse aether

- %pom_remove_dep org.sonatype.aether:aether-api indexer-core

- %pom_remove_dep org.sonatype.aether:aether-util indexer-core

- %pom_add_dep org.eclipse.aether:aether-api indexer-core

- %pom_add_dep org.eclipse.aether:aether-util indexer-core

- find -name *.java -exec sed -i -e "s/org.sonatype.aether/org.eclipse.aether/g" {} \;

- 

- # Switch from sonatype to codehaus plexus

- %pom_remove_dep org.sonatype.sisu:sisu-inject-plexus indexer-cli

- %pom_remove_dep org.sonatype.sisu:sisu-inject-plexus indexer-core

- %pom_remove_dep org.sonatype.sisu:sisu-inject-plexus indexer-artifact

- %pom_add_dep org.codehaus.plexus:plexus-container-default indexer-cli

- %pom_add_dep org.codehaus.plexus:plexus-container-default indexer-core

- %pom_add_dep org.codehaus.plexus:plexus-container-default indexer-artifact

- 

  # Remove unnecessary plugins

  %pom_remove_plugin :maven-enforcer-plugin

  %pom_remove_plugin :apache-rat-plugin
@@ -89,6 +73,14 @@ 

  %pom_remove_dep -r de.schlichtherle.truezip:

  rm indexer-core/src/main/java/org/apache/maven/index/util/zip/TrueZipZipFileHandle.java

  

+ %pom_remove_plugin org.codehaus.mojo:animal-sniffer-maven-plugin

+ %pom_remove_dep com.google.code.findbugs:jsr305 indexer-core

+ %pom_remove_dep org.jmock:jmock indexer-core

+ 

+ %pom_remove_dep org.apache.maven.wagon:wagon-http

+ 

+ %pom_disable_module indexer-examples

+ 

  %build

  # Skip tests because they need porting to modern jetty

  %mvn_build -f
@@ -104,6 +96,10 @@ 

  %license NOTICE

  

  %changelog

+ * Mon Jan 14 2019 Marian Koncek <mkoncek@redhat.com> - 6.0.0-1

+ - Update to upstream version 6.0.0

+ - Fixes: RHBZ #1523074

+ 

  * Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.2-0.7.gite0570bf

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

  

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (maven-indexer-5.1.2.tar.gz) = cb9d7d11cd9eb122392f940410fb7181248277489e7000aff1a5a836cc2b436506eea601ff375b95937f808dd7302a38558a6a79a750c4a487f6372faf4de49d

+ SHA512 (maven-indexer-6.0.0.tar.gz) = 8549d54c6953dc7563b9056660a57e02a4bc41d1f6bd4e1b3e6a20b60d11cbcd7932c0a47d319a826577b24b55c7dbd3bffeeecd9081e564f47115f6cf0e15c0