Author: cstamas
Date: Thu Dec  9 23:02:35 2010
New Revision: 1044160

URL: http://svn.apache.org/viewvc?rev=1044160&view=rev
Log:
MINDEXER-1: adding ability to defer member selection.

Added:
    
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java
   (with props)
    
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
   (with props)
Modified:
    
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
    
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/NexusIndexer.java
    
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
    
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java

Modified: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
URL: 
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java?rev=1044160&r1=1044159&r2=1044160&view=diff
==============================================================================
--- 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
 (original)
+++ 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
 Thu Dec  9 23:02:35 2010
@@ -36,11 +36,13 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
+import org.apache.maven.index.context.ContextMemberProvider;
 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;
 import org.apache.maven.index.context.MergedIndexingContext;
+import org.apache.maven.index.context.StaticContextMemberProvider;
 import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -191,7 +193,20 @@ public class DefaultNexusIndexer
                                                      boolean searchable, 
Collection<IndexingContext> contexts )
         throws IOException
     {
-        IndexingContext context = new MergedIndexingContext( id, repositoryId, 
repository, searchable, contexts );
+        IndexingContext context =
+            new MergedIndexingContext( id, repositoryId, repository, 
searchable, new StaticContextMemberProvider(
+                contexts ) );
+
+        indexingContexts.put( context.getId(), context );
+
+        return context;
+    }
+
+    public IndexingContext addMergedIndexingContext( String id, String 
repositoryId, File repository,
+                                                     boolean searchable, 
ContextMemberProvider membersProvider )
+        throws IOException
+    {
+        IndexingContext context = new MergedIndexingContext( id, repositoryId, 
repository, searchable, membersProvider );
 
         indexingContexts.put( context.getId(), context );
 

Modified: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/NexusIndexer.java
URL: 
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/NexusIndexer.java?rev=1044160&r1=1044159&r2=1044160&view=diff
==============================================================================
--- 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/NexusIndexer.java
 (original)
+++ 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/NexusIndexer.java
 Thu Dec  9 23:02:35 2010
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.store.Directory;
 import org.apache.maven.index.cli.NexusIndexerCli;
+import org.apache.maven.index.context.ContextMemberProvider;
 import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
@@ -189,6 +190,10 @@ public interface NexusIndexer
                                               Collection<IndexingContext> 
contexts )
         throws IOException;
 
+    IndexingContext addMergedIndexingContext( String id, String repositoryId, 
File repository, boolean searchable,
+                                              ContextMemberProvider 
membersProvider )
+        throws IOException;
+
     /**
      * Removes the indexing context from Nexus indexer, closes it and deletes 
(if specified) the index files.
      * 

Added: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java
URL: 
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java?rev=1044160&view=auto
==============================================================================
--- 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java
 (added)
+++ 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java
 Thu Dec  9 23:02:35 2010
@@ -0,0 +1,8 @@
+package org.apache.maven.index.context;
+
+import java.util.Collection;
+
+public interface ContextMemberProvider
+{
+    Collection<IndexingContext> getMembers();
+}

Propchange: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/ContextMemberProvider.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
URL: 
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java?rev=1044160&r1=1044159&r2=1044160&view=diff
==============================================================================
--- 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
 (original)
+++ 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
 Thu Dec  9 23:02:35 2010
@@ -4,7 +4,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
@@ -35,7 +34,7 @@ public class MergedIndexingContext
 
     private final File repository;
 
-    private final List<IndexingContext> members;
+    private final ContextMemberProvider membersProvider;
 
     private final GavCalculator gavCalculator;
 
@@ -46,15 +45,13 @@ public class MergedIndexingContext
     private boolean searchable;
 
     public MergedIndexingContext( String id, String repositoryId, File 
repository, boolean searchable,
-                                  Collection<IndexingContext> contexts )
+                                  ContextMemberProvider membersProvider )
         throws IOException
     {
-        assert contexts != null : "Collection of member contexts cannot be 
null!";
-
         this.id = id;
         this.repositoryId = repositoryId;
         this.repository = repository;
-        this.members = Collections.unmodifiableList( new 
ArrayList<IndexingContext>( contexts ) );
+        this.membersProvider = membersProvider;
         this.gavCalculator = new M2GavCalculator();
         this.directory = new RAMDirectory();
         this.directoryFile = File.createTempFile( "merged-index", ".dir" );
@@ -63,9 +60,9 @@ public class MergedIndexingContext
         this.searchable = searchable;
     }
 
-    protected List<IndexingContext> getMembers()
+    protected Collection<IndexingContext> getMembers()
     {
-        return members;
+        return membersProvider.getMembers();
     }
 
     public String getId()
@@ -157,7 +154,7 @@ public class MergedIndexingContext
     public IndexReader getIndexReader()
         throws IOException
     {
-        List<IndexingContext> members = getMembers();
+        Collection<IndexingContext> members = getMembers();
 
         ArrayList<IndexReader> contextsToSearch = new ArrayList<IndexReader>( 
members.size() );
 

Added: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
URL: 
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java?rev=1044160&view=auto
==============================================================================
--- 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
 (added)
+++ 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
 Thu Dec  9 23:02:35 2010
@@ -0,0 +1,34 @@
+package org.apache.maven.index.context;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * A simple "static" context member provider, when the members are known in 
advance.
+ * 
+ * @author cstamas
+ */
+public class StaticContextMemberProvider
+    implements ContextMemberProvider
+{
+    private final List<IndexingContext> members;
+
+    public StaticContextMemberProvider( Collection<IndexingContext> members )
+    {
+        ArrayList<IndexingContext> m = new ArrayList<IndexingContext>();
+
+        if ( members != null )
+        {
+            m.addAll( members );
+        }
+
+        this.members = Collections.unmodifiableList( m );
+    }
+
+    public List<IndexingContext> getMembers()
+    {
+        return members;
+    }
+}

Propchange: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/StaticContextMemberProvider.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
URL: 
http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java?rev=1044160&r1=1044159&r2=1044160&view=diff
==============================================================================
--- 
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
 (original)
+++ 
maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
 Thu Dec  9 23:02:35 2010
@@ -43,6 +43,7 @@ import org.apache.lucene.store.RAMDirect
 import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.context.MergedIndexingContext;
+import org.apache.maven.index.context.StaticContextMemberProvider;
 import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
 import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
 import org.apache.maven.index.packer.DefaultIndexPacker;
@@ -237,7 +238,7 @@ public class NexusIndexerTest
 
         IndexingContext mergedContext =
             new MergedIndexingContext( "test", "merged", 
context.getRepository(), true,
-                Collections.singletonList( context ) );
+                new StaticContextMemberProvider( Collections.singletonList( 
context ) ) );
 
         performQueryCreatorNGSearch( indexer, mergedContext );
     }


Reply via email to