You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/06/08 05:54:07 UTC

svn commit: r412642 - in /maven/repository-manager/trunk: maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/ maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ maven-repository-indexer/src/test...

Author: brett
Date: Wed Jun  7 20:54:06 2006
New Revision: 412642

URL: http://svn.apache.org/viewvc?rev=412642&view=rev
Log:
[MRM-118] refactor the searchers into components any make them thread safe

Added:
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java
      - copied, changed from r412324, maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java   (with props)
Modified:
    maven/repository-manager/trunk/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java
    maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java
    maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java
    maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java
    maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java
    maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java
    maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java

Modified: maven/repository-manager/trunk/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java (original)
+++ maven/repository-manager/trunk/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java Wed Jun  7 20:54:06 2006
@@ -20,9 +20,9 @@
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.repository.indexing.ArtifactRepositoryIndex;
-import org.apache.maven.repository.indexing.DefaultRepositoryIndexSearcher;
 import org.apache.maven.repository.indexing.RepositoryIndexException;
 import org.apache.maven.repository.indexing.RepositoryIndexSearchException;
+import org.apache.maven.repository.indexing.RepositoryIndexSearcher;
 import org.apache.maven.repository.indexing.RepositoryIndexingFactory;
 import org.apache.maven.repository.indexing.query.SinglePhraseQuery;
 import org.codehaus.classworlds.ClassWorld;
@@ -67,11 +67,11 @@
         ArtifactRepositoryIndex index =
             indexFactory.createArtifactRepositoryIndex( new File( args[0], ".index" ).getAbsolutePath(), repository );
 
-        DefaultRepositoryIndexSearcher searcher = indexFactory.createDefaultRepositoryIndexSearcher( index );
+        RepositoryIndexSearcher searcher = (RepositoryIndexSearcher) embedder.lookup( RepositoryIndexSearcher.ROLE );
 
         try
         {
-            System.out.println( searcher.search( new SinglePhraseQuery( args[1], args[2] ) ) );
+            System.out.println( searcher.search( new SinglePhraseQuery( args[1], args[2] ), index ) );
         }
         finally
         {

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java Wed Jun  7 20:54:06 2006
@@ -32,21 +32,24 @@
 import java.util.zip.ZipEntry;
 
 /**
- * Abstract class for RepositoryIndexers
+ * Abstract class for RepositoryIndexers.
  *
  * @author Edwin Punzalan
  */
 public abstract class AbstractRepositoryIndex
     implements RepositoryIndex
 {
+    // TODO [!] can this be derived from the repository?
     private String indexPath;
 
     private boolean indexOpen;
 
+    // TODO [!] why is the writer open for the life, but not the reader? why keep them open that length of time anyway? investigate best practices in Lucene
     private IndexWriter indexWriter;
 
     protected ArtifactRepository repository;
 
+    // TODO [!] is this really needed externally?
     private Analyzer analyzer;
 
     /**
@@ -155,6 +158,7 @@
     protected IndexWriter getIndexWriter()
         throws IOException
     {
+        // TODO [!] why is this allowed to be called before open()?
         if ( indexWriter == null )
         {
             indexWriter = new IndexWriter( indexPath, getAnalyzer(), false );
@@ -220,7 +224,7 @@
         }
         catch ( IOException ie )
         {
-            throw new RepositoryIndexException( indexPath + "is not a valid directory." );
+            throw new RepositoryIndexException( indexPath + " is not a valid directory." );
         }
         finally
         {

Copied: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java (from r412324, maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java)
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java?p2=maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java&p1=maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java&r1=412324&r2=412642&rev=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java Wed Jun  7 20:54:06 2006
@@ -35,50 +35,34 @@
 import java.util.StringTokenizer;
 
 /**
- * <p/>
  * This class is to be invoked or called by the action class for
  * general and advanced searching. It uses the DefaultRepositoryIndexSearcher
  * to perform the search and constructs the search result objects to be
  * returned to tha webapp action class.
+ *
+ * @plexus.component role="org.apache.maven.repository.indexing.RepositoryIndexSearchLayer"
  */
-public class RepositoryIndexSearchLayer
+public class DefaultRepositoryIndexSearchLayer
+    implements RepositoryIndexSearchLayer
 {
-    private RepositoryIndex index;
-
-    private ArtifactFactory factory;
-
-    private List searchResults;
-
-    private List generalSearchResults;
-
     /**
-     * Class constructor
-     *
-     * @param index
+     * @plexus.requirement
      */
-    public RepositoryIndexSearchLayer( RepositoryIndex index, ArtifactFactory factory )
-    {
-        this.index = index;
-        this.factory = factory;
-    }
+    private ArtifactFactory factory;
 
     /**
-     * Method for searching the keyword in all the fields in the index. "Query everything" search.
-     * The index fields will be retrieved and query objects will be constructed using the
-     * optional (OR) CompoundQuery.
-     *
-     * @param keyword
-     * @return
-     * @throws RepositoryIndexSearchException
+     * @plexus.requirement
      */
-    public List searchGeneral( String keyword )
+    private RepositoryIndexSearcher searcher;
+
+    public List searchGeneral( String keyword, RepositoryIndex index )
         throws RepositoryIndexSearchException
     {
-        generalSearchResults = new ArrayList();
+        List generalSearchResults = new ArrayList();
         for ( int i = 0; i < RepositoryIndex.FIELDS.length; i++ )
         {
             Query qry = new SinglePhraseQuery( RepositoryIndex.FIELDS[i], keyword );
-            List results = searchAdvanced( qry );
+            List results = searchAdvanced( qry, index );
             for ( Iterator iter = results.iterator(); iter.hasNext(); )
             {
                 SearchResult result = (SearchResult) iter.next();
@@ -87,8 +71,8 @@
                 for ( Iterator it = entrySet.iterator(); it.hasNext(); )
                 {
                     Map.Entry entry = (Map.Entry) it.next();
-                    SearchResult result2 =
-                        createSearchResult( result.getArtifact(), map, keyword, (String) entry.getKey() );
+                    SearchResult result2 = createSearchResult( result.getArtifact(), map, keyword,
+                                                               (String) entry.getKey(), generalSearchResults );
                     generalSearchResults.add( result2 );
                 }
             }
@@ -97,20 +81,12 @@
         return generalSearchResults;
     }
 
-    /**
-     * Method for "advanced search" of the index
-     *
-     * @param qry the query object that will be used for searching the index
-     * @return
-     * @throws RepositoryIndexSearchException
-     */
-    public List searchAdvanced( Query qry )
+    public List searchAdvanced( Query qry, RepositoryIndex index )
         throws RepositoryIndexSearchException
     {
-        RepositoryIndexSearcher searcher = new DefaultRepositoryIndexSearcher( index, factory );
-        searchResults = new ArrayList();
+        List searchResults = new ArrayList();
 
-        List hits = searcher.search( qry );
+        List hits = searcher.search( qry, index );
         for ( Iterator it = hits.iterator(); it.hasNext(); )
         {
             RepositoryIndexSearchHit hit = (RepositoryIndexSearchHit) it.next();
@@ -136,7 +112,7 @@
                 Model model = (Model) hit.getObject();
                 for ( int i = 0; i < RepositoryIndex.MODEL_FIELDS.length; i++ )
                 {
-                    result = createSearchResult( model, RepositoryIndex.MODEL_FIELDS[i] );
+                    result = createSearchResult( model, RepositoryIndex.MODEL_FIELDS[i], searchResults );
                     searchResults.add( result );
                 }
             }
@@ -227,7 +203,8 @@
      * @param keyword  the query term
      * @return the SearchResult object
      */
-    private SearchResult createSearchResult( Artifact artifact, Map map, String keyword, String field )
+    private SearchResult createSearchResult( Artifact artifact, Map map, String keyword, String field,
+                                             List generalSearchResults )
     {
         int index = getListIndex( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
                                   generalSearchResults );
@@ -236,8 +213,7 @@
 
         if ( index > -1 )
         {
-            result = (SearchResult) generalSearchResults.get( index );
-            generalSearchResults.remove( index );
+            result = (SearchResult) generalSearchResults.remove( index );
             resultMap = result.getFieldMatches();
         }
         else
@@ -297,7 +273,7 @@
      * @param field the field whose value is to be retrieved
      * @return a SearchResult object
      */
-    private SearchResult createSearchResult( Model model, String field )
+    private SearchResult createSearchResult( Model model, String field, List searchResults )
     {
         int index = getListIndex( model.getGroupId(), model.getArtifactId(), model.getVersion(), searchResults );
         SearchResult result;
@@ -306,8 +282,7 @@
         // the object already exists in the search result list
         if ( index > -1 )
         {
-            result = (SearchResult) searchResults.get( index );
-            searchResults.remove( index );
+            result = (SearchResult) searchResults.remove( index );
             map = result.getFieldMatches();
         }
         else

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java Wed Jun  7 20:54:06 2006
@@ -22,6 +22,7 @@
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.Metadata;
@@ -50,40 +51,24 @@
 /**
  * Implementation Class for searching through the index.
  *
- * @todo this is not a component, but extends ALE, meaning logging will throw an exception! -- should be a component
+ * @plexus.component role="org.apache.maven.repository.indexing.RepositoryIndexSearcher"
  */
 public class DefaultRepositoryIndexSearcher
     extends AbstractLogEnabled
     implements RepositoryIndexSearcher
 {
-    protected RepositoryIndex index;
-
-    private ArtifactFactory factory;
-
-    private List artifactList;
-
     /**
-     * Constructor
-     *
-     * @param index the index object
+     * @plexus.requirement
      */
-    protected DefaultRepositoryIndexSearcher( RepositoryIndex index, ArtifactFactory factory )
-    {
-        this.index = index;
-        this.factory = factory;
-    }
+    private ArtifactFactory factory;
 
-    /**
-     * @see RepositoryIndexSearcher#search(org.apache.maven.repository.indexing.query.Query)
-     */
-    public List search( Query query )
+    public List search( Query query, RepositoryIndex index )
         throws RepositoryIndexSearchException
     {
-        artifactList = new ArrayList();
         org.apache.lucene.search.Query luceneQuery;
         try
         {
-            luceneQuery = createLuceneQuery( query );
+            luceneQuery = query.createLuceneQuery( index );
         }
         catch ( ParseException e )
         {
@@ -100,11 +85,15 @@
             throw new RepositoryIndexSearchException( "Unable to open index: " + e.getMessage(), e );
         }
 
-        List docs;
+        List docs = new ArrayList();
         try
         {
             Hits hits = searcher.search( luceneQuery );
-            docs = buildList( hits );
+            for ( int i = 0; i < hits.length(); i++ )
+            {
+                Document doc = hits.doc( i );
+                docs.add( createSearchedObjectFromIndexDocument( doc, index.getRepository() ) );
+            }
         }
         catch ( MalformedURLException e )
         {
@@ -130,43 +119,14 @@
     }
 
     /**
-     * Method to create a lucene Query object by converting a prepared Query object
-     *
-     * @param query the prepared Query object to be converted into a lucene Query object
-     * @return a lucene Query object to represent the passed Query object
-     * @throws ParseException
-     */
-    private org.apache.lucene.search.Query createLuceneQuery( Query query )
-        throws ParseException
-    {
-        return query.createLuceneQuery( index );
-    }
-
-    /**
-     * Create a list of artifact objects from the result set.
-     *
-     * @param hits the search result set
-     * @return List
-     */
-    private List buildList( Hits hits )
-        throws RepositoryIndexSearchException, IOException
-    {
-        for ( int i = 0; i < hits.length(); i++ )
-        {
-            Document doc = hits.doc( i );
-            artifactList.add( createSearchedObjectFromIndexDocument( doc ) );
-        }
-
-        return artifactList;
-    }
-
-    /**
      * Method for creating the object to be returned for the search
      *
-     * @param doc the index document where the object field values will be retrieved from
+     * @param doc        the index document where the object field values will be retrieved from
+     * @param repository
      * @return Object
      */
-    protected RepositoryIndexSearchHit createSearchedObjectFromIndexDocument( Document doc )
+    protected RepositoryIndexSearchHit createSearchedObjectFromIndexDocument( Document doc,
+                                                                              ArtifactRepository repository )
         throws RepositoryIndexSearchException
     {
         RepositoryIndexSearchHit searchHit = null;
@@ -180,8 +140,7 @@
             String packaging = doc.get( RepositoryIndex.FLD_PACKAGING );
             Artifact artifact = factory.createBuildArtifact( groupId, artifactId, version, packaging );
 
-            artifact.setFile(
-                new File( index.getRepository().getBasedir(), index.getRepository().pathOf( artifact ) ) );
+            artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
 
             Map map = new HashMap();
             map.put( RepositoryIndex.ARTIFACT, artifact );
@@ -201,7 +160,7 @@
             Artifact pomArtifact = factory.createProjectArtifact( groupId, artifactId, version );
 
             searchHit = new RepositoryIndexSearchHit( false, false, true );
-            searchHit.setObject( readPom( pomArtifact ) );
+            searchHit.setObject( readPom( pomArtifact, repository ) );
         }
         // the document is of type metadata
         else if ( doc.get( RepositoryIndex.FLD_DOCTYPE ).equals( RepositoryIndex.METADATA ) )
@@ -233,7 +192,7 @@
                 repoMetadata = new GroupRepositoryMetadata( groupId );
             }
 
-            repoMetadata.setMetadata( readMetadata( repoMetadata ) );
+            repoMetadata.setMetadata( readMetadata( repoMetadata, repository ) );
 
             searchHit = new RepositoryIndexSearchHit( false, true, false );
             searchHit.setObject( repoMetadata );
@@ -247,11 +206,10 @@
      *
      * @return RepositoryMetadata
      */
-    private Metadata readMetadata( RepositoryMetadata repoMetadata )
+    private Metadata readMetadata( RepositoryMetadata repoMetadata, ArtifactRepository repository )
         throws RepositoryIndexSearchException
     {
-        File file = new File( index.getRepository().getBasedir(),
-                              index.getRepository().pathOfRemoteRepositoryMetadata( repoMetadata ) );
+        File file = new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( repoMetadata ) );
 
         MetadataXpp3Reader metadataReader = new MetadataXpp3Reader();
 
@@ -284,10 +242,10 @@
      *
      * @return RepositoryMetadata
      */
-    private Model readPom( Artifact pomArtifact )
+    private Model readPom( Artifact pomArtifact, ArtifactRepository repository )
         throws RepositoryIndexSearchException
     {
-        File file = new File( index.getRepository().getBasedir(), index.getRepository().pathOf( pomArtifact ) );
+        File file = new File( repository.getBasedir(), repository.pathOf( pomArtifact ) );
 
         MavenXpp3Reader r = new MavenXpp3Reader();
 

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java Wed Jun  7 20:54:06 2006
@@ -23,7 +23,6 @@
 /**
  * @author Edwin Punzalan
  * @plexus.component role="org.apache.maven.repository.indexing.RepositoryIndexingFactory"
- * @todo these methods should be replaced by plexus lookups of some kind!
  */
 public class DefaultRepositoryIndexingFactory
     implements RepositoryIndexingFactory
@@ -63,22 +62,6 @@
         throws RepositoryIndexException
     {
         return new MetadataRepositoryIndex( indexPath, repository );
-    }
-
-    /*
-     * @see RepositoryIndexingFactory#createRepositoryIndexSearchLayer(RepositoryIndex)
-     */
-    public RepositoryIndexSearchLayer createRepositoryIndexSearchLayer( RepositoryIndex index )
-    {
-        return new RepositoryIndexSearchLayer( index, artifactFactory );
-    }
-
-    /**
-     * @see RepositoryIndexingFactory#createDefaultRepositoryIndexSearcher(RepositoryIndex)
-     */
-    public DefaultRepositoryIndexSearcher createDefaultRepositoryIndexSearcher( RepositoryIndex index )
-    {
-        return new DefaultRepositoryIndexSearcher( index, artifactFactory );
     }
 
 }

Added: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java?rev=412642&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java (added)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java Wed Jun  7 20:54:06 2006
@@ -0,0 +1,60 @@
+package org.apache.maven.repository.indexing;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.repository.indexing.query.Query;
+
+import java.util.List;
+
+/**
+ * Repository search layer.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public interface RepositoryIndexSearchLayer
+{
+    /**
+     * The Plexus component role name.
+     */
+    String ROLE = RepositoryIndexSearchLayer.class.getName();
+
+    /**
+     * Method for searching the keyword in all the fields in the index. "Query everything" search.
+     * The index fields will be retrieved and query objects will be constructed using the
+     * optional (OR) CompoundQuery.
+     *
+     * @param keyword
+     * @param index
+     * @return
+     * @throws RepositoryIndexSearchException
+     *
+     */
+    List searchGeneral( String keyword, RepositoryIndex index )
+        throws RepositoryIndexSearchException;
+
+    /**
+     * Method for "advanced search" of the index
+     *
+     * @param qry   the query object that will be used for searching the index
+     * @param index
+     * @return
+     * @throws RepositoryIndexSearchException
+     *
+     */
+    List searchAdvanced( Query qry, RepositoryIndex index )
+        throws RepositoryIndexSearchException;
+}

Propchange: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java Wed Jun  7 20:54:06 2006
@@ -26,13 +26,19 @@
 public interface RepositoryIndexSearcher
 {
     /**
+     * Plexus component role name.
+     */
+    String ROLE = RepositoryIndexSearcher.class.getName();
+
+    /**
      * Search the artifact based on the search criteria specified in the query object. Returns a list of
      * artifact objects.
      *
      * @param query The query object that contains the search criteria.
+     * @param index
      * @return List
      * @throws RepositoryIndexSearchException
      */
-    List search( Query query )
+    List search( Query query, RepositoryIndex index )
         throws RepositoryIndexSearchException;
 }

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java Wed Jun  7 20:54:06 2006
@@ -59,19 +59,4 @@
     MetadataRepositoryIndex createMetadataRepositoryIndex( String indexPath, ArtifactRepository repository )
         throws RepositoryIndexException;
 
-    /**
-     * Method to create an instance of RepositoryIndexSearchLayer
-     *
-     * @param index the RepositoryIndex object where the query string will be searched
-     * @return the RepositoryIndexSearchLayer instance
-     */
-    RepositoryIndexSearchLayer createRepositoryIndexSearchLayer( RepositoryIndex index );
-
-    /**
-     * Method to create an instance of DefaultRepositoryIndexSearcher
-     *
-     * @param index the RepositoryIndex object where the query string will be searched
-     * @return the DefaultRepositoryIndexSearcher instance
-     */
-    DefaultRepositoryIndexSearcher createDefaultRepositoryIndexSearcher( RepositoryIndex index );
 }

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java Wed Jun  7 20:54:06 2006
@@ -161,12 +161,14 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer repoSearchLayer =
+            (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
         ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
-        RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         // search version
         Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0" );
-        List artifacts = repoSearchLayer.searchAdvanced( qry );
+        List artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifacts.size() );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -177,7 +179,7 @@
 
         // search classes
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_CLASSES, "App" );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifacts.size() );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -188,7 +190,7 @@
 
         // search packages
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_PACKAGES, "groupId" );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifacts.size() );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -199,7 +201,7 @@
 
         // search files
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_FILES, "pom.xml" );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 3, artifacts.size() );
         Iterator iter = artifacts.iterator();
         if ( iter.hasNext() )
@@ -211,7 +213,7 @@
 
         // search group id
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_GROUPID, "org.apache.maven" );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 2, artifacts.size() );
         iter = artifacts.iterator();
         if ( iter.hasNext() )
@@ -223,7 +225,7 @@
 
         // search artifact id
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_ARTIFACTID, "maven-artifact" );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifacts.size() );
         for ( iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -234,7 +236,7 @@
 
         // search version
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "2" );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 2, artifacts.size() );
         for ( iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -250,7 +252,7 @@
         String sha1 = digester.createChecksum( artifact.getFile(), Digester.SHA1 );
 
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_SHA1, sha1.trim() );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifacts.size() );
         for ( iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -263,7 +265,7 @@
         // search md5 checksum
         String md5 = digester.createChecksum( artifact.getFile(), Digester.MD5 );
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_MD5, md5.trim() );
-        artifacts = repoSearchLayer.searchAdvanced( qry );
+        artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifacts.size() );
         for ( iter = artifacts.iterator(); iter.hasNext(); )
         {
@@ -287,9 +289,9 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer repoSearchLayer =
+            (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
         ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
-        //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
-        RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         // Criteria 1: required query
         // ex. artifactId=maven-artifact AND groupId=org.apache.maven
@@ -299,7 +301,7 @@
         rQry.and( qry1 );
         rQry.and( qry2 );
 
-        List artifacts = repoSearchLayer.searchAdvanced( rQry );
+        List artifacts = repoSearchLayer.searchAdvanced( rQry, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -316,7 +318,7 @@
         oQry.or( rQry );
         oQry.or( qry3 );
 
-        artifacts = repoSearchLayer.searchAdvanced( oQry );
+        artifacts = repoSearchLayer.searchAdvanced( oQry, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -345,7 +347,7 @@
         rQry2.and( rQry );
         rQry2.or( oQry5 );
 
-        artifacts = repoSearchLayer.searchAdvanced( rQry2 );
+        artifacts = repoSearchLayer.searchAdvanced( rQry2, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -369,7 +371,7 @@
         oQry2.and( rQry2 );
         oQry2.and( rQry3 );
 
-        artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+        artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -392,7 +394,7 @@
         rQry4.and( qry8 );
         oQry2.and( rQry4 );
 
-        artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+        artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -415,14 +417,15 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer repoSearchLayer =
+            (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
         ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
-        // RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
-        RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         try
         {
             Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "~~~~~" );
-            repoSearchLayer.searchAdvanced( qry );
+            repoSearchLayer.searchAdvanced( qry, indexer );
             fail( "Must throw an exception on unparseable query." );
         }
         catch ( RepositoryIndexSearchException re )
@@ -431,12 +434,11 @@
         }
 
         indexer = factory.createArtifactRepositoryIndex( "target/index/sample", repository );
-        repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         try
         {
             Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0" );
-            repoSearchLayer.searchAdvanced( qry );
+            repoSearchLayer.searchAdvanced( qry, indexer );
             fail( "Must throw an exception on invalid index location." );
         }
         catch ( RepositoryIndexSearchException re )
@@ -457,15 +459,16 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearcher repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE );
+
         ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
 
         Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
         indexer.deleteDocument( RepositoryIndex.FLD_ID, RepositoryIndex.ARTIFACT + artifact.getId() );
 
-        RepositoryIndexSearcher repoSearcher = factory.createDefaultRepositoryIndexSearcher( indexer );
         Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_ID, RepositoryIndex.ARTIFACT + artifact.getId() );
-        List artifacts = repoSearcher.search( qry );
+        List artifacts = repoSearcher.search( qry, indexer );
         assertEquals( 0, artifacts.size() );
     }
 

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java Wed Jun  7 20:54:06 2006
@@ -137,13 +137,14 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer repoSearchLayer =
+            (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
         MetadataRepositoryIndex indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
-        //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
-        RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         // search last update
         Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_LASTUPDATE, "20051212044643" );
-        List metadataList = repoSearchLayer.searchAdvanced( qry );
+        List metadataList = repoSearchLayer.searchAdvanced( qry, indexer );
         //assertEquals( 1, metadataList.size() );
         for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
         {
@@ -159,7 +160,7 @@
 
         // search plugin prefix
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_PLUGINPREFIX, "org.apache.maven" );
-        metadataList = repoSearchLayer.searchAdvanced( qry );
+        metadataList = repoSearchLayer.searchAdvanced( qry, indexer );
         //assertEquals( 1, metadataList.size() );
         for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
         {
@@ -184,7 +185,7 @@
         rQry.addQuery( qry1 );
         rQry.addQuery( qry2 );
 
-        metadataList = repoSearchLayer.searchAdvanced( rQry );
+        metadataList = repoSearchLayer.searchAdvanced( rQry, indexer );
         for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
         {
             RepositoryIndexSearchHit hit = (RepositoryIndexSearchHit) iter.next();
@@ -204,7 +205,7 @@
         rQry.addQuery( qry1 );
         rQry.addQuery( qry2 );
 
-        metadataList = repoSearchLayer.searchAdvanced( rQry );
+        metadataList = repoSearchLayer.searchAdvanced( rQry, indexer );
         assertEquals( 0, metadataList.size() );
 
         indexer.close();
@@ -256,15 +257,16 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearcher repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE );
+
         MetadataRepositoryIndex indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
 
         RepositoryMetadata repoMetadata = new GroupRepositoryMetadata( "org.apache.maven" );
         repoMetadata.setMetadata( readMetadata( repoMetadata ) );
         indexer.deleteDocument( RepositoryIndex.FLD_ID, (String) repoMetadata.getKey() );
 
-        RepositoryIndexSearcher repoSearcher = factory.createDefaultRepositoryIndexSearcher( indexer );
         Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_ID, (String) repoMetadata.getKey() );
-        List metadataList = repoSearcher.search( qry );
+        List metadataList = repoSearcher.search( qry, indexer );
         assertEquals( 0, metadataList.size() );
     }
 

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java Wed Jun  7 20:54:06 2006
@@ -122,13 +122,14 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer repoSearchLayer =
+            (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
         PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
-        //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
-        RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         // search version
         Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0" );
-        List artifactList = repoSearchLayer.searchAdvanced( qry );
+        List artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifactList.size() );
         for ( Iterator iter = artifactList.iterator(); iter.hasNext(); )
         {
@@ -139,7 +140,7 @@
 
         // search group id
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_GROUPID, "org.apache.maven" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 2, artifactList.size() );
         Iterator artifacts = artifactList.iterator();
         if ( artifacts.hasNext() )
@@ -151,7 +152,7 @@
 
         // search artifact id
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_ARTIFACTID, "maven-artifact" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -162,7 +163,7 @@
 
         // search version
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "2" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 2, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -173,7 +174,7 @@
 
         // search packaging
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_PACKAGING, "jar" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 3, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -186,7 +187,7 @@
         //search license url
         qry =
             new SinglePhraseQuery( RepositoryIndex.FLD_LICENSE_URLS, "http://www.apache.org/licenses/LICENSE-2.0.txt" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 2, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -201,7 +202,7 @@
 
         //search dependencies
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_DEPENDENCIES, "org.codehaus.plexus:plexus-utils:1.0.5" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 2, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -225,7 +226,7 @@
         //search build plugin
         qry =
             new SinglePhraseQuery( RepositoryIndex.FLD_PLUGINS_BUILD, "org.codehaus.modello:modello-maven-plugin:2.0" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -249,7 +250,7 @@
         //search reporting plugin
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_PLUGINS_REPORT,
                                      "org.apache.maven.plugins:maven-checkstyle-plugin:2.0" );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -276,7 +277,7 @@
         String sha1 = digester.createChecksum( artifact.getFile(), Digester.SHA1 );
 
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_SHA1, sha1.trim() );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -289,7 +290,7 @@
         // search md5 checksum
         String md5 = digester.createChecksum( getPomFile( artifact ), Digester.MD5 );
         qry = new SinglePhraseQuery( RepositoryIndex.FLD_MD5, md5.trim() );
-        artifactList = repoSearchLayer.searchAdvanced( qry );
+        artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
         assertEquals( 1, artifactList.size() );
         for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
         {
@@ -313,9 +314,10 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer repoSearchLayer =
+            (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
         PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
-        //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
-        RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
         // Criteria 1: required query
         // ex. artifactId=maven-artifact AND groupId=org.apache.maven
@@ -325,7 +327,7 @@
         rQry.and( qry1 );
         rQry.and( qry2 );
 
-        List artifacts = repoSearchLayer.searchAdvanced( rQry );
+        List artifacts = repoSearchLayer.searchAdvanced( rQry, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -342,7 +344,7 @@
         oQry.and( rQry );
         oQry.or( qry3 );
 
-        artifacts = repoSearchLayer.searchAdvanced( oQry );
+        artifacts = repoSearchLayer.searchAdvanced( oQry, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -373,7 +375,7 @@
         rQry2.and( rQry );
         rQry2.and( oQry5 );
 
-        artifacts = repoSearchLayer.searchAdvanced( rQry2 );
+        artifacts = repoSearchLayer.searchAdvanced( rQry2, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -397,7 +399,7 @@
         oQry2.and( rQry2 );
         oQry2.and( rQry3 );
 
-        artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+        artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -420,7 +422,7 @@
         rQry4.and( qry8 );
         oQry2.and( rQry4 );
 
-        artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+        artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
         for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -477,13 +479,15 @@
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearcher repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE );
+
         PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
+
         Model pom = getPom( "org.apache.maven", "maven-artifact", "2.0.1" );
         indexer.deleteDocument( RepositoryIndex.FLD_ID, RepositoryIndex.POM + pom.getId() );
 
-        RepositoryIndexSearcher repoSearcher = factory.createDefaultRepositoryIndexSearcher( indexer );
         Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_ID, RepositoryIndex.POM + pom.getId() );
-        List artifactList = repoSearcher.search( qry );
+        List artifactList = repoSearcher.search( qry, indexer );
         assertEquals( 0, artifactList.size() );
     }
 

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java Wed Jun  7 20:54:06 2006
@@ -169,10 +169,11 @@
     {
         createTestIndex();
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        RepositoryIndexSearchLayer searchLayer = (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
         ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
-        RepositoryIndexSearchLayer searchLayer = factory.createRepositoryIndexSearchLayer( indexer );
 
-        List returnList = searchLayer.searchGeneral( "org.apache.maven" );
+        List returnList = searchLayer.searchGeneral( "org.apache.maven", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -193,7 +194,7 @@
         }
 
         //POM license urls
-        returnList = searchLayer.searchGeneral( "http://www.apache.org/licenses/LICENSE-2.0.txt" );
+        returnList = searchLayer.searchGeneral( "http://www.apache.org/licenses/LICENSE-2.0.txt", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -214,7 +215,7 @@
         }
 
         //POM dependency
-        returnList = searchLayer.searchGeneral( "org.codehaus.plexus:plexus-utils:1.0.5" );
+        returnList = searchLayer.searchGeneral( "org.codehaus.plexus:plexus-utils:1.0.5", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -235,7 +236,7 @@
         }
 
         // POM reporting plugin
-        returnList = searchLayer.searchGeneral( "org.apache.maven.plugins:maven-checkstyle-plugin:2.0" );
+        returnList = searchLayer.searchGeneral( "org.apache.maven.plugins:maven-checkstyle-plugin:2.0", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -257,7 +258,7 @@
         }
 
         // POM build plugin
-        returnList = searchLayer.searchGeneral( "org.codehaus.modello:modello-maven-plugin:2.0" );
+        returnList = searchLayer.searchGeneral( "org.codehaus.modello:modello-maven-plugin:2.0", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -278,7 +279,7 @@
         }
 
         //maven-artifact-2.0.1.jar MD5 checksum
-        returnList = searchLayer.searchGeneral( "F5A934ABBBC70A33136D89A996B9D5C09F652766" );
+        returnList = searchLayer.searchGeneral( "F5A934ABBBC70A33136D89A996B9D5C09F652766", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -296,7 +297,7 @@
         }
 
         //maven-artifact-2.0.1.jar SHA1 checksum
-        returnList = searchLayer.searchGeneral( "AE55D9B5720E11B6CF19FE1E31A42E51" );
+        returnList = searchLayer.searchGeneral( "AE55D9B5720E11B6CF19FE1E31A42E51", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -313,7 +314,7 @@
         }
 
         //packaging jar
-        returnList = searchLayer.searchGeneral( "jar" );
+        returnList = searchLayer.searchGeneral( "jar", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
@@ -329,14 +330,14 @@
             }
         }
 
-        returnList = searchLayer.searchGeneral( "test" );
+        returnList = searchLayer.searchGeneral( "test", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();
             assertEquals( "test", result.getArtifact().getGroupId() );
         }
 
-        returnList = searchLayer.searchGeneral( "test-artifactId" );
+        returnList = searchLayer.searchGeneral( "test-artifactId", indexer );
         for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
         {
             SearchResult result = (SearchResult) iter.next();

Modified: maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java (original)
+++ maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java Wed Jun  7 20:54:06 2006
@@ -50,6 +50,11 @@
     /**
      * @plexus.requirement
      */
+    private RepositoryIndexSearchLayer searchLayer;
+
+    /**
+     * @plexus.requirement
+     */
     private ArtifactRepositoryFactory repositoryFactory;
 
     /**
@@ -74,9 +79,7 @@
 
             ArtifactRepositoryIndex index = factory.createArtifactRepositoryIndex( indexPath, repository );
 
-            RepositoryIndexSearchLayer searchLayer = factory.createRepositoryIndexSearchLayer( index );
-
-            searchResult = searchLayer.searchGeneral( searchString );
+            searchResult = searchLayer.searchGeneral( searchString, index );
 
             return SUCCESS;
         }

Modified: maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java?rev=412642&r1=412641&r2=412642&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java (original)
+++ maven/repository-manager/trunk/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java Wed Jun  7 20:54:06 2006
@@ -60,6 +60,11 @@
     /**
      * @plexus.requirement
      */
+    private RepositoryIndexSearchLayer searchLayer;
+
+    /**
+     * @plexus.requirement
+     */
     private Configuration configuration;
 
     public String execute()
@@ -94,9 +99,7 @@
 
         ArtifactRepositoryIndex index = factory.createArtifactRepositoryIndex( indexPath, repository );
 
-        RepositoryIndexSearchLayer searchLayer = factory.createRepositoryIndexSearchLayer( index );
-
-        searchResult = searchLayer.searchAdvanced( new SinglePhraseQuery( key, searchTerm ) );
+        searchResult = searchLayer.searchAdvanced( new SinglePhraseQuery( key, searchTerm ), index );
 
         return SUCCESS;
     }