Author: brett
Date: Wed Nov 25 12:17:38 2009
New Revision: 884066
URL: http://svn.apache.org/viewvc?rev=884066&view=rev
Log:
[MRM-1282] improve exception handling
Added:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolverException.java
(with props)
Modified:
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-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=884066&r1=884065&r2=884066&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
Wed Nov 25 12:17:38 2009
@@ -26,6 +26,7 @@
import com.opensymphony.xwork2.Validateable;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.MetadataResolverException;
import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.database.ArchivaDatabaseException;
@@ -120,7 +121,15 @@
// 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 ( MetadataResolverException e )
+ {
+ addActionError( "Error occurred resolving metadata for
project: " + e.getMessage() );
+ return ERROR;
+ }
if ( versionMetadata != null )
{
repositoryId = repoId;
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=884066&r1=884065&r2=884066&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
Wed Nov 25 12:17:38 2009
@@ -49,6 +49,7 @@
}
public ProjectVersionMetadata getProjectVersion( String repoId, String
namespace, String projectId, String projectVersion )
+ throws MetadataResolverException
{
ProjectVersionMetadata metadata =
metadataRepository.getProjectVersion( repoId, namespace, projectId,
projectVersion );
// TODO: do we want to detect changes as well by comparing timestamps?
isProjectVersionNewerThan(updated)
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=884066&r1=884065&r2=884066&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
Wed Nov 25 12:17:38 2009
@@ -21,14 +21,15 @@
import java.util.Collection;
-import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.model.ProjectMetadata;
+import org.apache.archiva.metadata.model.ProjectVersionMetadata;
public interface MetadataResolver
{
ProjectMetadata getProject( String repoId, String namespace, String
projectId );
- ProjectVersionMetadata getProjectVersion( String repoId, String namespace,
String projectId, String projectVersion );
+ ProjectVersionMetadata getProjectVersion( String repoId, String namespace,
String projectId, String projectVersion )
+ throws MetadataResolverException;
Collection<String> getArtifactVersions( String repoId, String namespace,
String projectId, String projectVersion );
}
Added:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolverException.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/MetadataResolverException.java?rev=884066&view=auto
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolverException.java
(added)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolverException.java
Wed Nov 25 12:17:38 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 MetadataResolverException
+ extends Exception
+{
+ public MetadataResolverException( String message, Exception cause )
+ {
+ super( message, cause );
+ }
+}
Propchange:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolverException.java
------------------------------------------------------------------------------
svn:eol-style = native
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=884066&r1=884065&r2=884066&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
Wed Nov 25 12:17:38 2009
@@ -27,6 +27,7 @@
import org.apache.archiva.metadata.model.ProjectMetadata;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.MetadataResolverException;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
import org.apache.maven.archiva.common.utils.VersionUtil;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -42,6 +43,8 @@
import org.apache.maven.model.building.ModelBuilder;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelBuildingRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @plexus.component
role="org.apache.archiva.metadata.repository.MetadataResolver"
role-hint="maven2"
@@ -64,6 +67,8 @@
*/
private RepositoryPathTranslator pathTranslator;
+ private final static Logger log = LoggerFactory.getLogger(
Maven2RepositoryMetadataResolver.class );
+
public ProjectMetadata getProject( String repoId, String namespace, String
projectId )
{
throw new UnsupportedOperationException();
@@ -71,6 +76,7 @@
public ProjectVersionMetadata getProjectVersion( String repoId, String
namespace, String projectId,
String projectVersion )
+ throws MetadataResolverException
{
ManagedRepositoryConfiguration repositoryConfiguration =
archivaConfiguration.getConfiguration().findManagedRepositoryById(
repoId );
@@ -81,10 +87,11 @@
if ( VersionUtil.isSnapshot( projectVersion ) )
{
// TODO: need much error handling here for incorrect metadata
+ File metadataFile =
+ pathTranslator.toFile( basedir, namespace, projectId,
projectVersion, "maven-metadata.xml" );
try
{
- MavenRepositoryMetadata metadata =
MavenRepositoryMetadataReader.read(
- pathTranslator.toFile( basedir, namespace, projectId,
projectVersion, "maven-metadata.xml" ) );
+ MavenRepositoryMetadata metadata =
MavenRepositoryMetadataReader.read( metadataFile );
artifactVersion =
artifactVersion.substring( 0, artifactVersion.length() - 8
); // remove SNAPSHOT from end
@@ -94,8 +101,8 @@
}
catch ( XMLException e )
{
- // TODO: handle it
- e.printStackTrace(); //To change body of catch statement use
File | Settings | File Templates.
+ // unable to parse metadata - log it, and continue with the
version as the original SNAPSHOT version
+ log.warn( "Invalid metadata: " + metadataFile + " - " +
e.getMessage() );
}
}
@@ -114,8 +121,7 @@
}
catch ( ModelBuildingException e )
{
- // TODO: handle it
- throw new RuntimeException( e );
+ throw new MetadataResolverException( "Unable to build Maven POM to
derive metadata from: " + e.getMessage(), e );
}
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=884066&r1=884065&r2=884066&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
Wed Nov 25 12:17:38 2009
@@ -24,6 +24,7 @@
import org.apache.archiva.metadata.model.License;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.MetadataResolverException;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
@@ -59,6 +60,7 @@
}
public void testGetProjectVersionMetadata()
+ throws MetadataResolverException
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "org.apache.archiva",
"archiva-common", "1.2.1" );
@@ -90,6 +92,7 @@
}
public void testGetProjectVersionMetadataForTimestampedSnapshot()
+ throws MetadataResolverException
{
ProjectVersionMetadata metadata =
resolver.getProjectVersion( TEST_REPO_ID, "org.apache", "apache",
"5-SNAPSHOT" );