mirror of https://github.com/apache/archiva.git
PR: MRM-55
Submitted by: Maria Odea Ching Checked the index for a duplicate and delete it if one exists git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@372138 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1e14d74abc
commit
49265d7791
|
@ -41,28 +41,42 @@ public abstract class AbstractRepositoryIndex
|
||||||
|
|
||||||
protected ArtifactRepository repository;
|
protected ArtifactRepository repository;
|
||||||
|
|
||||||
|
protected boolean indexExists;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor
|
* Class constructor
|
||||||
*
|
*
|
||||||
* @param indexPath
|
* @param indexPath
|
||||||
* @param repository
|
* @param repository
|
||||||
* @param indexFields
|
|
||||||
* @throws RepositoryIndexException
|
* @throws RepositoryIndexException
|
||||||
*/
|
*/
|
||||||
protected AbstractRepositoryIndex( String indexPath, ArtifactRepository repository, String[] indexFields )
|
protected AbstractRepositoryIndex( String indexPath, ArtifactRepository repository )
|
||||||
throws RepositoryIndexException
|
throws RepositoryIndexException
|
||||||
{
|
{
|
||||||
this.repository = repository;
|
this.repository = repository;
|
||||||
this.indexPath = indexPath;
|
this.indexPath = indexPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void open()
|
||||||
|
throws RepositoryIndexException
|
||||||
|
{
|
||||||
try
|
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 @@ public abstract class AbstractRepositoryIndex
|
||||||
* @param indexFields
|
* @param indexFields
|
||||||
* @throws RepositoryIndexException if the given indexPath is not valid for this type of RepositoryIndex
|
* @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
|
throws RepositoryIndexException, IOException
|
||||||
{
|
{
|
||||||
File indexDir = new File( indexPath );
|
IndexReader indexReader = IndexReader.open( indexPath );
|
||||||
if ( IndexReader.indexExists( indexDir ) )
|
try
|
||||||
{
|
{
|
||||||
IndexReader indexReader = IndexReader.open( indexPath );
|
if ( indexReader.numDocs() > 0 )
|
||||||
try
|
|
||||||
{
|
{
|
||||||
if ( indexReader.numDocs() > 0 )
|
Collection fields = indexReader.getFieldNames();
|
||||||
|
for ( int idx = 0; idx < indexFields.length; idx++ )
|
||||||
{
|
{
|
||||||
Collection fields = indexReader.getFieldNames();
|
if ( !fields.contains( indexFields[idx] ) )
|
||||||
for ( int idx = 0; idx < indexFields.length; 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() )
|
finally
|
||||||
{
|
{
|
||||||
indexWriter = new IndexWriter( indexPath, getAnalyzer(), true );
|
indexReader.close();
|
||||||
}
|
}
|
||||||
else if ( indexDir.isDirectory() )
|
|
||||||
{
|
|
||||||
throw new RepositoryIndexException( indexPath + " is not a valid index directory." );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new RepositoryIndexException( indexPath + " is not a directory." );
|
|
||||||
}
|
|
||||||
|
|
||||||
indexOpen = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -198,9 +194,14 @@ public abstract class AbstractRepositoryIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @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
|
throws RepositoryIndexException, IOException
|
||||||
{
|
{
|
||||||
IndexReader indexReader = null;
|
IndexReader indexReader = null;
|
||||||
|
@ -218,4 +219,44 @@ public abstract class AbstractRepositoryIndex
|
||||||
indexReader.close();
|
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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,9 @@ import org.apache.maven.repository.digest.Digester;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
|
import java.util.List;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipException;
|
import java.util.zip.ZipException;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
|
@ -70,6 +72,8 @@ public class ArtifactRepositoryIndex
|
||||||
|
|
||||||
protected static final String ARTIFACT_TYPE = "ARTIFACT";
|
protected static final String ARTIFACT_TYPE = "ARTIFACT";
|
||||||
|
|
||||||
|
private static final List KEYWORD_FIELDS = Arrays.asList( new String[]{FLD_ID} );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor
|
* Class constructor
|
||||||
*
|
*
|
||||||
|
@ -81,7 +85,7 @@ public class ArtifactRepositoryIndex
|
||||||
public ArtifactRepositoryIndex( String indexPath, ArtifactRepository repository, Digester digester )
|
public ArtifactRepositoryIndex( String indexPath, ArtifactRepository repository, Digester digester )
|
||||||
throws RepositoryIndexException
|
throws RepositoryIndexException
|
||||||
{
|
{
|
||||||
super( indexPath, repository, FIELDS );
|
super( indexPath, repository );
|
||||||
this.digester = digester;
|
this.digester = digester;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,6 +102,28 @@ public class ArtifactRepositoryIndex
|
||||||
return analyzer;
|
return analyzer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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
|
* Method to index a given artifact
|
||||||
*
|
*
|
||||||
|
@ -107,11 +133,6 @@ public class ArtifactRepositoryIndex
|
||||||
public void indexArtifact( Artifact artifact )
|
public void indexArtifact( Artifact artifact )
|
||||||
throws RepositoryIndexException
|
throws RepositoryIndexException
|
||||||
{
|
{
|
||||||
if ( !isOpen() )
|
|
||||||
{
|
|
||||||
throw new RepositoryIndexException( "Unable to add artifact index on a closed index" );
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuffer classes = new StringBuffer();
|
StringBuffer classes = new StringBuffer();
|
||||||
StringBuffer packages = new StringBuffer();
|
StringBuffer packages = new StringBuffer();
|
||||||
StringBuffer files = new StringBuffer();
|
StringBuffer files = new StringBuffer();
|
||||||
|
@ -178,6 +199,11 @@ public class ArtifactRepositoryIndex
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
isIndexed( artifact );
|
||||||
|
if ( !isOpen() )
|
||||||
|
{
|
||||||
|
open();
|
||||||
|
}
|
||||||
getIndexWriter().addDocument( doc );
|
getIndexWriter().addDocument( doc );
|
||||||
}
|
}
|
||||||
catch ( IOException e )
|
catch ( IOException e )
|
||||||
|
@ -191,7 +217,7 @@ public class ArtifactRepositoryIndex
|
||||||
*/
|
*/
|
||||||
public boolean isKeywordField( String field )
|
public boolean isKeywordField( String field )
|
||||||
{
|
{
|
||||||
return false;
|
return KEYWORD_FIELDS.contains( field );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class MetadataRepositoryIndex
|
||||||
public MetadataRepositoryIndex( String indexPath, ArtifactRepository repository )
|
public MetadataRepositoryIndex( String indexPath, ArtifactRepository repository )
|
||||||
throws RepositoryIndexException
|
throws RepositoryIndexException
|
||||||
{
|
{
|
||||||
super( indexPath, repository, FIELDS );
|
super( indexPath, repository );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,11 +115,6 @@ public class MetadataRepositoryIndex
|
||||||
private void indexMetadata( RepositoryMetadata repoMetadata )
|
private void indexMetadata( RepositoryMetadata repoMetadata )
|
||||||
throws RepositoryIndexException
|
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 lastUpdated from Versioning (specified in Metadata object)
|
||||||
//get pluginPrefixes from Plugin (spcified in Metadata object) -----> concatenate/append???
|
//get pluginPrefixes from Plugin (spcified in Metadata object) -----> concatenate/append???
|
||||||
//get the metadatapath: check where metadata is located, then concatenate the groupId,
|
//get the metadatapath: check where metadata is located, then concatenate the groupId,
|
||||||
|
@ -177,6 +172,11 @@ public class MetadataRepositoryIndex
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
isIndexed( repoMetadata );
|
||||||
|
if ( !isOpen() )
|
||||||
|
{
|
||||||
|
open();
|
||||||
|
}
|
||||||
getIndexWriter().addDocument( doc );
|
getIndexWriter().addDocument( doc );
|
||||||
}
|
}
|
||||||
catch ( IOException e )
|
catch ( IOException e )
|
||||||
|
@ -189,4 +189,26 @@ public class MetadataRepositoryIndex
|
||||||
{
|
{
|
||||||
return false;
|
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." );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class PomRepositoryIndex
|
||||||
ArtifactFactory artifactFactory )
|
ArtifactFactory artifactFactory )
|
||||||
throws RepositoryIndexException
|
throws RepositoryIndexException
|
||||||
{
|
{
|
||||||
super( indexPath, repository, FIELDS );
|
super( indexPath, repository );
|
||||||
this.digester = digester;
|
this.digester = digester;
|
||||||
this.artifactFactory = artifactFactory;
|
this.artifactFactory = artifactFactory;
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,29 @@ public class PomRepositoryIndex
|
||||||
return analyzer;
|
return analyzer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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
|
* Method to create the index fields for a Model object into the index
|
||||||
*
|
*
|
||||||
|
@ -125,11 +148,6 @@ public class PomRepositoryIndex
|
||||||
public void indexPom( Model pom )
|
public void indexPom( Model pom )
|
||||||
throws RepositoryIndexException
|
throws RepositoryIndexException
|
||||||
{
|
{
|
||||||
if ( !isOpen() )
|
|
||||||
{
|
|
||||||
throw new RepositoryIndexException( "Unable to add pom index on a closed index" );
|
|
||||||
}
|
|
||||||
|
|
||||||
Document doc = new Document();
|
Document doc = new Document();
|
||||||
doc.add( Field.Keyword( FLD_ID, POM_TYPE + pom.getId() ) );
|
doc.add( Field.Keyword( FLD_ID, POM_TYPE + pom.getId() ) );
|
||||||
doc.add( Field.Text( FLD_GROUPID, pom.getGroupId() ) );
|
doc.add( Field.Text( FLD_GROUPID, pom.getGroupId() ) );
|
||||||
|
@ -177,6 +195,11 @@ public class PomRepositoryIndex
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
isIndexed( pom );
|
||||||
|
if ( !isOpen() )
|
||||||
|
{
|
||||||
|
open();
|
||||||
|
}
|
||||||
getIndexWriter().addDocument( doc );
|
getIndexWriter().addDocument( doc );
|
||||||
}
|
}
|
||||||
catch ( IOException e )
|
catch ( IOException e )
|
||||||
|
|
|
@ -69,11 +69,14 @@ public class ArtifactRepositoryIndexingTest
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
||||||
|
Artifact artifact = getArtifact( "test", "test-artifactId", "1.0" );
|
||||||
|
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String notIndexDir = new File( "pom.xml" ).getAbsolutePath();
|
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" );
|
fail( "Must throw exception on non-directory index directory" );
|
||||||
}
|
}
|
||||||
catch ( RepositoryIndexException e )
|
catch ( RepositoryIndexException e )
|
||||||
|
@ -84,7 +87,8 @@ public class ArtifactRepositoryIndexingTest
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String notIndexDir = new File( "" ).getAbsolutePath();
|
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" );
|
fail( "Must throw an exception on a non-index directory" );
|
||||||
}
|
}
|
||||||
catch ( RepositoryIndexException e )
|
catch ( RepositoryIndexException e )
|
||||||
|
@ -92,43 +96,26 @@ public class ArtifactRepositoryIndexingTest
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
|
|
||||||
Artifact artifact = getArtifact( "test", "test-artifactId", "1.0" );
|
|
||||||
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
|
||||||
|
|
||||||
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
|
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
|
||||||
indexer.close();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
indexer.indexArtifact( artifact );
|
indexer.isIndexed( new Object() );
|
||||||
fail( "Must throw exception on add index with closed index." );
|
fail( "Must throw exception on object not of type artifact." );
|
||||||
}
|
}
|
||||||
catch ( RepositoryIndexException e )
|
catch ( RepositoryIndexException e )
|
||||||
{
|
{
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
indexer.optimize();
|
|
||||||
fail( "Must throw exception on optimize index with closed index." );
|
|
||||||
}
|
|
||||||
catch ( RepositoryIndexException e )
|
|
||||||
{
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
|
|
||||||
|
|
||||||
indexer.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an index that will be used for testing.
|
* 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
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public void createTestIndex()
|
private void createTestIndex()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
||||||
|
@ -137,17 +124,27 @@ public class ArtifactRepositoryIndexingTest
|
||||||
Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
|
Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
|
||||||
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
||||||
indexer.indexArtifact( artifact );
|
indexer.indexArtifact( artifact );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
artifact = getArtifact( "org.apache.maven", "maven-model", "2.0" );
|
artifact = getArtifact( "org.apache.maven", "maven-model", "2.0" );
|
||||||
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
||||||
indexer.indexArtifact( artifact );
|
indexer.indexArtifact( artifact );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
artifact = getArtifact( "test", "test-artifactId", "1.0" );
|
artifact = getArtifact( "test", "test-artifactId", "1.0" );
|
||||||
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
|
||||||
indexer.indexArtifact( artifact );
|
indexer.indexArtifact( artifact );
|
||||||
|
|
||||||
indexer.optimize();
|
indexer.optimize();
|
||||||
indexer.close();
|
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 class ArtifactRepositoryIndexingTest
|
||||||
public void testSearchCompound()
|
public void testSearchCompound()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
createTestIndex();
|
createTestIndex();
|
||||||
|
|
||||||
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
||||||
|
@ -390,6 +386,11 @@ public class ArtifactRepositoryIndexingTest
|
||||||
indexer.close();
|
indexer.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test delete of document from the artifact index.
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
public void testDeleteArtifactDocument()
|
public void testDeleteArtifactDocument()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
|
|
@ -95,6 +95,8 @@ public class MetadataRepositoryIndexingTest
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the test index.
|
* 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
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
|
@ -107,15 +109,23 @@ public class MetadataRepositoryIndexingTest
|
||||||
RepositoryMetadata repoMetadata =
|
RepositoryMetadata repoMetadata =
|
||||||
getMetadata( "org.apache.maven", null, null, "maven-metadata.xml", GROUP_TYPE );
|
getMetadata( "org.apache.maven", null, null, "maven-metadata.xml", GROUP_TYPE );
|
||||||
indexer.index( repoMetadata );
|
indexer.index( repoMetadata );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
repoMetadata =
|
repoMetadata =
|
||||||
getMetadata( "org.apache.maven", "maven-artifact", "2.0.1", "maven-metadata.xml", ARTIFACT_TYPE );
|
getMetadata( "org.apache.maven", "maven-artifact", "2.0.1", "maven-metadata.xml", ARTIFACT_TYPE );
|
||||||
indexer.index( repoMetadata );
|
indexer.index( repoMetadata );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
repoMetadata =
|
repoMetadata =
|
||||||
getMetadata( "org.apache.maven", "maven-artifact", "2.0.1", "maven-metadata.xml", SNAPSHOT_TYPE );
|
getMetadata( "org.apache.maven", "maven-artifact", "2.0.1", "maven-metadata.xml", SNAPSHOT_TYPE );
|
||||||
indexer.index( repoMetadata );
|
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.optimize();
|
||||||
indexer.close();
|
indexer.close();
|
||||||
}
|
}
|
||||||
|
@ -201,7 +211,7 @@ public class MetadataRepositoryIndexingTest
|
||||||
public void testExceptions()
|
public void testExceptions()
|
||||||
throws Exception
|
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 );
|
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
||||||
indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
|
indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
|
||||||
try
|
try
|
||||||
|
@ -209,37 +219,22 @@ public class MetadataRepositoryIndexingTest
|
||||||
Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
|
Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
|
||||||
indexer.index( artifact );
|
indexer.index( artifact );
|
||||||
fail( "Must throw exception when the passed object is not a RepositoryMetadata object." );
|
fail( "Must throw exception when the passed object is not a RepositoryMetadata object." );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
}
|
}
|
||||||
catch ( Exception e )
|
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
|
try
|
||||||
{
|
{
|
||||||
RepositoryMetadata repoMetadata = getMetadata( "test", null, null, "maven-metadata.xml", GROUP_TYPE );
|
indexer.isIndexed( new Object() );
|
||||||
indexer.index( repoMetadata );
|
fail( "Must throw exception when the passed object is not of type metadata." );
|
||||||
}
|
|
||||||
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." );
|
|
||||||
}
|
}
|
||||||
catch ( Exception e )
|
catch ( Exception e )
|
||||||
{
|
{
|
||||||
|
//expected
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,11 +74,13 @@ public class PomRepositoryIndexingTest
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
|
||||||
|
Model pom = getPom( "test", "test-artifactId", "1.0" );
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String notIndexDir = new File( "pom.xml" ).getAbsolutePath();
|
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" );
|
fail( "Must throw exception on non-directory index directory" );
|
||||||
}
|
}
|
||||||
catch ( RepositoryIndexException e )
|
catch ( RepositoryIndexException e )
|
||||||
|
@ -89,7 +91,8 @@ public class PomRepositoryIndexingTest
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String notIndexDir = new File( "" ).getAbsolutePath();
|
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" );
|
fail( "Must throw an exception on a non-index directory" );
|
||||||
}
|
}
|
||||||
catch ( RepositoryIndexException e )
|
catch ( RepositoryIndexException e )
|
||||||
|
@ -97,34 +100,16 @@ public class PomRepositoryIndexingTest
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
|
|
||||||
Model pom = getPom( "test", "test-artifactId", "1.0" );
|
|
||||||
|
|
||||||
PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
|
PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
|
||||||
indexer.close();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
indexer.indexPom( pom );
|
indexer.isIndexed( new Object() );
|
||||||
fail( "Must throw exception on add index with closed index." );
|
fail( "Must throw exception when the passed object is not of type model." );
|
||||||
}
|
}
|
||||||
catch ( RepositoryIndexException e )
|
catch ( Exception e )
|
||||||
{
|
{
|
||||||
// expected
|
//expected
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
indexer.optimize();
|
|
||||||
fail( "Must throw exception on optimize index with closed index." );
|
|
||||||
}
|
|
||||||
catch ( RepositoryIndexException e )
|
|
||||||
{
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
indexer = factory.createPomRepositoryIndex( indexPath, repository );
|
|
||||||
|
|
||||||
indexer.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -428,6 +413,8 @@ public class PomRepositoryIndexingTest
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an index that will be used for testing.
|
* 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
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
|
@ -439,13 +426,21 @@ public class PomRepositoryIndexingTest
|
||||||
|
|
||||||
Model pom = getPom( "org.apache.maven", "maven-artifact", "2.0.1" );
|
Model pom = getPom( "org.apache.maven", "maven-artifact", "2.0.1" );
|
||||||
indexer.indexPom( pom );
|
indexer.indexPom( pom );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
pom = getPom( "org.apache.maven", "maven-model", "2.0" );
|
pom = getPom( "org.apache.maven", "maven-model", "2.0" );
|
||||||
indexer.indexPom( pom );
|
indexer.indexPom( pom );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
pom = getPom( "test", "test-artifactId", "1.0" );
|
pom = getPom( "test", "test-artifactId", "1.0" );
|
||||||
indexer.indexPom( pom );
|
indexer.indexPom( pom );
|
||||||
|
indexer.optimize();
|
||||||
|
indexer.close();
|
||||||
|
|
||||||
|
pom = getPom( "test", "test-artifactId", "1.0" );
|
||||||
|
indexer.indexPom( pom );
|
||||||
indexer.optimize();
|
indexer.optimize();
|
||||||
indexer.close();
|
indexer.close();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue