From f3398365f1ff977e11db6ec0e242031502751d7d Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Gonzalez Date: Tue, 23 Oct 2007 23:23:19 +0000 Subject: [PATCH] Kept John's constructors but still use File/URL instead of String git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@587691 13f79535-47bb-0310-9956-ffa450edef68 --- .../project/DefaultMavenProjectBuilder.java | 105 +++++-- .../project/InvalidProjectModelException.java | 106 +++++-- .../project/ProjectBuildingException.java | 286 ++++++++++++------ 3 files changed, 357 insertions(+), 140 deletions(-) diff --git a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index 40c18523dc..6b4196b705 100644 --- a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -78,6 +78,8 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; import java.io.StringReader; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -209,7 +211,8 @@ public class DefaultMavenProjectBuilder 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; @@ -289,7 +292,7 @@ public class DefaultMavenProjectBuilder { throw new ProjectBuildingException( projectId, "Unable to build project due to an invalid dependency version: " + - e.getMessage(), projectDescriptor.getAbsolutePath(), e ); + e.getMessage(), projectDescriptor, e ); } ArtifactResolutionRequest request = new ArtifactResolutionRequest() @@ -371,7 +374,7 @@ public class DefaultMavenProjectBuilder catch ( InvalidVersionSpecificationException e ) { 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 ); - MavenProject project = buildInternal( projectDescriptor.getAbsolutePath(), + MavenProject project = buildInternal( projectDescriptor, model, localRepository, buildArtifactRepositories( getSuperModel() ), @@ -526,7 +529,7 @@ public class DefaultMavenProjectBuilder // jvz:note // 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. - private MavenProject buildInternal( String pomLocation, + private MavenProject buildInternal( File pomLocation, Model model, ArtifactRepository localRepository, List parentSearchRepositories, @@ -554,7 +557,7 @@ public class DefaultMavenProjectBuilder } 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(); @@ -645,11 +648,11 @@ public class DefaultMavenProjectBuilder } catch ( ModelInterpolationException e ) { - throw new InvalidProjectModelException( projectId, pomLocation, e.getMessage(), e ); + throw new InvalidProjectModelException( projectId, e.getMessage(), pomLocation, 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 ); @@ -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 * and projects are not cached or reused */ - private MavenProject processProjectLogic( String pomLocation, + private MavenProject processProjectLogic( File pomLocation, MavenProject project, File pomFile, boolean strict ) @@ -882,7 +885,7 @@ public class DefaultMavenProjectBuilder if ( validationResult.getMessageCount() > 0 ) { - throw new InvalidProjectModelException( projectId, pomLocation, "Failed to validate POM", + throw new InvalidProjectModelException( projectId, "Failed to validate POM", pomLocation, validationResult ); } @@ -998,17 +1001,17 @@ public class DefaultMavenProjectBuilder try { reader = ReaderFactory.newXmlReader( file ); - return readModel( projectId, file.getAbsolutePath(), reader, strict ); + return readModel( projectId, file.toURI(), reader, strict ); } catch ( FileNotFoundException e ) { 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 ) { 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 { @@ -1017,7 +1020,7 @@ public class DefaultMavenProjectBuilder } private Model readModel( String projectId, - String pomLocation, + URI pomLocation, Reader reader, boolean strict ) throws IOException, InvalidProjectModelException @@ -1026,7 +1029,7 @@ public class DefaultMavenProjectBuilder if ( modelSource.indexOf( "" + 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 ); @@ -1037,8 +1040,8 @@ public class DefaultMavenProjectBuilder } catch ( XmlPullParserException e ) { - throw new InvalidProjectModelException( projectId, pomLocation, - "Parse error reading POM. Reason: " + e.getMessage(), e ); + throw new InvalidProjectModelException( projectId, "Parse error reading POM. Reason: " + e.getMessage(), + pomLocation, e ); } } @@ -1048,15 +1051,22 @@ public class DefaultMavenProjectBuilder throws ProjectBuildingException { Reader reader = null; + URI uri = null; try { + uri = url.toURI(); reader = ReaderFactory.newXmlReader( url.openStream() ); - return readModel( projectId, url.toExternalForm(), reader, strict ); + return readModel( projectId, uri, reader, strict ); } catch ( IOException e ) { 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 { @@ -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, List plugins, String pomLocation ) 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(); @@ -1106,10 +1139,25 @@ public class DefaultMavenProjectBuilder 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, List reports, String pomLocation ) 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(); @@ -1152,10 +1200,25 @@ public class DefaultMavenProjectBuilder 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, List extensions, String pomLocation ) 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(); diff --git a/maven-project/src/main/java/org/apache/maven/project/InvalidProjectModelException.java b/maven-project/src/main/java/org/apache/maven/project/InvalidProjectModelException.java index ddb14d3124..91109aec11 100644 --- a/maven-project/src/main/java/org/apache/maven/project/InvalidProjectModelException.java +++ b/maven-project/src/main/java/org/apache/maven/project/InvalidProjectModelException.java @@ -19,6 +19,9 @@ package org.apache.maven.project; * under the License. */ +import java.io.File; +import java.net.URI; + import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.project.interpolation.ModelInterpolationException; import org.apache.maven.project.validation.ModelValidationResult; @@ -29,43 +32,94 @@ public class InvalidProjectModelException { private ModelValidationResult validationResult; - public InvalidProjectModelException( String projectId, - String pomLocation, - String message, + /** + * + * @param projectId + * @param message + * @param pomLocation pom location + */ + public InvalidProjectModelException( String projectId, String message, URI pomLocation ) + { + super( projectId, message, pomLocation ); + } + + public InvalidProjectModelException( String projectId, String message, File pomLocation ) + { + super( projectId, message, pomLocation ); + } + + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + * @param projectId + * @param pomLocation absolute path of the pom file + * @param message + * @param validationResult + */ + public InvalidProjectModelException( String projectId, String pomLocation, String message, + ModelValidationResult validationResult ) + { + this( projectId, message, new File( pomLocation ), validationResult ); + } + + public InvalidProjectModelException( String projectId, String message, File pomFile, + ModelValidationResult validationResult ) + { + super( projectId, message, pomFile ); + + this.validationResult = validationResult; + } + + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + * @param projectId + * @param pomLocation absolute path of the pom file + * @param message + */ + public InvalidProjectModelException( String projectId, String pomLocation, String message ) + { + this( projectId, message, new File( pomLocation ) ); + } + + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public InvalidProjectModelException( String projectId, String pomLocation, String message, + ModelInterpolationException cause ) + { + this( projectId, message, new File( pomLocation ), cause ); + } + + public InvalidProjectModelException( String projectId, String message, File pomLocation, ModelInterpolationException cause ) { super( projectId, message, pomLocation, cause ); } - public InvalidProjectModelException( String projectId, - String pomLocation, - String message, + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public InvalidProjectModelException( String projectId, String pomLocation, String message, + InvalidRepositoryException cause ) + { + this( projectId, message, new File( pomLocation ), cause ); + } + + public InvalidProjectModelException( String projectId, String message, File pomLocation, InvalidRepositoryException cause ) { super( projectId, message, pomLocation, cause ); } - public InvalidProjectModelException( String projectId, - String pomLocation, - String message, - ModelValidationResult validationResult ) - { - super( projectId, message, pomLocation ); - - this.validationResult = validationResult; - } - - public InvalidProjectModelException( String projectId, - String pomLocation, - String message ) - { - super( projectId, message, pomLocation ); - } - - public InvalidProjectModelException( String projectId, - String pomLocation, - String message, + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public InvalidProjectModelException( String projectId, String pomLocation, String message, XmlPullParserException cause ) + { + this( projectId, message, new File( pomLocation ).toURI(), cause ); + } + + public InvalidProjectModelException( String projectId, String message, URI pomLocation, XmlPullParserException cause ) { super( projectId, message, pomLocation, cause ); } diff --git a/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java b/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java index a0246e989d..8b7d9dfab2 100644 --- a/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java +++ b/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java @@ -1,5 +1,10 @@ package org.apache.maven.project; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; @@ -9,8 +14,6 @@ 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 * or more contributor license agreements. See the NOTICE file @@ -39,149 +42,247 @@ public class ProjectBuildingException { private final String projectId; - private String pomLocation; + private URI pomUri; - public ProjectBuildingException( String projectId, - String message ) + public ProjectBuildingException( String projectId, String message ) { - super( message ); - this.projectId = projectId; + this( projectId, message, (URI) null ); } - protected ProjectBuildingException( String projectId, - String message, - String pomLocation ) + /** + * @deprecated use {@link File} or {@link URI} constructors for 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 = projectId; - this.pomLocation = pomLocation; + this( projectId, message, pomLocation, (Throwable) null ); } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + * @param projectId + * @param message + * @param pomLocation absolute path of the pom file + * @param cause + */ + private ProjectBuildingException( String projectId, String message, String pomLocation, Throwable cause ) + { + this( projectId, message, new File( pomLocation ), cause ); + } + + /** + * + * @param projectId + * @param message + * @param pomFile pom file location + */ + public ProjectBuildingException( String projectId, String message, File pomFile ) + { + this( projectId, message, pomFile, (Throwable) null ); + } + + /** + * + * @param projectId + * @param message + * @param cause + */ + private ProjectBuildingException( String projectId, String message, Throwable cause ) + { + this( projectId, message, (URI) null, cause ); + } + + public ProjectBuildingException( String projectId, String message, URISyntaxException cause ) + { + this( projectId, message, (Throwable) 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, (Throwable) null ); + } + + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, ProfileActivationException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, new File( pomLocation ), cause ); } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, - IOException cause ) + public ProjectBuildingException( String projectId, String message, File pomLocation, + ProfileActivationException cause ) + { + this( projectId, message, pomLocation, (Throwable) cause ); + } + + /** + * @param projectId + * @param message + * @param pomUri location of the pom + * @param cause + */ + private ProjectBuildingException( String projectId, String message, URI pomUri, Throwable cause ) { super( message, cause ); this.projectId = projectId; - this.pomLocation = pomLocation; + this.pomUri = pomUri; } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, - XmlPullParserException cause ) + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, IOException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, new File( pomLocation ), cause ); } - protected ProjectBuildingException( String projectId, - String message, - XmlPullParserException cause ) + public ProjectBuildingException( String projectId, String message, URI pomLocation, IOException cause ) { - super( message, cause ); - this.projectId = projectId; + this( projectId, message, pomLocation, (Throwable) cause ); } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, - InvalidRepositoryException cause ) + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, XmlPullParserException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, new File( pomLocation ), cause ); } - public ProjectBuildingException( String projectId, - String message, - InvalidRepositoryException cause ) + public ProjectBuildingException( String projectId, String message, URI pomLocation, XmlPullParserException cause ) { - super( message, cause ); - this.projectId = projectId; + this( message, projectId, pomLocation, (Throwable) cause ); } - public ProjectBuildingException( String projectId, - String message, + protected ProjectBuildingException( String projectId, String message, XmlPullParserException cause ) + { + this( message, projectId, (URI) null, cause ); + } + + public ProjectBuildingException( String projectId, String message, ArtifactResolutionException cause ) + { + this( projectId, message, (Throwable) cause ); + } + + public ProjectBuildingException( String projectId, String message, InvalidRepositoryException cause ) + { + this( projectId, message, (Throwable) cause ); + } + + public ProjectBuildingException( String projectId, String message, ArtifactNotFoundException cause ) + { + this( projectId, message, (Throwable) cause ); + } + + public ProjectBuildingException( String projectId, String message, File pomLocation, ArtifactResolutionException cause ) { - super( message, cause ); - this.projectId = projectId; + this( projectId, message, pomLocation, (Throwable) cause ); } - public ProjectBuildingException( String projectId, - String message, - ArtifactNotFoundException cause ) - { - super( message, cause ); - this.projectId = projectId; - } - - public ProjectBuildingException( String projectId, - String message, - String pomLocation, + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, ArtifactResolutionException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, pomLocation, (Throwable) cause ); } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, + public ProjectBuildingException( String projectId, String message, File pomLocation, ArtifactNotFoundException cause ) + { + this( projectId, message, pomLocation, (Throwable) cause ); + } + + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, ArtifactNotFoundException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, pomLocation, (Throwable) cause ); } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, + public ProjectBuildingException( String projectId, String message, File pomLocation, InvalidVersionSpecificationException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, pomLocation, (Throwable) cause ); } - public ProjectBuildingException( String projectId, - String message, - String pomLocation, + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, + InvalidVersionSpecificationException cause ) + { + this( projectId, message, pomLocation, (Throwable) cause ); + } + + public ProjectBuildingException( String projectId, String message, File pomLocation, InvalidDependencyVersionException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, pomLocation, (Throwable) cause ); } - protected ProjectBuildingException( String projectId, - String message, - String pomLocation, + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + public ProjectBuildingException( String projectId, String message, String pomLocation, + InvalidDependencyVersionException cause ) + { + this( projectId, message, pomLocation, (Throwable) cause ); + } + + protected ProjectBuildingException( String projectId, String message, File pomLocation, ModelInterpolationException cause ) { - super( message, cause ); - this.projectId = projectId; - this.pomLocation = pomLocation; + this( projectId, message, pomLocation, (Throwable) cause ); } + /** + * @deprecated use {@link File} or {@link URI} constructors for pomLocation + */ + protected ProjectBuildingException( String projectId, String message, String pomLocation, + ModelInterpolationException cause ) + { + this( projectId, message, pomLocation, (Throwable) cause ); + } + + public URI getPomUri() + { + return pomUri; + } + + /** + * @deprecated use {@link #getPomUri()} + */ public String getPomLocation() { - return pomLocation; + if ( "file".equals( getPomUri().getScheme() ) ) + { + return new File( getPomUri() ).getAbsolutePath(); + } + return getPomUri().toString(); } public String getProjectId() @@ -192,7 +293,6 @@ public class ProjectBuildingException public String getMessage() { return super.getMessage() + " for project " + projectId - + ( ( pomLocation == null ? "" : " at " + pomLocation ) ); + + ( ( getPomUri() == null ? "" : " at " + getPomLocation() ) ); } - }