[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.ConsumerException;
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.maven.archiva.model.ArchivaProjectModel; 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.ProjectModelReader;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.xml.XMLException;
/** /**
* ProjectReaderConsumer * ProjectReaderConsumer
@ -117,7 +117,7 @@ public class ProjectReaderConsumer
System.err.println( "Got null model on " + pomFile ); System.err.println( "Got null model on " + pomFile );
} }
} }
catch ( ProjectModelException e ) catch ( XMLException e )
{ {
System.err.println( "Unable to process: " + pomFile ); System.err.println( "Unable to process: " + pomFile );
e.printStackTrace( System.out ); 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.RepositoryContentFactory;
import org.apache.maven.archiva.repository.RepositoryException; import org.apache.maven.archiva.repository.RepositoryException;
import org.apache.maven.archiva.repository.content.ManagedLegacyRepositoryContent; 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.ProjectModelReader;
import org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelFilter; 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.ProjectModel300Reader;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.cache.Cache; import org.codehaus.plexus.cache.Cache;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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() ); 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.model.ArchivaProjectModel;
import org.apache.maven.archiva.xml.XMLException;
import java.io.File; import java.io.File;
@ -30,5 +31,6 @@ import java.io.File;
*/ */
public interface ProjectModelReader 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. * 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.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArtifactReference; 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.Organization;
import org.apache.maven.archiva.model.ProjectRepository; import org.apache.maven.archiva.model.ProjectRepository;
import org.apache.maven.archiva.model.Scm; 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.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException; import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader; import org.apache.maven.archiva.xml.XMLReader;
import org.dom4j.Element; 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 * ProjectModel300Reader
* *
@ -52,66 +51,54 @@ public class ProjectModel300Reader
{ {
public ArchivaProjectModel read( File pomFile ) 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.setGroupId( project.elementTextTrim( "groupId" ) );
model.setArtifactId( project.elementTextTrim( "artifactId" ) ); model.setArtifactId( project.elementTextTrim( "artifactId" ) );
// TODO: Handle <id /> // TODO: Handle <id />
model.setVersion( project.elementTextTrim( "currentVersion" ) ); model.setVersion( project.elementTextTrim( "currentVersion" ) );
model.setName( project.elementTextTrim( "name" ) ); model.setName( project.elementTextTrim( "name" ) );
model.setDescription( project.elementTextTrim( "description" ) ); model.setDescription( project.elementTextTrim( "description" ) );
// TODO: what to do with <shortDescription /> ? // TODO: what to do with <shortDescription /> ?
model.setUrl( project.elementTextTrim( "url" ) ); model.setUrl( project.elementTextTrim( "url" ) );
// TODO: Handle <logo /> // TODO: Handle <logo />
// TODO: Handle <inceptionYear /> // TODO: Handle <inceptionYear />
model.setIssueManagement( getIssueManagement( xml ) ); model.setIssueManagement( getIssueManagement( xml ) );
// TODO: What to do with <gumpRepositoryId /> ? // TODO: What to do with <gumpRepositoryId /> ?
// TODO: Handle <siteAddress /> // TODO: Handle <siteAddress />
// TODO: Handle <siteDirectory /> ? // TODO: Handle <siteDirectory /> ?
// TODO: Handle <distributionSite /> // TODO: Handle <distributionSite />
// TODO: Handle <distributionDirectory /> // TODO: Handle <distributionDirectory />
model.setMailingLists( getMailingLists( xml ) ); model.setMailingLists( getMailingLists( xml ) );
model.setIndividuals( getIndividuals( xml ) ); model.setIndividuals( getIndividuals( xml ) );
model.setLicenses( getLicenses( xml ) ); model.setLicenses( getLicenses( xml ) );
model.setReports( getReports( xml ) ); model.setReports( getReports( xml ) );
model.setRepositories( getRepositories( xml ) ); model.setRepositories( getRepositories( xml ) );
model.setScm( getSCM( xml ) ); model.setScm( getSCM( xml ) );
model.setOrganization( getOrganization( xml ) ); model.setOrganization( getOrganization( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) ); model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
model.setDependencies( getDependencies( xml ) ); model.setDependencies( getDependencies( xml ) );
model.setOrigin("filesystem");
/* Following are not valid for <pomVersion>3</pomVersion> / Maven 1 pom files. model.setOrigin( "filesystem" );
*
* model.setDependencyManagement()
* model.setPlugins()
* model.setParentProject()
* model.setPackaging()
* model.setCiManagement()
* model.setBuildExtensions()
* model.setRelocation()
*/
return model; /*
} * Following are not valid for <pomVersion>3</pomVersion> / Maven 1 pom files. model.setDependencyManagement()
catch ( XMLException e ) * model.setPlugins() model.setParentProject() model.setPackaging() model.setCiManagement()
{ * model.setBuildExtensions() model.setRelocation()
throw new ProjectModelException( e.getMessage(), e ); */
}
return model;
} }
private ArtifactReference getArtifactReference( Element elemPlugin, String defaultType ) private ArtifactReference getArtifactReference( Element elemPlugin, String defaultType )

View File

@ -19,6 +19,12 @@ package org.apache.maven.archiva.repository.project.readers;
* under the License. * 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.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArtifactReference; 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.ProjectRepository;
import org.apache.maven.archiva.model.Scm; import org.apache.maven.archiva.model.Scm;
import org.apache.maven.archiva.model.VersionedReference; 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.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException; import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader; import org.apache.maven.archiva.xml.XMLReader;
import org.dom4j.Element; 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. * ProjectModel400Reader - read in modelVersion 4.0.0 pom files into archiva-model structures.
* *
@ -54,64 +53,56 @@ import java.util.Properties;
public class ProjectModel400Reader public class ProjectModel400Reader
implements ProjectModelReader implements ProjectModelReader
{ {
public ArchivaProjectModel read( File pomFile ) 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 ); // No namespace defined
// TODO: Output to monitor the problem with the Namespace.
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 );
} }
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 ) private ArtifactReference getArtifactReference( Element elemPlugin, String defaultType )

View File

@ -19,6 +19,8 @@ package org.apache.maven.archiva.repository.project.resolvers;
* under the License. * under the License.
*/ */
import java.io.File;
import org.apache.maven.archiva.model.ArchivaArtifact; import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.VersionedReference; 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.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader; import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelResolver; import org.apache.maven.archiva.repository.project.ProjectModelResolver;
import org.apache.maven.archiva.xml.XMLException;
import java.io.File;
/** /**
* Resolve Project from managed repository. * Resolve Project from managed repository.
@ -55,7 +56,14 @@ public class ManagedRepositoryProjectResolver
File repoFile = repository.toFile( artifact ); 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.ProjectModelResolverFactory;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.resolvers.ManagedRepositoryProjectResolver; import org.apache.maven.archiva.repository.project.resolvers.ManagedRepositoryProjectResolver;
import org.apache.maven.archiva.xml.XMLException;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
@ -56,7 +57,7 @@ public class EffectiveProjectModelFilterTest
} }
private ArchivaProjectModel createArchivaProjectModel( String path ) private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException throws XMLException
{ {
ProjectModelReader reader = new ProjectModel400Reader(); 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.ProjectModelWriter;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.writers.ProjectModel400Writer; import org.apache.maven.archiva.repository.project.writers.ProjectModel400Writer;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase; import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File; import java.io.File;
@ -136,7 +137,7 @@ public class ProjectModelExpressionExpanderTest
} }
private ArchivaProjectModel createArchivaProjectModel( String path ) private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException throws XMLException
{ {
ProjectModelReader reader = new ProjectModel400Reader(); ProjectModelReader reader = new ProjectModel400Reader();

View File

@ -19,14 +19,14 @@ package org.apache.maven.archiva.repository.project.readers;
* under the License. * under the License.
*/ */
import java.io.File;
import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.Dependency; 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.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase; import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
/** /**
* ProjectModel300ReaderTest * ProjectModel300ReaderTest
* *
@ -36,7 +36,7 @@ public class ProjectModel300ReaderTest
extends PlexusInSpringTestCase extends PlexusInSpringTestCase
{ {
public void testLoadSimple() public void testLoadSimple()
throws ProjectModelException throws XMLException
{ {
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/legacy-repository" ); 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" ); 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. * under the License.
*/ */
import java.io.File;
import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.VersionedReference; 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.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase; import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
/** /**
* ProjectModel400ReaderTest * ProjectModel400ReaderTest
* *
@ -36,7 +36,7 @@ public class ProjectModel400ReaderTest
extends PlexusInSpringTestCase extends PlexusInSpringTestCase
{ {
public void testLoadSimple() public void testLoadSimple()
throws ProjectModelException throws XMLException
{ {
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" ); File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir, File pomFile = new File( defaultRepoDir,
@ -66,7 +66,7 @@ public class ProjectModel400ReaderTest
} }
public void testLoadWithNamespace() public void testLoadWithNamespace()
throws ProjectModelException throws XMLException
{ {
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" ); File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir, 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.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelWriter; import org.apache.maven.archiva.repository.project.ProjectModelWriter;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader; import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.xml.XMLException;
import org.codehaus.plexus.spring.PlexusInSpringTestCase; import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import org.custommonkey.xmlunit.DetailedDiff; import org.custommonkey.xmlunit.DetailedDiff;
import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.Diff;
@ -128,7 +129,7 @@ public class ProjectModel400WriterTest
} }
private ArchivaProjectModel createArchivaProjectModel( String path ) private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException throws XMLException
{ {
ProjectModelReader reader = new ProjectModel400Reader(); ProjectModelReader reader = new ProjectModel400Reader();