You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ep...@apache.org on 2006/01/25 08:04:26 UTC

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

Author: epunzalan
Date: Tue Jan 24 23:04:13 2006
New Revision: 372138

URL: http://svn.apache.org/viewcvs?rev=372138&view=rev
Log:
PR: MRM-55
Submitted by: Maria Odea Ching

Checked the index for a duplicate and delete it if one exists

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/ArtifactRepositoryIndex.java
    maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/MetadataRepositoryIndex.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/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

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=372138&r1=372137&r2=372138&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 Tue Jan 24 23:04:13 2006
@@ -41,28 +41,42 @@
 
     protected ArtifactRepository repository;
 
+    protected boolean indexExists;
+
     /**
      * Class constructor
      *
      * @param indexPath
      * @param repository
-     * @param indexFields
      * @throws RepositoryIndexException
      */
-    protected AbstractRepositoryIndex( String indexPath, ArtifactRepository repository, String[] indexFields )
+    protected AbstractRepositoryIndex( String indexPath, ArtifactRepository repository )
         throws RepositoryIndexException
     {
         this.repository = repository;
         this.indexPath = indexPath;
+    }
 
+
+    public void open()
+        throws RepositoryIndexException
+    {
         try
         {
-            validateIndex( indexFields );
+            if ( indexExists )
+            {
+                indexWriter = new IndexWriter( indexPath, getAnalyzer(), false );
+            }
+            else
+            {
+                indexWriter = new IndexWriter( indexPath, getAnalyzer(), true );
+            }
         }
-        catch ( IOException e )
+        catch ( IOException ie )
         {
-            throw new RepositoryIndexException( e );
+            throw new RepositoryIndexException( ie );
         }
+        indexOpen = true;
     }
 
     /**
@@ -146,47 +160,29 @@
      * @param indexFields
      * @throws RepositoryIndexException if the given indexPath is not valid for this type of RepositoryIndex
      */
-    private void validateIndex( String[] indexFields )
+    protected void validateIndex( String[] indexFields )
         throws RepositoryIndexException, IOException
     {
-        File indexDir = new File( indexPath );
-        if ( IndexReader.indexExists( indexDir ) )
+        IndexReader indexReader = IndexReader.open( indexPath );
+        try
         {
-            IndexReader indexReader = IndexReader.open( indexPath );
-            try
+            if ( indexReader.numDocs() > 0 )
             {
-                if ( indexReader.numDocs() > 0 )
+                Collection fields = indexReader.getFieldNames();
+                for ( int idx = 0; idx < indexFields.length; idx++ )
                 {
-                    Collection fields = indexReader.getFieldNames();
-                    for ( int idx = 0; idx < indexFields.length; idx++ )
+                    if ( !fields.contains( indexFields[idx] ) )
                     {
-                        if ( !fields.contains( indexFields[idx] ) )
-                        {
-                            throw new RepositoryIndexException(
-                                "The Field " + indexFields[idx] + " does not exist in index " + indexPath + "." );
-                        }
+                        throw new RepositoryIndexException(
+                            "The Field " + indexFields[idx] + " does not exist in index " + indexPath + "." );
                     }
                 }
             }
-            finally
-            {
-                indexReader.close();
-            }
-        }
-        else if ( !indexDir.exists() )
-        {
-            indexWriter = new IndexWriter( indexPath, getAnalyzer(), true );
-        }
-        else if ( indexDir.isDirectory() )
-        {
-            throw new RepositoryIndexException( indexPath + " is not a valid index directory." );
         }
-        else
+        finally
         {
-            throw new RepositoryIndexException( indexPath + " is not a directory." );
+            indexReader.close();
         }
-
-        indexOpen = true;
     }
 
     /**
@@ -198,9 +194,14 @@
     }
 
     /**
-     * @see org.apache.maven.repository.indexing.RepositoryIndex#deleteDocument(String, String)
+     * Delete the document(s) that contains the specified value on the specified field.
+     *
+     * @param field
+     * @param value
+     * @throws RepositoryIndexException
+     * @throws IOException
      */
-    public void deleteDocument( String field, String value )
+    protected void deleteDocument( String field, String value )
         throws RepositoryIndexException, IOException
     {
         IndexReader indexReader = null;
@@ -218,4 +219,44 @@
             indexReader.close();
         }
     }
+
+    /**
+     * Check if the index already exists.
+     *
+     * @throws IOException
+     * @throws RepositoryIndexException
+     */
+    protected void checkIfIndexExists()
+        throws IOException, RepositoryIndexException
+    {
+        File indexDir = new File( indexPath );
+
+        if ( IndexReader.indexExists( indexDir ) )
+        {
+            indexExists = true;
+        }
+        else if ( !indexDir.exists() )
+        {
+            indexExists = false;
+        }
+        else if ( indexDir.isDirectory() )
+        {
+            throw new RepositoryIndexException( indexPath + " is not a valid index directory." );
+        }
+        else
+        {
+            throw new RepositoryIndexException( indexPath + " is not a directory." );
+        }
+    }
+
+    /**
+     * Checks if the object has already been indexed.
+     *
+     * @param object the object to be indexed.
+     * @throws RepositoryIndexException
+     * @throws IOException
+     */
+    abstract void isIndexed( Object object )
+        throws RepositoryIndexException, IOException;
+
 }

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=372138&r1=372137&r2=372138&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 Tue Jan 24 23:04:13 2006
@@ -27,7 +27,9 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
 import java.util.Enumeration;
+import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipException;
 import java.util.zip.ZipFile;
@@ -70,6 +72,8 @@
 
     protected static final String ARTIFACT_TYPE = "ARTIFACT";
 
+    private static final List KEYWORD_FIELDS = Arrays.asList( new String[]{FLD_ID} );
+
     /**
      * Class constructor
      *
@@ -81,7 +85,7 @@
     public ArtifactRepositoryIndex( String indexPath, ArtifactRepository repository, Digester digester )
         throws RepositoryIndexException
     {
-        super( indexPath, repository, FIELDS );
+        super( indexPath, repository );
         this.digester = digester;
     }
 
@@ -99,6 +103,28 @@
     }
 
     /**
+     * @see AbstractRepositoryIndex#isIndexed(Object)
+     */
+    public void isIndexed( Object object )
+        throws RepositoryIndexException, IOException
+    {
+        if ( object instanceof Artifact )
+        {
+            Artifact artifact = (Artifact) object;
+            checkIfIndexExists();
+            if ( indexExists )
+            {
+                validateIndex( FIELDS );
+                deleteDocument( FLD_ID, ARTIFACT_TYPE + artifact.getId() );
+            }
+        }
+        else
+        {
+            throw new RepositoryIndexException( "Object is not of type artifact." );
+        }
+    }
+
+    /**
      * Method to index a given artifact
      *
      * @param artifact the Artifact object to be indexed
@@ -107,11 +133,6 @@
     public void indexArtifact( Artifact artifact )
         throws RepositoryIndexException
     {
-        if ( !isOpen() )
-        {
-            throw new RepositoryIndexException( "Unable to add artifact index on a closed index" );
-        }
-
         StringBuffer classes = new StringBuffer();
         StringBuffer packages = new StringBuffer();
         StringBuffer files = new StringBuffer();
@@ -178,6 +199,11 @@
 
         try
         {
+            isIndexed( artifact );
+            if ( !isOpen() )
+            {
+                open();
+            }
             getIndexWriter().addDocument( doc );
         }
         catch ( IOException e )
@@ -191,7 +217,7 @@
      */
     public boolean isKeywordField( String field )
     {
-        return false;
+        return KEYWORD_FIELDS.contains( field );
     }
 
     /**

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/MetadataRepositoryIndex.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/MetadataRepositoryIndex.java?rev=372138&r1=372137&r2=372138&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/MetadataRepositoryIndex.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/MetadataRepositoryIndex.java Tue Jan 24 23:04:13 2006
@@ -63,7 +63,7 @@
     public MetadataRepositoryIndex( String indexPath, ArtifactRepository repository )
         throws RepositoryIndexException
     {
-        super( indexPath, repository, FIELDS );
+        super( indexPath, repository );
     }
 
     /**
@@ -115,11 +115,6 @@
     private void indexMetadata( RepositoryMetadata repoMetadata )
         throws RepositoryIndexException
     {
-        if ( !isOpen() )
-        {
-            throw new RepositoryIndexException( "Unable to add artifact index on a closed index" );
-        }
-
         //get lastUpdated from Versioning (specified in Metadata object)
         //get pluginPrefixes from Plugin (spcified in Metadata object) -----> concatenate/append???
         //get the metadatapath: check where metadata is located, then concatenate the groupId,
@@ -177,6 +172,11 @@
 
         try
         {
+            isIndexed( repoMetadata );
+            if ( !isOpen() )
+            {
+                open();
+            }
             getIndexWriter().addDocument( doc );
         }
         catch ( IOException e )
@@ -188,5 +188,27 @@
     public boolean isKeywordField( String field )
     {
         return false;
+    }
+
+    /**
+     * @see org.apache.maven.repository.indexing.AbstractRepositoryIndex#isIndexed(Object)
+     */
+    public void isIndexed( Object object )
+        throws RepositoryIndexException, IOException
+    {
+        if ( object instanceof RepositoryMetadata )
+        {
+            RepositoryMetadata repoMetadata = (RepositoryMetadata) object;
+            checkIfIndexExists();
+            if ( indexExists )
+            {
+                //validateIndex( FIELDS );
+                deleteDocument( FLD_ID, (String) repoMetadata.getKey() );
+            }
+        }
+        else
+        {
+            throw new RepositoryIndexException( "Object is not of type metadata." );
+        }
     }
 }

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=372138&r1=372137&r2=372138&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 Tue Jan 24 23:04:13 2006
@@ -98,7 +98,7 @@
                                ArtifactFactory artifactFactory )
         throws RepositoryIndexException
     {
-        super( indexPath, repository, FIELDS );
+        super( indexPath, repository );
         this.digester = digester;
         this.artifactFactory = artifactFactory;
     }
@@ -117,6 +117,29 @@
     }
 
     /**
+     * @see org.apache.maven.repository.indexing.AbstractRepositoryIndex#isIndexed(Object)
+     */
+    public void isIndexed( Object object )
+        throws RepositoryIndexException, IOException
+    {
+        if ( object instanceof Model )
+        {
+            Model pom = (Model) object;
+            checkIfIndexExists();
+            if ( indexExists )
+            {
+                validateIndex( FIELDS );
+                deleteDocument( FLD_ID, POM_TYPE + pom.getId() );
+            }
+        }
+        else
+        {
+            throw new RepositoryIndexException( "Object is not of type model." );
+        }
+
+    }
+
+    /**
      * Method to create the index fields for a Model object into the index
      *
      * @param pom the Model object to be indexed
@@ -125,11 +148,6 @@
     public void indexPom( Model pom )
         throws RepositoryIndexException
     {
-        if ( !isOpen() )
-        {
-            throw new RepositoryIndexException( "Unable to add pom index on a closed index" );
-        }
-
         Document doc = new Document();
         doc.add( Field.Keyword( FLD_ID, POM_TYPE + pom.getId() ) );
         doc.add( Field.Text( FLD_GROUPID, pom.getGroupId() ) );
@@ -177,6 +195,11 @@
 
         try
         {
+            isIndexed( pom );
+            if ( !isOpen() )
+            {
+                open();
+            }
             getIndexWriter().addDocument( doc );
         }
         catch ( IOException e )

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java?rev=372138&r1=372137&r2=372138&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 Tue Jan 24 23:04:13 2006
@@ -69,11 +69,14 @@
         throws Exception
     {
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        Artifact artifact = getArtifact( "test", "test-artifactId", "1.0" );
+        artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
 
         try
         {
             String notIndexDir = new File( "pom.xml" ).getAbsolutePath();
-            factory.createArtifactRepositoryIndex( notIndexDir, repository );
+            ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( notIndexDir, repository );
+            indexer.indexArtifact( artifact );
             fail( "Must throw exception on non-directory index directory" );
         }
         catch ( RepositoryIndexException e )
@@ -84,7 +87,8 @@
         try
         {
             String notIndexDir = new File( "" ).getAbsolutePath();
-            factory.createArtifactRepositoryIndex( notIndexDir, repository );
+            ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( notIndexDir, repository );
+            indexer.indexArtifact( artifact );
             fail( "Must throw an exception on a non-index directory" );
         }
         catch ( RepositoryIndexException e )
@@ -92,43 +96,26 @@
             // expected
         }
 
-        Artifact artifact = getArtifact( "test", "test-artifactId", "1.0" );
-        artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
-
         ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
-        indexer.close();
-
-        try
-        {
-            indexer.indexArtifact( artifact );
-            fail( "Must throw exception on add index with closed index." );
-        }
-        catch ( RepositoryIndexException e )
-        {
-            // expected
-        }
-
         try
         {
-            indexer.optimize();
-            fail( "Must throw exception on optimize index with closed index." );
+            indexer.isIndexed( new Object() );
+            fail( "Must throw exception on object not of type artifact." );
         }
         catch ( RepositoryIndexException e )
         {
             // expected
         }
-
-        indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
-
-        indexer.close();
     }
 
     /**
      * Create an index that will be used for testing.
+     * Indexing process: check if the object was already indexed [ checkIfIndexed(Object) ], open the index [ open() ],
+     * index the object [ index(Object) ], optimize the index [ optimize() ] and close the index [ close() ].
      *
      * @throws Exception
      */
-    public void createTestIndex()
+    private void createTestIndex()
         throws Exception
     {
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
@@ -137,17 +124,27 @@
         Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
         indexer.indexArtifact( artifact );
+        indexer.optimize();
+        indexer.close();
 
         artifact = getArtifact( "org.apache.maven", "maven-model", "2.0" );
         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
         indexer.indexArtifact( artifact );
+        indexer.optimize();
+        indexer.close();
 
         artifact = getArtifact( "test", "test-artifactId", "1.0" );
         artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
         indexer.indexArtifact( artifact );
+        indexer.optimize();
+        indexer.close();
 
+        artifact = getArtifact( "test", "test-artifactId", "1.0" );
+        artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
+        indexer.indexArtifact( artifact );
         indexer.optimize();
         indexer.close();
+
     }
 
     /**
@@ -275,7 +272,6 @@
     public void testSearchCompound()
         throws Exception
     {
-
         createTestIndex();
 
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
@@ -390,6 +386,11 @@
         indexer.close();
     }
 
+    /**
+     * Test delete of document from the artifact index.
+     *
+     * @throws Exception
+     */
     public void testDeleteArtifactDocument()
         throws Exception
     {

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java?rev=372138&r1=372137&r2=372138&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 Tue Jan 24 23:04:13 2006
@@ -95,6 +95,8 @@
 
     /**
      * Create the test index.
+     * Indexing process: check if the object was already indexed [ checkIfIndexed(Object) ], open the index [ open() ],
+     * index the object [ index(Object) ], optimize the index [ optimize() ] and close the index [ close() ].
      *
      * @throws Exception
      */
@@ -107,15 +109,23 @@
         RepositoryMetadata repoMetadata =
             getMetadata( "org.apache.maven", null, null, "maven-metadata.xml", GROUP_TYPE );
         indexer.index( repoMetadata );
+        indexer.optimize();
+        indexer.close();
 
         repoMetadata =
             getMetadata( "org.apache.maven", "maven-artifact", "2.0.1", "maven-metadata.xml", ARTIFACT_TYPE );
         indexer.index( repoMetadata );
+        indexer.optimize();
+        indexer.close();
 
         repoMetadata =
             getMetadata( "org.apache.maven", "maven-artifact", "2.0.1", "maven-metadata.xml", SNAPSHOT_TYPE );
         indexer.index( repoMetadata );
+        indexer.optimize();
+        indexer.close();
 
+        repoMetadata = getMetadata( "org.apache.maven", null, null, "maven-metadata.xml", GROUP_TYPE );
+        indexer.index( repoMetadata );
         indexer.optimize();
         indexer.close();
     }
@@ -201,7 +211,7 @@
     public void testExceptions()
         throws Exception
     {
-        //test when the object passed in the index(..) method is not a RepositoryMetadat instance
+        //test when the object passed in the index(..) method is not a RepositoryMetadata instance
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
         indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
         try
@@ -209,37 +219,22 @@
             Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
             indexer.index( artifact );
             fail( "Must throw exception when the passed object is not a RepositoryMetadata object." );
+            indexer.optimize();
+            indexer.close();
         }
         catch ( Exception e )
         {
+            //expected
         }
-        indexer.optimize();
-        indexer.close();
-
-        //test when the plugin prefix is blank
-        factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
-        indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
-        try
-        {
-            RepositoryMetadata repoMetadata = getMetadata( "test", null, null, "maven-metadata.xml", GROUP_TYPE );
-            indexer.index( repoMetadata );
-        }
-        catch ( Exception e )
-        {
-        }
-        indexer.optimize();
-        indexer.close();
 
-        //test when the index is closed
         try
         {
-            RepositoryMetadata repoMetadata =
-                getMetadata( "org.apache.maven", null, null, "maven-metadata.xml", GROUP_TYPE );
-            indexer.index( repoMetadata );
-            fail( "Must throw exception when a metadata is added to the index while the indexer is still closed." );
+            indexer.isIndexed( new Object() );
+            fail( "Must throw exception when the passed object is not of type metadata." );
         }
         catch ( Exception e )
         {
+            //expected
         }
     }
 

Modified: maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java?rev=372138&r1=372137&r2=372138&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 Tue Jan 24 23:04:13 2006
@@ -74,11 +74,13 @@
         throws Exception
     {
         RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+        Model pom = getPom( "test", "test-artifactId", "1.0" );
 
         try
         {
             String notIndexDir = new File( "pom.xml" ).getAbsolutePath();
-            factory.createPomRepositoryIndex( notIndexDir, repository );
+            PomRepositoryIndex indexer = factory.createPomRepositoryIndex( notIndexDir, repository );
+            indexer.indexPom( pom );
             fail( "Must throw exception on non-directory index directory" );
         }
         catch ( RepositoryIndexException e )
@@ -89,7 +91,8 @@
         try
         {
             String notIndexDir = new File( "" ).getAbsolutePath();
-            factory.createPomRepositoryIndex( notIndexDir, repository );
+            PomRepositoryIndex indexer = factory.createPomRepositoryIndex( notIndexDir, repository );
+            indexer.indexPom( pom );
             fail( "Must throw an exception on a non-index directory" );
         }
         catch ( RepositoryIndexException e )
@@ -97,34 +100,16 @@
             // expected
         }
 
-        Model pom = getPom( "test", "test-artifactId", "1.0" );
-
         PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
-        indexer.close();
-
-        try
-        {
-            indexer.indexPom( pom );
-            fail( "Must throw exception on add index with closed index." );
-        }
-        catch ( RepositoryIndexException e )
-        {
-            // expected
-        }
-
         try
         {
-            indexer.optimize();
-            fail( "Must throw exception on optimize index with closed index." );
+            indexer.isIndexed( new Object() );
+            fail( "Must throw exception when the passed object is not of type model." );
         }
-        catch ( RepositoryIndexException e )
+        catch ( Exception e )
         {
-            // expected
+            //expected
         }
-
-        indexer = factory.createPomRepositoryIndex( indexPath, repository );
-
-        indexer.close();
     }
 
     /**
@@ -428,6 +413,8 @@
 
     /**
      * Create an index that will be used for testing.
+     * Indexing process: check if the object was already indexed [ checkIfIndexed(Object) ], open the index [ open() ],
+     * index the object [ index(Object) ], optimize the index [ optimize() ] and close the index [ close() ].
      *
      * @throws Exception
      */
@@ -439,13 +426,21 @@
 
         Model pom = getPom( "org.apache.maven", "maven-artifact", "2.0.1" );
         indexer.indexPom( pom );
+        indexer.optimize();
+        indexer.close();
 
         pom = getPom( "org.apache.maven", "maven-model", "2.0" );
         indexer.indexPom( pom );
+        indexer.optimize();
+        indexer.close();
 
         pom = getPom( "test", "test-artifactId", "1.0" );
         indexer.indexPom( pom );
+        indexer.optimize();
+        indexer.close();
 
+        pom = getPom( "test", "test-artifactId", "1.0" );
+        indexer.indexPom( pom );
         indexer.optimize();
         indexer.close();
     }