Simplify ProjectBuildingException constructors and store the original File/URI instead of a String

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@587596 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Carlos Sanchez Gonzalez 2007-10-23 18:36:50 +00:00
parent 959ea187df
commit a44c4c99c0
4 changed files with 177 additions and 166 deletions

View File

@ -109,7 +109,7 @@ public class DefaultProfileAdvisor
String projectId = ArtifactUtils.versionlessKey( groupId, artifactId ); String projectId = ArtifactUtils.versionlessKey( groupId, artifactId );
throw new ProjectBuildingException( projectId, e.getMessage(), pomFile.getAbsolutePath(), e ); throw new ProjectBuildingException( projectId, e.getMessage(), pomFile, e );
} }
for ( Iterator it = activeProfiles.iterator(); it.hasNext(); ) for ( Iterator it = activeProfiles.iterator(); it.hasNext(); )
@ -166,7 +166,7 @@ public class DefaultProfileAdvisor
catch ( ProfileActivationException e ) catch ( ProfileActivationException e )
{ {
throw new ProjectBuildingException( modelId, throw new ProjectBuildingException( modelId,
"Failed to compute active profiles for repository aggregation.", pomFile.getAbsolutePath(), e ); "Failed to compute active profiles for repository aggregation.", pomFile, e );
} }
LinkedHashSet remoteRepositories = new LinkedHashSet(); LinkedHashSet remoteRepositories = new LinkedHashSet();
@ -239,13 +239,13 @@ public class DefaultProfileAdvisor
catch ( IOException e ) catch ( IOException e )
{ {
throw new ProjectBuildingException( model.getId(), "Cannot read profiles.xml resource from directory: " throw new ProjectBuildingException( model.getId(), "Cannot read profiles.xml resource from directory: "
+ projectDir, pomFile.getAbsolutePath(), e ); + projectDir, pomFile, e );
} }
catch ( XmlPullParserException e ) catch ( XmlPullParserException e )
{ {
throw new ProjectBuildingException( model.getId(), throw new ProjectBuildingException( model.getId(),
"Cannot parse profiles.xml resource from directory: " + projectDir, "Cannot parse profiles.xml resource from directory: " + projectDir,
pomFile.getAbsolutePath(), e ); pomFile, e );
} }
} }
} }

View File

@ -78,6 +78,8 @@ import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.Reader; import java.io.Reader;
import java.io.StringReader; import java.io.StringReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -209,7 +211,8 @@ public class DefaultMavenProjectBuilder
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository ); Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
return buildInternal( "Artifact [" + artifact + "]", model, localRepository, remoteArtifactRepositories, null, null, false, false ); return buildInternal( artifact.getFile(), model, localRepository, remoteArtifactRepositories, null, null,
false, false );
} }
private MavenProject superProject; private MavenProject superProject;
@ -289,7 +292,7 @@ public class DefaultMavenProjectBuilder
{ {
throw new ProjectBuildingException( projectId, throw new ProjectBuildingException( projectId,
"Unable to build project due to an invalid dependency version: " + "Unable to build project due to an invalid dependency version: " +
e.getMessage(), projectDescriptor.getAbsolutePath(), e ); e.getMessage(), projectDescriptor, e );
} }
ArtifactResolutionRequest request = new ArtifactResolutionRequest() ArtifactResolutionRequest request = new ArtifactResolutionRequest()
@ -371,7 +374,7 @@ public class DefaultMavenProjectBuilder
catch ( InvalidVersionSpecificationException e ) catch ( InvalidVersionSpecificationException e )
{ {
throw new ProjectBuildingException( projectId, "Unable to parse version '" + d.getVersion() + throw new ProjectBuildingException( projectId, "Unable to parse version '" + d.getVersion() +
"' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), pomFile.getAbsolutePath(), e ); "' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), pomFile, e );
} }
} }
} }
@ -397,7 +400,7 @@ public class DefaultMavenProjectBuilder
Model model = readModel( "unknown", projectDescriptor, STRICT_MODEL_PARSING ); Model model = readModel( "unknown", projectDescriptor, STRICT_MODEL_PARSING );
MavenProject project = buildInternal( projectDescriptor.getAbsolutePath(), MavenProject project = buildInternal( projectDescriptor,
model, model,
localRepository, localRepository,
buildArtifactRepositories( getSuperModel() ), buildArtifactRepositories( getSuperModel() ),
@ -526,7 +529,7 @@ public class DefaultMavenProjectBuilder
// jvz:note // jvz:note
// We've got a mixture of things going in the USD and from the repository, sometimes the descriptor // We've got a mixture of things going in the USD and from the repository, sometimes the descriptor
// is a real file and sometimes null which makes things confusing. // is a real file and sometimes null which makes things confusing.
private MavenProject buildInternal( String pomLocation, private MavenProject buildInternal( File pomLocation,
Model model, Model model,
ArtifactRepository localRepository, ArtifactRepository localRepository,
List parentSearchRepositories, List parentSearchRepositories,
@ -554,7 +557,7 @@ public class DefaultMavenProjectBuilder
} }
catch ( ProfileActivationException e ) catch ( ProfileActivationException e )
{ {
throw new ProjectBuildingException( projectId, "Failed to activate external profiles.", projectDescriptor.getAbsolutePath(), e ); throw new ProjectBuildingException( projectId, "Failed to activate external profiles.", projectDescriptor, e );
} }
explicitlyActive = externalProfileManager.getExplicitlyActivatedIds(); explicitlyActive = externalProfileManager.getExplicitlyActivatedIds();
@ -645,11 +648,11 @@ public class DefaultMavenProjectBuilder
} }
catch ( ModelInterpolationException e ) catch ( ModelInterpolationException e )
{ {
throw new InvalidProjectModelException( projectId, pomLocation, e.getMessage(), e ); throw new InvalidProjectModelException( projectId, e.getMessage(), pomLocation, e );
} }
catch ( InvalidRepositoryException e ) catch ( InvalidRepositoryException e )
{ {
throw new InvalidProjectModelException( projectId, pomLocation, e.getMessage(), e ); throw new InvalidProjectModelException( projectId, e.getMessage(), pomLocation, e );
} }
ProjectBuildCache projectBuildCache = ProjectBuildCache.read( buildContextManager ); ProjectBuildCache projectBuildCache = ProjectBuildCache.read( buildContextManager );
@ -798,7 +801,7 @@ public class DefaultMavenProjectBuilder
* the resolved source roots, etc for the parent - that occurs for the parent when it is constructed independently * the resolved source roots, etc for the parent - that occurs for the parent when it is constructed independently
* and projects are not cached or reused * and projects are not cached or reused
*/ */
private MavenProject processProjectLogic( String pomLocation, private MavenProject processProjectLogic( File pomLocation,
MavenProject project, MavenProject project,
File pomFile, File pomFile,
boolean strict ) boolean strict )
@ -882,7 +885,7 @@ public class DefaultMavenProjectBuilder
if ( validationResult.getMessageCount() > 0 ) if ( validationResult.getMessageCount() > 0 )
{ {
throw new InvalidProjectModelException( projectId, pomLocation, "Failed to validate POM", throw new InvalidProjectModelException( projectId, "Failed to validate POM", pomLocation,
validationResult ); validationResult );
} }
@ -998,17 +1001,17 @@ public class DefaultMavenProjectBuilder
try try
{ {
reader = ReaderFactory.newXmlReader( file ); reader = ReaderFactory.newXmlReader( file );
return readModel( projectId, file.getAbsolutePath(), reader, strict ); return readModel( projectId, file.toURI(), reader, strict );
} }
catch ( FileNotFoundException e ) catch ( FileNotFoundException e )
{ {
throw new ProjectBuildingException( projectId, throw new ProjectBuildingException( projectId,
"Could not find the model file '" + file.getAbsolutePath() + "'.", file.getAbsolutePath(), e ); "Could not find the model file '" + file.getAbsolutePath() + "'.", file, e );
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new ProjectBuildingException( projectId, "Failed to build model from file '" + throw new ProjectBuildingException( projectId, "Failed to build model from file '" +
file.getAbsolutePath() + "'.\nError: \'" + e.getLocalizedMessage() + "\'", file.getAbsolutePath(), e ); file.getAbsolutePath() + "'.\nError: \'" + e.getLocalizedMessage() + "\'", file, e );
} }
finally finally
{ {
@ -1017,7 +1020,7 @@ public class DefaultMavenProjectBuilder
} }
private Model readModel( String projectId, private Model readModel( String projectId,
String pomLocation, URI pomLocation,
Reader reader, Reader reader,
boolean strict ) boolean strict )
throws IOException, InvalidProjectModelException throws IOException, InvalidProjectModelException
@ -1026,7 +1029,7 @@ public class DefaultMavenProjectBuilder
if ( modelSource.indexOf( "<modelVersion>" + MAVEN_MODEL_VERSION ) < 0 ) if ( modelSource.indexOf( "<modelVersion>" + MAVEN_MODEL_VERSION ) < 0 )
{ {
throw new InvalidProjectModelException( projectId, pomLocation, "Not a v" + MAVEN_MODEL_VERSION + " POM." ); throw new InvalidProjectModelException( projectId, "Not a v" + MAVEN_MODEL_VERSION + " POM.", pomLocation );
} }
StringReader sReader = new StringReader( modelSource ); StringReader sReader = new StringReader( modelSource );
@ -1037,8 +1040,8 @@ public class DefaultMavenProjectBuilder
} }
catch ( XmlPullParserException e ) catch ( XmlPullParserException e )
{ {
throw new InvalidProjectModelException( projectId, pomLocation, throw new InvalidProjectModelException( projectId, "Parse error reading POM. Reason: " + e.getMessage(),
"Parse error reading POM. Reason: " + e.getMessage(), e ); pomLocation, e );
} }
} }
@ -1048,15 +1051,22 @@ public class DefaultMavenProjectBuilder
throws ProjectBuildingException throws ProjectBuildingException
{ {
Reader reader = null; Reader reader = null;
URI uri = null;
try try
{ {
uri = url.toURI();
reader = ReaderFactory.newXmlReader( url.openStream() ); reader = ReaderFactory.newXmlReader( url.openStream() );
return readModel( projectId, url.toExternalForm(), reader, strict ); return readModel( projectId, uri, reader, strict );
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new ProjectBuildingException( projectId, "Failed build model from URL \'" + url.toExternalForm() + throw new ProjectBuildingException( projectId, "Failed build model from URL \'" + url.toExternalForm() +
"\'\nError: \'" + e.getLocalizedMessage() + "\'", url.toExternalForm(), e ); "\'\nError: \'" + e.getLocalizedMessage() + "\'", uri, e );
}
catch ( URISyntaxException e )
{
throw new ProjectBuildingException( projectId, "Failed build model from URL \'" + url.toExternalForm()
+ "\'\nError: \'" + e.getLocalizedMessage() + "\'", e );
} }
finally finally
{ {
@ -1064,9 +1074,32 @@ public class DefaultMavenProjectBuilder
} }
} }
/**
* @deprecated use {@link #createPluginArtifacts(String, List, File)}
* @param projectId
* @param plugins
* @param pomLocation absolute path of pom file
* @return
* @throws ProjectBuildingException
*/
protected Set createPluginArtifacts( String projectId, protected Set createPluginArtifacts( String projectId,
List plugins, String pomLocation ) List plugins, String pomLocation )
throws ProjectBuildingException throws ProjectBuildingException
{
return createPluginArtifacts( projectId, plugins, new File( pomLocation ) );
}
/**
*
* @param projectId
* @param plugins
* @param pomLocation pom file
* @return
* @throws ProjectBuildingException
*/
protected Set createPluginArtifacts( String projectId,
List plugins, File pomLocation )
throws ProjectBuildingException
{ {
Set pluginArtifacts = new HashSet(); Set pluginArtifacts = new HashSet();
@ -1106,10 +1139,25 @@ public class DefaultMavenProjectBuilder
return pluginArtifacts; return pluginArtifacts;
} }
// TODO: share with createPluginArtifacts? /**
* @deprecated use {@link #createReportArtifacts(String, List, File)}
* @param projectId
* @param reports
* @param pomLocation absolute path of pom file
* @return
* @throws ProjectBuildingException
*/
protected Set createReportArtifacts( String projectId, protected Set createReportArtifacts( String projectId,
List reports, String pomLocation ) List reports, String pomLocation )
throws ProjectBuildingException throws ProjectBuildingException
{
return createReportArtifacts( projectId, reports, new File( pomLocation ) );
}
// TODO: share with createPluginArtifacts?
protected Set createReportArtifacts( String projectId,
List reports, File pomLocation )
throws ProjectBuildingException
{ {
Set pluginArtifacts = new HashSet(); Set pluginArtifacts = new HashSet();
@ -1152,10 +1200,25 @@ public class DefaultMavenProjectBuilder
return pluginArtifacts; return pluginArtifacts;
} }
// TODO: share with createPluginArtifacts? /**
* @deprecated use {@link #createExtensionArtifacts(String, List, File)}
* @param projectId
* @param extensions
* @param pomLocation absolute path of pom file
* @return
* @throws ProjectBuildingException
*/
protected Set createExtensionArtifacts( String projectId, protected Set createExtensionArtifacts( String projectId,
List extensions, String pomLocation ) List extensions, String pomLocation )
throws ProjectBuildingException throws ProjectBuildingException
{
return createExtensionArtifacts( projectId, extensions, new File( pomLocation ) );
}
// TODO: share with createPluginArtifacts?
protected Set createExtensionArtifacts( String projectId,
List extensions, File pomLocation )
throws ProjectBuildingException
{ {
Set extensionArtifacts = new HashSet(); Set extensionArtifacts = new HashSet();

View File

@ -1,15 +1,7 @@
package org.apache.maven.project; package org.apache.maven.project;
import org.apache.maven.artifact.InvalidRepositoryException; import java.io.File;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import java.net.URI;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.profiles.activation.ProfileActivationException;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.project.interpolation.ModelInterpolationException;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import java.io.IOException;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -39,149 +31,106 @@ public class ProjectBuildingException
{ {
private final String projectId; private final String projectId;
private String pomLocation; private URI pomUri;
public ProjectBuildingException( String projectId, public ProjectBuildingException( String projectId, String message )
String message )
{ {
super( message ); this( message, projectId, (File) null );
this.projectId = projectId;
} }
protected ProjectBuildingException( String projectId, /**
String message, * @deprecated use {@link #ProjectBuildingException(String, String, File)}
String pomLocation ) * @param projectId
* @param message
* @param pomLocation absolute path of the pom file
*/
protected ProjectBuildingException( String projectId, String message, String pomLocation )
{ {
super( message ); this( projectId, message, pomLocation, null );
this.projectId = projectId;
this.pomLocation = pomLocation;
} }
public ProjectBuildingException( String projectId, /**
String message, * @deprecated use {@link #ProjectBuildingException(String, String, File, Throwable)}
String pomLocation, * @param projectId
ProfileActivationException cause ) * @param message
* @param pomLocation absolute path of the pom file
* @param cause
*/
public ProjectBuildingException( String projectId, String message, String pomLocation, Throwable cause )
{
this( projectId, message, new File( pomLocation ), null );
}
/**
*
* @param projectId
* @param message
* @param pomFile pom file location
*/
public ProjectBuildingException( String projectId, String message, File pomFile )
{
this( projectId, message, pomFile, null );
}
/**
*
* @param projectId
* @param message
* @param cause
*/
public ProjectBuildingException( String projectId, String message, Throwable cause )
{
this( projectId, message, (URI) null, cause );
}
/**
* @param projectId
* @param message
* @param pomFile pom file location
* @param cause
*/
public ProjectBuildingException( String projectId, String message, File pomFile, Throwable cause )
{
this( projectId, message, pomFile.toURI(), cause );
}
/**
* Equivalent to new ProjectBuildingException(projectId, message, pomUri, null)
* @see #ProjectBuildingException(String, String, URI, Throwable)
*/
public ProjectBuildingException( String projectId, String message, URI pomUri )
{
this( projectId, message, pomUri, null );
}
/**
* @param projectId
* @param message
* @param pomUri location of the pom
* @param cause
*/
public ProjectBuildingException( String projectId, String message, URI pomUri, Throwable cause )
{ {
super( message, cause ); super( message, cause );
this.projectId = projectId; this.projectId = projectId;
this.pomLocation = pomLocation; this.pomUri = pomUri;
} }
public ProjectBuildingException( String projectId, public URI getPomUri()
String message,
String pomLocation,
IOException cause )
{ {
super( message, cause ); return pomUri;
this.projectId = projectId;
this.pomLocation = pomLocation;
}
public ProjectBuildingException( String projectId,
String message,
String pomLocation,
XmlPullParserException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
}
protected ProjectBuildingException( String projectId,
String message,
XmlPullParserException cause )
{
super( message, cause );
this.projectId = projectId;
}
public ProjectBuildingException( String projectId,
String message,
String pomLocation,
InvalidRepositoryException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
}
public ProjectBuildingException( String projectId,
String message,
InvalidRepositoryException cause )
{
super( message, cause );
this.projectId = projectId;
}
public ProjectBuildingException( String projectId,
String message,
ArtifactResolutionException cause )
{
super( message, cause );
this.projectId = projectId;
}
public ProjectBuildingException( String projectId,
String message,
ArtifactNotFoundException cause )
{
super( message, cause );
this.projectId = projectId;
}
public ProjectBuildingException( String projectId,
String message,
String pomLocation,
ArtifactResolutionException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
}
public ProjectBuildingException( String projectId,
String message,
String pomLocation,
ArtifactNotFoundException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
}
public ProjectBuildingException( String projectId,
String message,
String pomLocation,
InvalidVersionSpecificationException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
}
public ProjectBuildingException( String projectId,
String message,
String pomLocation,
InvalidDependencyVersionException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
}
protected ProjectBuildingException( String projectId,
String message,
String pomLocation,
ModelInterpolationException cause )
{
super( message, cause );
this.projectId = projectId;
this.pomLocation = pomLocation;
} }
/**
* @deprecated use {@link #getPomUri()}
*/
public String getPomLocation() public String getPomLocation()
{ {
return pomLocation; if ( "file".equals( getPomUri().getScheme() ) )
{
return new File( getPomUri() ).getAbsolutePath();
}
return getPomUri().toString();
} }
public String getProjectId() public String getProjectId()
@ -192,7 +141,6 @@ public class ProjectBuildingException
public String getMessage() public String getMessage()
{ {
return super.getMessage() + " for project " + projectId return super.getMessage() + " for project " + projectId
+ ( ( pomLocation == null ? "" : " at " + pomLocation ) ); + ( ( getPomUri() == null ? "" : " at " + getPomLocation() ) );
} }
} }

View File

@ -198,11 +198,11 @@ public class DefaultModelLineageBuilder
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new ProjectBuildingException( "unknown", "Failed to read model from: " + pomFile, pomFile.getAbsolutePath(), e ); throw new ProjectBuildingException( "unknown", "Failed to read model from: " + pomFile, pomFile, e );
} }
catch ( XmlPullParserException e ) catch ( XmlPullParserException e )
{ {
throw new ProjectBuildingException( "unknown", "Failed to parse model from: " + pomFile, pomFile.getAbsolutePath(), e ); throw new ProjectBuildingException( "unknown", "Failed to parse model from: " + pomFile, pomFile, e );
} }
finally finally
{ {
@ -251,7 +251,7 @@ public class DefaultModelLineageBuilder
catch ( InvalidRepositoryException e ) catch ( InvalidRepositoryException e )
{ {
throw new ProjectBuildingException( model.getId(), "Failed to create ArtifactRepository list for: " throw new ProjectBuildingException( model.getId(), "Failed to create ArtifactRepository list for: "
+ pomFile, pomFile.getAbsolutePath(), e ); + pomFile, pomFile, e );
} }
} }