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 ); }