diff options
author | Joakim Erdfelt <joakime@apache.org> | 2006-11-30 03:32:08 +0000 |
---|---|---|
committer | Joakim Erdfelt <joakime@apache.org> | 2006-11-30 03:32:08 +0000 |
commit | d839be48a730752be488170dce8861deb44e436e (patch) | |
tree | 523eb800bc49990836900f04e1f0262bed95fcc2 | |
parent | 372029fa281ae7c444dda4b5777aa6de61afe4a8 (diff) | |
download | archiva-d839be48a730752be488170dce8861deb44e436e.tar.gz archiva-d839be48a730752be488170dce8861deb44e436e.zip |
* Correcting LocationArtifactReportProcessor to not throw IllegalStateException as it halts the discovery and indexing.
* Catching InvalidArtifactRTException in DefaultReportExecutor to allow discovery and indexing to proceed to next artifact unhindered.
* Catching InvalidArtifactRTException in StandardArtifactIndexRecordFactory to allow discovery and indexeing to proceed to next artifact unhindered.
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@480817 13f79535-47bb-0310-9956-ffa450edef68
4 files changed, 23 insertions, 14 deletions
diff --git a/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/record/StandardArtifactIndexRecordFactory.java b/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/record/StandardArtifactIndexRecordFactory.java index 048143a23..711406e56 100644 --- a/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/record/StandardArtifactIndexRecordFactory.java +++ b/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/record/StandardArtifactIndexRecordFactory.java @@ -18,6 +18,7 @@ package org.apache.maven.archiva.indexer.record; import org.apache.maven.archiva.indexer.RepositoryIndexException; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.InvalidArtifactRTException; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.model.Dependency; @@ -251,8 +252,17 @@ public class StandardArtifactIndexRecordFactory { // TODO: this can create a -SNAPSHOT.pom when it didn't exist and a timestamped one did. This is harmless, but should be avoided // TODO: will this pollute with local repo metadata? - MavenProject project = projectBuilder.buildFromRepository( artifact, Collections.EMPTY_LIST, repository ); - return project.getModel(); + + try + { + MavenProject project = projectBuilder.buildFromRepository( artifact, Collections.EMPTY_LIST, repository ); + return project.getModel(); + } + catch ( InvalidArtifactRTException e ) + { + throw new ProjectBuildingException( artifact.getId(), "Unable to build project from invalid artifact [" + + artifact + "]", e ); + } } private void populateArchiveEntries( List files, StandardArtifactIndexRecord record, File artifactFile ) diff --git a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportExecutor.java b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportExecutor.java index 21a12f02b..81256c6fb 100644 --- a/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportExecutor.java +++ b/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportExecutor.java @@ -21,6 +21,7 @@ import org.apache.maven.archiva.discoverer.DiscovererException; import org.apache.maven.archiva.discoverer.MetadataDiscoverer; import org.apache.maven.archiva.discoverer.filter.AcceptAllMetadataFilter; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.InvalidArtifactRTException; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; @@ -116,6 +117,10 @@ public class DefaultReportExecutor model = project.getModel(); } + catch ( InvalidArtifactRTException e ) + { + reporter.addWarning( artifact, null, null, "Invalid artifact [" + artifact + "] : " + e ); + } catch ( ProjectBuildingException e ) { reporter.addWarning( artifact, null, null, "Error reading project model: " + e ); 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 be5f9fc5f..2b03592cb 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 @@ -113,7 +113,7 @@ public class LocationArtifactReportProcessor } } - //get the location of the artifact itself + // get the location of the artifact itself File file = new File( repository.getBasedir(), artifactPath ); if ( file.exists() ) @@ -140,7 +140,7 @@ public class LocationArtifactReportProcessor } else { - throw new IllegalStateException( "Couldn't find artifact " + file ); + addFailure( reporter, artifact, "missing-artifact", "The artifact file [" + file + "] cannot be found for metadata." ); } } 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 e00e447fc..3b6f6dfd9 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 @@ -157,16 +157,10 @@ public class LocationArtifactReportProcessorTest Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2" ); Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2", "pom" ); - try - { - Model model = readPom( repository.pathOf( pomArtifact ) ); - artifactReportProcessor.processArtifact( artifact, model, reportDatabase ); - fail( "Should not have passed the artifact" ); - } - catch ( IllegalStateException e ) - { - // correct! - } + Model model = readPom( repository.pathOf( pomArtifact ) ); + artifactReportProcessor.processArtifact( artifact, model, reportDatabase ); + + assertEquals( 1, reportDatabase.getNumFailures() ); } /** |