From b063f785e0f00a1c491fd70e7a60b49b47d51480 Mon Sep 17 00:00:00 2001 From: Brett Porter Date: Fri, 8 Sep 2006 05:58:25 +0000 Subject: [PATCH] [MRM-161] clean up report results git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@441391 13f79535-47bb-0310-9956-ffa450edef68 --- .../DependencyArtifactReportProcessor.java | 4 +- .../DuplicateArtifactFileReportProcessor.java | 69 +++++++++--------- .../InvalidPomArtifactReportProcessor.java | 5 +- .../LocationArtifactReportProcessor.java | 32 +++++--- ...InvalidPomArtifactReportProcessorTest.java | 2 +- .../LocationArtifactReportProcessorTest.java | 48 +++++++++++- .../artifactId-1.0-alpha-1-sources.jar | Bin 0 -> 45568 bytes 7 files changed, 107 insertions(+), 53 deletions(-) create mode 100644 archiva-reports-standard/src/test/repository/groupId/artifactId/1.0-alpha-1/artifactId-1.0-alpha-1-sources.jar diff --git a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java index 851bbd902..ba8e1e8f0 100644 --- a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java +++ b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java @@ -45,12 +45,14 @@ public class DependencyArtifactReportProcessor */ private RepositoryQueryLayerFactory layerFactory; + private static final String POM = "pom"; + public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter ) { RepositoryQueryLayer queryLayer = layerFactory.createRepositoryQueryLayer( artifact.getRepository() ); processArtifact( artifact, reporter, queryLayer ); - if ( model != null ) + if ( model != null && POM.equals( artifact.getType() ) ) { List dependencies = model.getDependencies(); processDependencies( dependencies, reporter, queryLayer, artifact ); diff --git a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java index 344586090..a5b116d62 100644 --- a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java +++ b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java @@ -62,55 +62,58 @@ public class DuplicateArtifactFileReportProcessor { ArtifactRepository repository = artifact.getRepository(); // 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 ) ); - - String checksum = null; - try - { - checksum = digester.calc( artifact.getFile() ); - } - catch ( DigesterException e ) + if ( artifact.getFile() != null ) { - reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e ); - } + RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) ); - if ( checksum != null ) - { + String checksum = null; try { - List results = index.search( new LuceneQuery( - new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) ); + checksum = digester.calc( artifact.getFile() ); + } + 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(); ) - { - StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next(); + List results = index.search( new LuceneQuery( + new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) ); - //make sure it is not the same artifact - if ( !result.getFilename().equals( repository.pathOf( artifact ) ) ) + if ( !results.isEmpty() ) + { + for ( Iterator i = results.iterator(); i.hasNext(); ) { - //report only duplicates from the same groupId - String groupId = artifact.getGroupId(); - if ( groupId.equals( result.getGroupId() ) ) + StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next(); + + //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 ) - { - reporter.addWarning( artifact, "Failed to search in index" + e ); + catch ( RepositoryIndexSearchException e ) + { + reporter.addWarning( artifact, "Failed to search in index" + e ); + } } } - } - else - { - reporter.addWarning( artifact, "Artifact file is null" ); + else + { + reporter.addWarning( artifact, "Artifact file is null" ); + } } } } diff --git a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java index 716b182f4..bad32f702 100644 --- a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java +++ b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java @@ -32,6 +32,7 @@ import java.io.Reader; /** * 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" */ public class InvalidPomArtifactReportProcessor @@ -90,9 +91,5 @@ public class InvalidPomArtifactReportProcessor } } } - else - { - reporter.addWarning( artifact, "The artifact is not a pom xml file." ); - } } } diff --git a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java index a7121138e..12e2d365a 100644 --- a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java +++ b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java @@ -60,6 +60,8 @@ public class LocationArtifactReportProcessor */ private MavenProjectBuilder projectBuilder; + private static final String POM = "pom"; + /** * 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 @@ -83,16 +85,25 @@ public class LocationArtifactReportProcessor if ( model != null ) { - //check if the artifact is located in its proper location based on the info - //specified in the model object/pom - Artifact modelArtifact = artifactFactory.createBuildArtifact( model.getGroupId(), model.getArtifactId(), - model.getVersion(), model.getPackaging() ); - - String modelPath = repository.pathOf( modelArtifact ); - if ( !modelPath.equals( artifactPath ) ) + // only check if it is a standalone POM, or an artifact other than a POM + // ie, don't check the location of the POM for another artifact matches that of the artifact + if ( !POM.equals( artifact.getType() ) || POM.equals( model.getPackaging() ) ) { - reporter.addFailure( artifact, - "The artifact is out of place. It does not match the specified location in the repository pom." ); + //check if the artifact is located in its proper location based on the info + //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 { - reporter.addFailure( artifact, - "The artifact is out of place. It does not exist at the specified location in the repository pom." ); + throw new IllegalStateException( "Couldn't find artifact " + file ); } } diff --git a/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessorTest.java b/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessorTest.java index 3351bc301..f9364ea47 100644 --- a/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessorTest.java +++ b/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessorTest.java @@ -69,6 +69,6 @@ public class InvalidPomArtifactReportProcessorTest artifactReportProcessor.processArtifact( artifact, null, reporter ); assertEquals( 0, reporter.getNumFailures() ); - assertEquals( 1, reporter.getNumWarnings() ); + assertEquals( 0, reporter.getNumWarnings() ); } } diff --git a/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessorTest.java b/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessorTest.java index 4d901b11d..bab3a12cf 100644 --- a/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessorTest.java +++ b/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessorTest.java @@ -76,8 +76,41 @@ public class LocationArtifactReportProcessorTest throws IOException, XmlPullParserException { 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.getNumWarnings() ); } @@ -90,9 +123,18 @@ public class LocationArtifactReportProcessorTest throws IOException, XmlPullParserException { Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2" ); + Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2", "pom" ); - artifactReportProcessor.processArtifact( artifact, null, reporter ); - assertEquals( 1, reporter.getNumFailures() ); + try + { + Model model = readPom( repository.pathOf( pomArtifact ) ); + artifactReportProcessor.processArtifact( artifact, model, reporter ); + fail( "Should not have passed the artifact" ); + } + catch ( IllegalStateException e ) + { + // correct! + } } /** diff --git a/archiva-reports-standard/src/test/repository/groupId/artifactId/1.0-alpha-1/artifactId-1.0-alpha-1-sources.jar b/archiva-reports-standard/src/test/repository/groupId/artifactId/1.0-alpha-1/artifactId-1.0-alpha-1-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..c2ea777c166ef02a078a9b92d2cead0124845d6f GIT binary patch literal 45568 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 literal 0 HcmV?d00001 -- 2.39.5