mirror of https://github.com/apache/archiva.git
[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:
parent
cb314808e2
commit
b063f785e0
|
@ -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 );
|
||||||
|
|
|
@ -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" );
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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." );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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." );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue