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/01/09 03:16:55 UTC

svn commit: r367160 - /maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/

Author: brett
Date: Sun Jan  8 18:16:47 2006
New Revision: 367160

URL: http://svn.apache.org/viewcvs?rev=367160&view=rev
Log:
indexing simplification

Modified:
    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/AbstractRepositoryIndexSearcher.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndex.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndex.java

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java?rev=367160&r1=367159&r2=367160&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 Sun Jan  8 18:16:47 2006
@@ -36,19 +36,24 @@
 
     private boolean indexOpen;
 
-    private IndexReader indexReader;
-
     private IndexWriter indexWriter;
 
     protected ArtifactRepository repository;
 
-    public AbstractRepositoryIndex( String indexPath, ArtifactRepository repository )
+    protected AbstractRepositoryIndex( String indexPath, ArtifactRepository repository, String[] indexFields )
         throws RepositoryIndexException
     {
         this.repository = repository;
         this.indexPath = indexPath;
 
-        open( indexPath );
+        try
+        {
+            validateIndex( indexFields );
+        }
+        catch ( IOException e )
+        {
+            throw new RepositoryIndexException( e );
+        }
     }
 
     /**
@@ -96,12 +101,6 @@
                 indexWriter = null;
             }
 
-            if ( indexReader != null )
-            {
-                indexReader.close();
-                indexReader = null;
-            }
-
             indexOpen = false;
         }
         catch ( IOException e )
@@ -110,23 +109,6 @@
         }
     }
 
-    /**
-     * method for opening the index directory for indexing operations
-     */
-    protected void open( String indexPath )
-        throws RepositoryIndexException
-    {
-        try
-        {
-            this.indexPath = indexPath;
-            validateIndex();
-        }
-        catch ( IOException e )
-        {
-            throw new RepositoryIndexException( e );
-        }
-    }
-
     public String getIndexPath()
     {
         return indexPath;
@@ -142,50 +124,42 @@
         return indexWriter;
     }
 
-    private IndexReader getIndexReader()
-        throws IOException
-    {
-        if ( indexReader == null )
-        {
-            indexReader = IndexReader.open( indexPath );
-        }
-        return indexReader;
-    }
-
     /**
      * method for validating an index directory
      *
+     * @param indexFields
      * @throws RepositoryIndexException if the given indexPath is not valid for this type of RepositoryIndex
      */
-    private void validateIndex()
+    private void validateIndex( String[] indexFields )
         throws RepositoryIndexException, IOException
     {
         File indexDir = new File( indexPath );
         if ( IndexReader.indexExists( indexDir ) )
         {
-            IndexReader indexReader = getIndexReader();
-            if ( indexReader.numDocs() > 0 )
+            IndexReader indexReader = IndexReader.open( indexPath );
+            try
             {
-                Collection fields = indexReader.getFieldNames();
-                String[] indexFields = getIndexFields();
-                for ( int idx = 0; idx < indexFields.length; idx++ )
+                if ( indexReader.numDocs() > 0 )
                 {
-                    if ( !fields.contains( indexFields[idx] ) )
+                    Collection fields = indexReader.getFieldNames();
+                    for ( int idx = 0; idx < indexFields.length; idx++ )
                     {
-                        throw new RepositoryIndexException(
-                            "The Field " + indexFields[idx] + " does not exist in " + "index path " + indexPath + "." );
+                        if ( !fields.contains( indexFields[idx] ) )
+                        {
+                            throw new RepositoryIndexException(
+                                "The Field " + indexFields[idx] + " does not exist in index " + indexPath + "." );
+                        }
                     }
                 }
             }
-            else
+            finally
             {
-                //getLogger().info( "Skipping index field validations for empty index." );
+                indexReader.close();
             }
         }
         else if ( !indexDir.exists() )
         {
             indexWriter = new IndexWriter( indexPath, getAnalyzer(), true );
-            //getLogger().info( "New index directory created in: " + indexDir.getAbsolutePath() );
         }
         else if ( indexDir.isDirectory() )
         {

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexSearcher.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexSearcher.java?rev=367160&r1=367159&r2=367160&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexSearcher.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexSearcher.java Sun Jan  8 18:16:47 2006
@@ -28,6 +28,7 @@
 import org.apache.maven.repository.indexing.query.CompoundQueryTerm;
 import org.apache.maven.repository.indexing.query.Query;
 import org.apache.maven.repository.indexing.query.SinglePhraseQuery;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -38,6 +39,7 @@
  *
  */
 public abstract class AbstractRepositoryIndexSearcher
+    extends AbstractLogEnabled
     implements RepositoryIndexSearcher
 {
     protected RepositoryIndex index;
@@ -63,43 +65,50 @@
     public List search( Query query )
         throws RepositoryIndexSearchException
     {
-        IndexSearcher searcher;
 
+        org.apache.lucene.search.Query luceneQuery;
         try
         {
-            searcher = new IndexSearcher( index.getIndexPath() );
+            luceneQuery = createLuceneQuery( query );
         }
-        catch ( IOException e )
+        catch ( ParseException e )
         {
-            throw new RepositoryIndexSearchException( e.getMessage(), e );
+            throw new RepositoryIndexSearchException( "Unable to construct query: " + e.getMessage(), e );
         }
 
-        Hits hits;
+        IndexSearcher searcher;
         try
         {
-            hits = searcher.search( createLuceneQuery( query ) );
+            searcher = new IndexSearcher( index.getIndexPath() );
         }
         catch ( IOException e )
         {
-            throw new RepositoryIndexSearchException( e.getMessage(), e );
-        }
-        catch ( ParseException e )
-        {
-            throw new RepositoryIndexSearchException( e.getMessage(), e );
+            throw new RepositoryIndexSearchException( "Unable to open index: " + e.getMessage(), e );
         }
 
-        List artifactList;
+        List docs;
         try
         {
-            artifactList = buildList( hits );
-            searcher.close();
+            Hits hits = searcher.search( luceneQuery );
+            docs = buildList( hits );
+        }
+        catch ( IOException e )
+        {
+            throw new RepositoryIndexSearchException( "Unable to search index: " + e.getMessage(), e );
         }
-        catch ( IOException ie )
+        finally
         {
-            throw new RepositoryIndexSearchException( ie.getMessage(), ie );
+            try
+            {
+                searcher.close();
+            }
+            catch ( IOException e )
+            {
+                getLogger().error( "Unable to close index searcher", e );
+            }
         }
 
-        return artifactList;
+        return docs;
     }
 
     private org.apache.lucene.search.Query createLuceneQuery( String field, String value )

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndex.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndex.java?rev=367160&r1=367159&r2=367160&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndex.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndex.java Sun Jan  8 18:16:47 2006
@@ -69,7 +69,7 @@
     public ArtifactRepositoryIndex( String indexPath, ArtifactRepository repository, Digester digester )
         throws RepositoryIndexException
     {
-        super( indexPath, repository );
+        super( indexPath, repository, FIELDS );
         this.digester = digester;
     }
 
@@ -86,16 +86,6 @@
         }
 
         return analyzer;
-    }
-
-    /**
-     * method for collecting the available index fields usable for searching
-     *
-     * @return index field names
-     */
-    public String[] getIndexFields()
-    {
-        return FIELDS;
     }
 
     /**

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java?rev=367160&r1=367159&r2=367160&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java Sun Jan  8 18:16:47 2006
@@ -79,7 +79,7 @@
                                ArtifactFactory artifactFactory )
         throws RepositoryIndexException
     {
-        super( indexPath, repository );
+        super( indexPath, repository, FIELDS );
         this.digester = digester;
         this.artifactFactory = artifactFactory;
     }
@@ -106,11 +106,6 @@
             throw new RepositoryIndexException(
                 "This instance of indexer cannot index instances of " + obj.getClass().getName() );
         }
-    }
-
-    public String[] getIndexFields()
-    {
-        return FIELDS;
     }
 
     public void indexPom( Model pom )

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndex.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndex.java?rev=367160&r1=367159&r2=367160&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndex.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndex.java Sun Jan  8 18:16:47 2006
@@ -26,8 +26,6 @@
 {
     String ROLE = RepositoryIndex.class.getName();
 
-    String[] getIndexFields();
-
     boolean isOpen();
 
     void index( Object obj )