[MRM-1102] don't swallow parsing exception too early where it still has context, and only log the message not the trace in scanning

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@751932 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2009-03-10 01:09:34 +00:00
parent 0715c95f8c
commit 0fcfb7e339
11 changed files with 131 additions and 140 deletions

View File

@ -28,9 +28,9 @@ import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.xml.XMLException;
/**
* ProjectReaderConsumer
@ -117,7 +117,7 @@ public class ProjectReaderConsumer
System.err.println( "Got null model on " + pomFile );
}
}
catch ( ProjectModelException e )
catch ( XMLException e )
{
System.err.println( "Unable to process: " + pomFile );
e.printStackTrace( System.out );

View File

@ -41,11 +41,11 @@ import org.apache.maven.archiva.repository.ManagedRepositoryContent;
import org.apache.maven.archiva.repository.RepositoryContentFactory;
import org.apache.maven.archiva.repository.RepositoryException;
import org.apache.maven.archiva.repository.content.ManagedLegacyRepositoryContent;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelFilter;
import org.apache.maven.archiva.repository.project.readers.ProjectModel300Reader;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.cache.Cache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -178,9 +178,9 @@ public class ProjectModelToDatabaseConsumer
}
}
catch ( ProjectModelException e )
catch ( XMLException e )
{
log.warn( "Unable to read project model " + artifactFile + " : " + e.getMessage(), e );
log.warn( "Unable to read project model " + artifactFile + " : " + e.getMessage() );
addProblem( artifact, "Unable to read project model " + artifactFile + " : " + e.getMessage() );
}

View File

@ -20,6 +20,7 @@ package org.apache.maven.archiva.repository.project;
*/
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.xml.XMLException;
import java.io.File;
@ -30,5 +31,6 @@ import java.io.File;
*/
public interface ProjectModelReader
{
public ArchivaProjectModel read( File pomFile ) throws ProjectModelException;
public ArchivaProjectModel read( File pomFile )
throws XMLException;
}

View File

@ -19,6 +19,12 @@ package org.apache.maven.archiva.repository.project.readers;
* under the License.
*/
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArtifactReference;
@ -30,18 +36,11 @@ import org.apache.maven.archiva.model.MailingList;
import org.apache.maven.archiva.model.Organization;
import org.apache.maven.archiva.model.ProjectRepository;
import org.apache.maven.archiva.model.Scm;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader;
import org.dom4j.Element;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
/**
* ProjectModel300Reader
*
@ -52,66 +51,54 @@ public class ProjectModel300Reader
{
public ArchivaProjectModel read( File pomFile )
throws ProjectModelException
throws XMLException
{
try
{
XMLReader xml = new XMLReader( "project", pomFile );
XMLReader xml = new XMLReader( "project", pomFile );
ArchivaProjectModel model = new ArchivaProjectModel();
ArchivaProjectModel model = new ArchivaProjectModel();
xml.removeNamespaces();
xml.removeNamespaces();
Element project = xml.getElement( "//project" );
Element project = xml.getElement( "//project" );
// TODO: Handle <extend /> ?? (is this even possible?)
// TODO: Handle <extend /> ?? (is this even possible?)
model.setGroupId( project.elementTextTrim( "groupId" ) );
model.setArtifactId( project.elementTextTrim( "artifactId" ) );
// TODO: Handle <id />
model.setVersion( project.elementTextTrim( "currentVersion" ) );
model.setName( project.elementTextTrim( "name" ) );
model.setDescription( project.elementTextTrim( "description" ) );
// TODO: what to do with <shortDescription /> ?
model.setUrl( project.elementTextTrim( "url" ) );
// TODO: Handle <logo />
// TODO: Handle <inceptionYear />
model.setGroupId( project.elementTextTrim( "groupId" ) );
model.setArtifactId( project.elementTextTrim( "artifactId" ) );
// TODO: Handle <id />
model.setVersion( project.elementTextTrim( "currentVersion" ) );
model.setName( project.elementTextTrim( "name" ) );
model.setDescription( project.elementTextTrim( "description" ) );
// TODO: what to do with <shortDescription /> ?
model.setUrl( project.elementTextTrim( "url" ) );
// TODO: Handle <logo />
// TODO: Handle <inceptionYear />
model.setIssueManagement( getIssueManagement( xml ) );
// TODO: What to do with <gumpRepositoryId /> ?
// TODO: Handle <siteAddress />
// TODO: Handle <siteDirectory /> ?
// TODO: Handle <distributionSite />
// TODO: Handle <distributionDirectory />
model.setMailingLists( getMailingLists( xml ) );
model.setIndividuals( getIndividuals( xml ) );
model.setLicenses( getLicenses( xml ) );
model.setReports( getReports( xml ) );
model.setRepositories( getRepositories( xml ) );
model.setScm( getSCM( xml ) );
model.setOrganization( getOrganization( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
model.setDependencies( getDependencies( xml ) );
model.setOrigin("filesystem");
model.setIssueManagement( getIssueManagement( xml ) );
// TODO: What to do with <gumpRepositoryId /> ?
// TODO: Handle <siteAddress />
// TODO: Handle <siteDirectory /> ?
// TODO: Handle <distributionSite />
// TODO: Handle <distributionDirectory />
model.setMailingLists( getMailingLists( xml ) );
model.setIndividuals( getIndividuals( xml ) );
model.setLicenses( getLicenses( xml ) );
model.setReports( getReports( xml ) );
model.setRepositories( getRepositories( xml ) );
model.setScm( getSCM( xml ) );
model.setOrganization( getOrganization( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
model.setDependencies( getDependencies( xml ) );
/* Following are not valid for <pomVersion>3</pomVersion> / Maven 1 pom files.
*
* model.setDependencyManagement()
* model.setPlugins()
* model.setParentProject()
* model.setPackaging()
* model.setCiManagement()
* model.setBuildExtensions()
* model.setRelocation()
*/
model.setOrigin( "filesystem" );
return model;
}
catch ( XMLException e )
{
throw new ProjectModelException( e.getMessage(), e );
}
/*
* Following are not valid for <pomVersion>3</pomVersion> / Maven 1 pom files. model.setDependencyManagement()
* model.setPlugins() model.setParentProject() model.setPackaging() model.setCiManagement()
* model.setBuildExtensions() model.setRelocation()
*/
return model;
}
private ArtifactReference getArtifactReference( Element elemPlugin, String defaultType )

View File

@ -19,6 +19,12 @@ package org.apache.maven.archiva.repository.project.readers;
* under the License.
*/
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArtifactReference;
@ -34,18 +40,11 @@ import org.apache.maven.archiva.model.Organization;
import org.apache.maven.archiva.model.ProjectRepository;
import org.apache.maven.archiva.model.Scm;
import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader;
import org.dom4j.Element;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
/**
* ProjectModel400Reader - read in modelVersion 4.0.0 pom files into archiva-model structures.
*
@ -54,64 +53,56 @@ import java.util.Properties;
public class ProjectModel400Reader
implements ProjectModelReader
{
public ArchivaProjectModel read( File pomFile )
throws ProjectModelException
throws XMLException
{
try
XMLReader xml = new XMLReader( "project", pomFile );
ArchivaProjectModel model = new ArchivaProjectModel();
if ( !"http://maven.apache.org/POM/4.0.0".equals( xml.getDefaultNamespaceURI() ) )
{
XMLReader xml = new XMLReader( "project", pomFile );
ArchivaProjectModel model = new ArchivaProjectModel();
if ( !"http://maven.apache.org/POM/4.0.0".equals( xml.getDefaultNamespaceURI() ) )
{
// No namespace defined
// TODO: Output to monitor the problem with the Namespace.
}
xml.removeNamespaces();
Element project = xml.getElement( "//project" );
model.setGroupId( project.elementTextTrim( "groupId" ) );
model.setArtifactId( project.elementTextTrim( "artifactId" ) );
model.setVersion( project.elementTextTrim( "version" ) );
model.setName( project.elementTextTrim( "name" ) );
model.setDescription( project.elementTextTrim( "description" ) );
model.setUrl( project.elementTextTrim( "url" ) );
model.setPackaging( StringUtils.defaultIfEmpty( project.elementTextTrim( "packaging" ), "jar" ) );
model.setParentProject( getParentProject( xml ) );
model.setMailingLists( getMailingLists( xml ) );
model.setCiManagement( getCiManagement( xml ) );
model.setIndividuals( getIndividuals( xml ) );
model.setIssueManagement( getIssueManagement( xml ) );
model.setLicenses( getLicenses( xml ) );
model.setOrganization( getOrganization( xml ) );
model.setScm( getSCM( xml ) );
model.setRepositories( getRepositories( xml ) );
model.setDependencies( getDependencies( xml ) );
model.setDependencyManagement( getDependencyManagement( xml ) );
model.setPlugins( getPlugins( xml ) );
model.setReports( getReports( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
model.setBuildExtensions( getBuildExtensions( xml ) );
model.setRelocation( getRelocation( xml ) );
model.setOrigin("filesystem");
return model;
}
catch ( XMLException e )
{
throw new ProjectModelException( e.getMessage(), e );
// No namespace defined
// TODO: Output to monitor the problem with the Namespace.
}
xml.removeNamespaces();
Element project = xml.getElement( "//project" );
model.setGroupId( project.elementTextTrim( "groupId" ) );
model.setArtifactId( project.elementTextTrim( "artifactId" ) );
model.setVersion( project.elementTextTrim( "version" ) );
model.setName( project.elementTextTrim( "name" ) );
model.setDescription( project.elementTextTrim( "description" ) );
model.setUrl( project.elementTextTrim( "url" ) );
model.setPackaging( StringUtils.defaultIfEmpty( project.elementTextTrim( "packaging" ), "jar" ) );
model.setParentProject( getParentProject( xml ) );
model.setMailingLists( getMailingLists( xml ) );
model.setCiManagement( getCiManagement( xml ) );
model.setIndividuals( getIndividuals( xml ) );
model.setIssueManagement( getIssueManagement( xml ) );
model.setLicenses( getLicenses( xml ) );
model.setOrganization( getOrganization( xml ) );
model.setScm( getSCM( xml ) );
model.setRepositories( getRepositories( xml ) );
model.setDependencies( getDependencies( xml ) );
model.setDependencyManagement( getDependencyManagement( xml ) );
model.setPlugins( getPlugins( xml ) );
model.setReports( getReports( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
model.setBuildExtensions( getBuildExtensions( xml ) );
model.setRelocation( getRelocation( xml ) );
model.setOrigin( "filesystem" );
return model;
}
private ArtifactReference getArtifactReference( Element elemPlugin, String defaultType )

View File

@ -19,6 +19,8 @@ package org.apache.maven.archiva.repository.project.resolvers;
* under the License.
*/
import java.io.File;
import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.VersionedReference;
@ -26,8 +28,7 @@ import org.apache.maven.archiva.repository.ManagedRepositoryContent;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelResolver;
import java.io.File;
import org.apache.maven.archiva.xml.XMLException;
/**
* Resolve Project from managed repository.
@ -55,7 +56,14 @@ public class ManagedRepositoryProjectResolver
File repoFile = repository.toFile( artifact );
return reader.read( repoFile );
try
{
return reader.read( repoFile );
}
catch ( XMLException e )
{
throw new ProjectModelException( e.getMessage(), e );
}
}
}

View File

@ -32,6 +32,7 @@ import org.apache.maven.archiva.repository.project.ProjectModelResolver;
import org.apache.maven.archiva.repository.project.ProjectModelResolverFactory;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.resolvers.ManagedRepositoryProjectResolver;
import org.apache.maven.archiva.xml.XMLException;
import java.io.File;
import java.util.HashMap;
@ -56,7 +57,7 @@ public class EffectiveProjectModelFilterTest
}
private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException
throws XMLException
{
ProjectModelReader reader = new ProjectModel400Reader();

View File

@ -27,6 +27,7 @@ import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelWriter;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.writers.ProjectModel400Writer;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
@ -136,7 +137,7 @@ public class ProjectModelExpressionExpanderTest
}
private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException
throws XMLException
{
ProjectModelReader reader = new ProjectModel400Reader();

View File

@ -19,14 +19,14 @@ package org.apache.maven.archiva.repository.project.readers;
* under the License.
*/
import java.io.File;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
/**
* ProjectModel300ReaderTest
*
@ -36,7 +36,7 @@ public class ProjectModel300ReaderTest
extends PlexusInSpringTestCase
{
public void testLoadSimple()
throws ProjectModelException
throws XMLException
{
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/legacy-repository" );
File pomFile = new File( defaultRepoDir, "org.apache.maven/poms/maven-model-v3-2.0.pom" );

View File

@ -19,14 +19,14 @@ package org.apache.maven.archiva.repository.project.readers;
* under the License.
*/
import java.io.File;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
/**
* ProjectModel400ReaderTest
*
@ -36,7 +36,7 @@ public class ProjectModel400ReaderTest
extends PlexusInSpringTestCase
{
public void testLoadSimple()
throws ProjectModelException
throws XMLException
{
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir,
@ -66,7 +66,7 @@ public class ProjectModel400ReaderTest
}
public void testLoadWithNamespace()
throws ProjectModelException
throws XMLException
{
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir,

View File

@ -25,6 +25,7 @@ import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelWriter;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import org.custommonkey.xmlunit.DetailedDiff;
import org.custommonkey.xmlunit.Diff;
@ -128,7 +129,7 @@ public class ProjectModel400WriterTest
}
private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException
throws XMLException
{
ProjectModelReader reader = new ProjectModel400Reader();