Author: brett
Date: Thu Dec 24 02:40:57 2009
New Revision: 893686
URL: http://svn.apache.org/viewvc?rev=893686&view=rev
Log:
[MRM-1283] propagate errors occurring during resolution
Added:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolutionException.java
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java
Thu Dec 24 02:40:57 2009
@@ -31,6 +31,7 @@
import org.apache.archiva.metadata.model.ProjectMetadata;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.storage.StorageMetadataResolver;
import org.apache.maven.archiva.common.utils.VersionUtil;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -162,9 +163,16 @@
String projectVersion = VersionUtil.getBaseVersion(
artifact.getVersion() );
// TODO: maybe not too efficient since it may have already been read
and stored for this artifact
- ProjectVersionMetadata versionMetadata =
- storageResolver.getProjectVersion( repository.getId(),
artifact.getGroupId(), artifact.getArtifactId(),
+ ProjectVersionMetadata versionMetadata = null;
+ try
+ {
+ versionMetadata = storageResolver.getProjectVersion(
repository.getId(), artifact.getGroupId(), artifact.getArtifactId(),
projectVersion );
+ }
+ catch ( MetadataResolutionException e )
+ {
+ log.warn( "Error occurred resolving POM for artifact: " + path +
"; message: " + e.getMessage() );
+ }
boolean createVersionMetadata = false;
if ( versionMetadata == null )
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
Thu Dec 24 02:40:57 2009
@@ -27,6 +27,7 @@
import java.util.Set;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.MetadataResolver;
import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
import org.apache.commons.collections.CollectionUtils;
@@ -223,7 +224,16 @@
{
if ( versionMetadata == null )
{
- versionMetadata = metadataResolver.getProjectVersion(
repoId, groupId, artifactId, version );
+ try
+ {
+ versionMetadata = metadataResolver.getProjectVersion(
repoId, groupId, artifactId, version );
+ }
+ catch ( MetadataResolutionException e )
+ {
+ log.error(
+ "Skipping invalid metadata while compiling shared
model for " + groupId + ":" + artifactId +
+ " in repo " + repoId + ": " + e.getMessage() );
+ }
}
}
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
Thu Dec 24 02:40:57 2009
@@ -34,6 +34,7 @@
import org.apache.archiva.metadata.model.MailingList;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.model.ProjectVersionReference;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.MetadataResolver;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArtifactReference;
@@ -107,13 +108,21 @@
List<String> repos = getObservableRepos();
// In the future, this should be replaced by the repository grouping
mechanism, so that we are only making
// simple resource requests here and letting the resolver take care of
it
+ String errorMsg = null;
for ( String repoId : repos )
{
if ( versionMetadata == null )
{
// we don't want the implementation being that intelligent -
so another resolver to do the
// "just-in-time" nature of picking up the metadata (if
appropriate for the repository type) is used
- versionMetadata = metadataResolver.getProjectVersion( repoId,
groupId, artifactId, version );
+ try
+ {
+ versionMetadata = metadataResolver.getProjectVersion(
repoId, groupId, artifactId, version );
+ }
+ catch ( MetadataResolutionException e )
+ {
+ errorMsg = e.getMessage();
+ }
if ( versionMetadata != null )
{
repositoryId = repoId;
@@ -149,7 +158,7 @@
if ( versionMetadata == null )
{
- addActionError( "Artifact not found" );
+ addActionError( errorMsg != null ? errorMsg : "Artifact not found"
);
return ERROR;
}
model = versionMetadata;
Modified:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
Thu Dec 24 02:40:57 2009
@@ -62,6 +62,7 @@
public ProjectVersionMetadata getProjectVersion( String repoId, String
namespace, String projectId,
String projectVersion )
+ throws MetadataResolutionException
{
ProjectVersionMetadata metadata =
metadataRepository.getProjectVersion( repoId, namespace,
projectId, projectVersion );
@@ -198,11 +199,19 @@
}
for ( String projectVersion : storageProjectVersions )
{
- ProjectVersionMetadata versionMetadata =
- storageResolver.getProjectVersion( repoId, namespace,
projectId, projectVersion );
- if ( versionMetadata != null )
+ try
{
- metadataRepository.updateProjectVersion( repoId,
namespace, projectId, versionMetadata );
+ ProjectVersionMetadata versionMetadata =
+ storageResolver.getProjectVersion( repoId, namespace,
projectId, projectVersion );
+ if ( versionMetadata != null )
+ {
+ metadataRepository.updateProjectVersion( repoId,
namespace, projectId, versionMetadata );
+ }
+ }
+ catch ( MetadataResolutionException e )
+ {
+ log.warn( "Not update project in metadata repository due
to an error resolving it from storage: " +
+ e.getMessage() );
}
}
projectVersions = new ArrayList<String>( projectVersions );
Added:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolutionException.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolutionException.java?rev=893686&view=auto
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolutionException.java
(added)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolutionException.java
Thu Dec 24 02:40:57 2009
@@ -0,0 +1,29 @@
+package org.apache.archiva.metadata.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public class MetadataResolutionException
+ extends Exception
+{
+ public MetadataResolutionException( String message )
+ {
+ super( message );
+ }
+}
Modified:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
Thu Dec 24 02:40:57 2009
@@ -31,7 +31,8 @@
ProjectMetadata getProject( String repoId, String namespace, String
projectId );
ProjectVersionMetadata getProjectVersion( String repoId, String namespace,
String projectId,
- String projectVersion );
+ String projectVersion )
+ throws MetadataResolutionException;
Collection<String> getArtifactVersions( String repoId, String namespace,
String projectId, String projectVersion );
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
Thu Dec 24 02:40:57 2009
@@ -38,6 +38,7 @@
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.model.ProjectVersionReference;
import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.filter.AllFilter;
import org.apache.archiva.metadata.repository.filter.Filter;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
@@ -102,6 +103,7 @@
public ProjectVersionMetadata getProjectVersion( String repoId, String
namespace, String projectId,
String projectVersion )
+ throws MetadataResolutionException
{
ManagedRepositoryConfiguration repositoryConfiguration =
archivaConfiguration.getConfiguration().findManagedRepositoryById(
repoId );
@@ -163,8 +165,7 @@
addProblemReport( repoId, namespace, projectId, projectVersion,
"invalid-pom",
"The artifact's POM file '" + file + "' was
invalid: " + e.getMessage() );
- // metadata could not be resolved
- return null;
+ throw new MetadataResolutionException( e.getMessage() );
}
// Check if the POM is in the correct location
@@ -187,10 +188,10 @@
message.append( "\nIncorrect version: " ).append(
model.getVersion() );
}
- addProblemReport( repoId, namespace, projectId, projectVersion,
"mislocated-pom", message.toString() );
+ String msg = message.toString();
+ addProblemReport( repoId, namespace, projectId, projectVersion,
"mislocated-pom", msg );
- // metadata could not be resolved
- return null;
+ throw new MetadataResolutionException( msg );
}
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java?rev=893686&r1=893685&r2=893686&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
Thu Dec 24 02:40:57 2009
@@ -31,6 +31,7 @@
import org.apache.archiva.metadata.model.MailingList;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.filter.ExcludesFilter;
import org.apache.archiva.metadata.repository.storage.StorageMetadataResolver;
import org.apache.archiva.reports.RepositoryProblemFacet;
@@ -77,6 +78,7 @@
}
public void testGetProjectVersionMetadata()
+ throws Exception
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "org.apache.archiva",
"archiva-common", "1.2.1" );
@@ -147,6 +149,7 @@
}
public void testGetProjectVersionMetadataForTimestampedSnapshot()
+ throws Exception
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "org.apache", "apache",
"5-SNAPSHOT" );
@@ -183,6 +186,7 @@
}
public void
testGetProjectVersionMetadataForTimestampedSnapshotMissingMetadata()
+ throws Exception
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "com.example.test",
"missing-metadata", "1.0-SNAPSHOT" );
@@ -190,6 +194,7 @@
}
public void
testGetProjectVersionMetadataForTimestampedSnapshotMalformedMetadata()
+ throws Exception
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "com.example.test",
"malformed-metadata", "1.0-SNAPSHOT" );
@@ -197,6 +202,7 @@
}
public void
testGetProjectVersionMetadataForTimestampedSnapshotIncompleteMetadata()
+ throws Exception
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "com.example.test",
"incomplete-metadata", "1.0-SNAPSHOT" );
@@ -204,36 +210,47 @@
}
public void testGetProjectVersionMetadataForInvalidPom()
+ throws Exception
{
assertTrue( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );
- ProjectVersionMetadata metadata =
+ try
+ {
resolver.getProjectVersion( TEST_REPO_ID, "com.example.test",
"invalid-pom", "1.0" );
- assertNull( metadata );
-
- assertFalse( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );
- RepositoryProblemFacet facet =
- (RepositoryProblemFacet) metadataRepository.getMetadataFacet(
TEST_REPO_ID, RepositoryProblemFacet.FACET_ID,
-
"com.example.test/invalid-pom/1.0" );
- assertEquals( "invalid-pom", facet.getProblem() );
+ fail( "Should have received an exception due to invalid POM" );
+ }
+ catch ( MetadataResolutionException e )
+ {
+ assertFalse( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );
+ RepositoryProblemFacet facet =
+ (RepositoryProblemFacet) metadataRepository.getMetadataFacet(
TEST_REPO_ID, RepositoryProblemFacet.FACET_ID,
+
"com.example.test/invalid-pom/1.0" );
+ assertEquals( "invalid-pom", facet.getProblem() );
+ }
}
public void testGetProjectVersionMetadataForMislocatedPom()
+ throws Exception
{
assertTrue( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );
- ProjectVersionMetadata metadata =
+ try
+ {
resolver.getProjectVersion( TEST_REPO_ID, "com.example.test",
"mislocated-pom", "1.0" );
- assertNull( metadata );
-
- assertFalse( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );
- RepositoryProblemFacet facet =
- (RepositoryProblemFacet) metadataRepository.getMetadataFacet(
TEST_REPO_ID, RepositoryProblemFacet.FACET_ID,
-
"com.example.test/mislocated-pom/1.0" );
- assertEquals( "mislocated-pom", facet.getProblem() );
+ fail( "Should have received an exception due to mislocated POM" );
+ }
+ catch ( MetadataResolutionException e )
+ {
+ assertFalse( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );
+ RepositoryProblemFacet facet =
+ (RepositoryProblemFacet) metadataRepository.getMetadataFacet(
TEST_REPO_ID, RepositoryProblemFacet.FACET_ID,
+
"com.example.test/mislocated-pom/1.0" );
+ assertEquals( "mislocated-pom", facet.getProblem() );
+ }
}
public void testGetProjectVersionMetadataForMissingPom()
+ throws Exception
{
assertTrue( metadataRepository.getMetadataFacets( TEST_REPO_ID,
RepositoryProblemFacet.FACET_ID ).isEmpty() );