[MRM-161] clean up report results

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@441391 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2006-09-08 05:58:25 +00:00
parent cb314808e2
commit b063f785e0
7 changed files with 108 additions and 54 deletions

View File

@ -45,12 +45,14 @@ public class DependencyArtifactReportProcessor
*/ */
private RepositoryQueryLayerFactory layerFactory; private RepositoryQueryLayerFactory layerFactory;
private static final String POM = "pom";
public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter ) public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{ {
RepositoryQueryLayer queryLayer = layerFactory.createRepositoryQueryLayer( artifact.getRepository() ); RepositoryQueryLayer queryLayer = layerFactory.createRepositoryQueryLayer( artifact.getRepository() );
processArtifact( artifact, reporter, queryLayer ); processArtifact( artifact, reporter, queryLayer );
if ( model != null ) if ( model != null && POM.equals( artifact.getType() ) )
{ {
List dependencies = model.getDependencies(); List dependencies = model.getDependencies();
processDependencies( dependencies, reporter, queryLayer, artifact ); processDependencies( dependencies, reporter, queryLayer, artifact );

View File

@ -62,55 +62,58 @@ public class DuplicateArtifactFileReportProcessor
{ {
ArtifactRepository repository = artifact.getRepository(); ArtifactRepository repository = artifact.getRepository();
// TODO! always null currently, need to configure this properly // TODO! always null currently, need to configure this properly
if ( artifact.getFile() != null && indexDirectory != null ) if ( indexDirectory != null )
{ {
RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) ); if ( artifact.getFile() != null )
{
RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) );
String checksum = null; String checksum = null;
try
{
checksum = digester.calc( artifact.getFile() );
}
catch ( DigesterException e )
{
reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e );
}
if ( checksum != null )
{
try try
{ {
List results = index.search( new LuceneQuery( checksum = digester.calc( artifact.getFile() );
new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) ); }
catch ( DigesterException e )
{
reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e );
}
if ( !results.isEmpty() ) if ( checksum != null )
{
try
{ {
for ( Iterator i = results.iterator(); i.hasNext(); ) List results = index.search( new LuceneQuery(
{ new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) );
StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next();
//make sure it is not the same artifact if ( !results.isEmpty() )
if ( !result.getFilename().equals( repository.pathOf( artifact ) ) ) {
for ( Iterator i = results.iterator(); i.hasNext(); )
{ {
//report only duplicates from the same groupId StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next();
String groupId = artifact.getGroupId();
if ( groupId.equals( result.getGroupId() ) ) //make sure it is not the same artifact
if ( !result.getFilename().equals( repository.pathOf( artifact ) ) )
{ {
reporter.addFailure( artifact, "Found duplicate for " + artifact.getId() ); //report only duplicates from the same groupId
String groupId = artifact.getGroupId();
if ( groupId.equals( result.getGroupId() ) )
{
reporter.addFailure( artifact, "Found duplicate for " + artifact.getId() );
}
} }
} }
} }
} }
} catch ( RepositoryIndexSearchException e )
catch ( RepositoryIndexSearchException e ) {
{ reporter.addWarning( artifact, "Failed to search in index" + e );
reporter.addWarning( artifact, "Failed to search in index" + e ); }
} }
} }
} else
else {
{ reporter.addWarning( artifact, "Artifact file is null" );
reporter.addWarning( artifact, "Artifact file is null" ); }
} }
} }
} }

View File

@ -32,6 +32,7 @@ import java.io.Reader;
/** /**
* This class validates well-formedness of pom xml file. * This class validates well-formedness of pom xml file.
* *
* @todo nice to have this a specific, tested report - however it is likely to double up with project building exceptions from IndexerTask. Resolve [!]
* @plexus.component role="org.apache.maven.archiva.reporting.ArtifactReportProcessor" role-hint="invalid-pom" * @plexus.component role="org.apache.maven.archiva.reporting.ArtifactReportProcessor" role-hint="invalid-pom"
*/ */
public class InvalidPomArtifactReportProcessor public class InvalidPomArtifactReportProcessor
@ -90,9 +91,5 @@ public class InvalidPomArtifactReportProcessor
} }
} }
} }
else
{
reporter.addWarning( artifact, "The artifact is not a pom xml file." );
}
} }
} }

View File

@ -60,6 +60,8 @@ public class LocationArtifactReportProcessor
*/ */
private MavenProjectBuilder projectBuilder; private MavenProjectBuilder projectBuilder;
private static final String POM = "pom";
/** /**
* Check whether the artifact is in its proper location. The location of the artifact * Check whether the artifact is in its proper location. The location of the artifact
* is validated first against the groupId, artifactId and versionId in the specified model * is validated first against the groupId, artifactId and versionId in the specified model
@ -83,16 +85,25 @@ public class LocationArtifactReportProcessor
if ( model != null ) if ( model != null )
{ {
//check if the artifact is located in its proper location based on the info // only check if it is a standalone POM, or an artifact other than a POM
//specified in the model object/pom // ie, don't check the location of the POM for another artifact matches that of the artifact
Artifact modelArtifact = artifactFactory.createBuildArtifact( model.getGroupId(), model.getArtifactId(), if ( !POM.equals( artifact.getType() ) || POM.equals( model.getPackaging() ) )
model.getVersion(), model.getPackaging() );
String modelPath = repository.pathOf( modelArtifact );
if ( !modelPath.equals( artifactPath ) )
{ {
reporter.addFailure( artifact, //check if the artifact is located in its proper location based on the info
"The artifact is out of place. It does not match the specified location in the repository pom." ); //specified in the model object/pom
Artifact modelArtifact = artifactFactory.createArtifactWithClassifier( model.getGroupId(),
model.getArtifactId(),
model.getVersion(),
artifact.getType(),
artifact.getClassifier() );
String modelPath = repository.pathOf( modelArtifact );
if ( !modelPath.equals( artifactPath ) )
{
reporter.addFailure( artifact,
"The artifact is out of place. It does not match the specified location in the repository pom: " +
modelPath );
}
} }
} }
@ -123,8 +134,7 @@ public class LocationArtifactReportProcessor
} }
else else
{ {
reporter.addFailure( artifact, throw new IllegalStateException( "Couldn't find artifact " + file );
"The artifact is out of place. It does not exist at the specified location in the repository pom." );
} }
} }

View File

@ -69,6 +69,6 @@ public class InvalidPomArtifactReportProcessorTest
artifactReportProcessor.processArtifact( artifact, null, reporter ); artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 0, reporter.getNumFailures() ); assertEquals( 0, reporter.getNumFailures() );
assertEquals( 1, reporter.getNumWarnings() ); assertEquals( 0, reporter.getNumWarnings() );
} }
} }

View File

@ -76,8 +76,41 @@ public class LocationArtifactReportProcessorTest
throws IOException, XmlPullParserException throws IOException, XmlPullParserException
{ {
Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1" ); Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1" );
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
artifactReportProcessor.processArtifact( artifact, null, reporter ); Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
}
/**
* Test the LocationArtifactReporter when the artifact is in the location specified in the
* file system pom, but the pom itself is passed in.
*/
public void testLocationArtifactReporterSuccessPom()
throws IOException, XmlPullParserException
{
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( pomArtifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
}
/**
* Test the LocationArtifactReporter when the artifact is in the location specified in the
* file system pom, with a classifier.
*/
public void testLocationArtifactReporterSuccessClassifier()
throws IOException, XmlPullParserException
{
Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "java-source" );
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() ); assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() ); assertEquals( 0, reporter.getNumWarnings() );
} }
@ -90,9 +123,18 @@ public class LocationArtifactReportProcessorTest
throws IOException, XmlPullParserException throws IOException, XmlPullParserException
{ {
Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2" ); Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2" );
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2", "pom" );
artifactReportProcessor.processArtifact( artifact, null, reporter ); try
assertEquals( 1, reporter.getNumFailures() ); {
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
fail( "Should not have passed the artifact" );
}
catch ( IllegalStateException e )
{
// correct!
}
} }
/** /**