You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2009/12/24 03:40:57 UTC
svn commit: r893686 - in /archiva/branches/MRM-1025/archiva-modules:
archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/
archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/act...
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() );