You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/08/06 00:45:15 UTC
svn commit: r801449 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/project/
maven-model-builder/src/main/java/org/apache/maven/model/building/
Author: bentmann
Date: Wed Aug 5 22:45:14 2009
New Revision: 801449
URL: http://svn.apache.org/viewvc?rev=801449&view=rev
Log:
o Extended error reporting to provide the id of the POM that failed
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingResult.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingResult.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Wed Aug 5 22:45:14 2009
@@ -113,7 +113,7 @@
}
catch ( ModelBuildingException e )
{
- throw new ProjectBuildingException( "[unknown]", "Encountered POM errors", pomFile, e );
+ throw new ProjectBuildingException( e.getModelId(), "Encountered POM errors", pomFile, e );
}
Model model = result.getEffectiveModel();
@@ -327,7 +327,8 @@
}
catch ( ModelBuildingException e )
{
- results.add( new DefaultProjectBuildingResult( interimResult.pomFile, e.getProblems() ) );
+ results.add( new DefaultProjectBuildingResult( e.getModelId(), interimResult.pomFile,
+ e.getProblems() ) );
errors = true;
}
@@ -431,7 +432,7 @@
}
catch ( ModelBuildingException e )
{
- results.add( new DefaultProjectBuildingResult( pomFile, e.getProblems() ) );
+ results.add( new DefaultProjectBuildingResult( e.getModelId(), pomFile, e.getProblems() ) );
errors = true;
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingResult.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingResult.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingResult.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingResult.java Wed Aug 5 22:45:14 2009
@@ -34,6 +34,8 @@
implements ProjectBuildingResult
{
+ private String projectId;
+
private File pomFile;
private MavenProject project;
@@ -48,6 +50,7 @@
*/
public DefaultProjectBuildingResult( MavenProject project, List<ModelProblem> problems )
{
+ this.projectId = ( project != null ) ? project.getId() : "";
this.pomFile = ( project != null ) ? project.getFile() : null;
this.project = project;
this.problems = problems;
@@ -56,15 +59,22 @@
/**
* Creates a new result with the specified contents.
*
+ * @param projectId The
* @param pomFile The POM file from which the project was built, may be {@code null}.
* @param problems The problems that were encouterned, may be {@code null}.
*/
- public DefaultProjectBuildingResult( File pomFile, List<ModelProblem> problems )
+ public DefaultProjectBuildingResult( String projectId, File pomFile, List<ModelProblem> problems )
{
+ this.projectId = ( projectId != null ) ? projectId : "";
this.pomFile = pomFile;
this.problems = problems;
}
+ public String getProjectId()
+ {
+ return projectId;
+ }
+
public File getPomFile()
{
return pomFile;
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingResult.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingResult.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingResult.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingResult.java Wed Aug 5 22:45:14 2009
@@ -33,6 +33,15 @@
{
/**
+ * Gets the identifier of the project that could not be built. The general format of the identifier is {@code
+ * <groupId>:<artifactId>:<version>} but some of these coordinates may still be unknown at the point the exception
+ * is thrown so this information is merely meant to assist the user.
+ *
+ * @return The identifier of the project or an empty string if not known, never {@code null}.
+ */
+ String getProjectId();
+
+ /**
* Gets the POM file from which the project was built.
*
* @return The POM file or {@code null} if unknown.
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java Wed Aug 5 22:45:14 2009
@@ -121,6 +121,8 @@
Model inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems );
+ problems.setRootModel( inputModel );
+
ModelData resultData = new ModelData( inputModel );
List<ModelData> lineage = new ArrayList<ModelData>();
@@ -170,6 +172,7 @@
Model resultModel = resultData.getModel();
problems.setSourceHint( resultModel );
+ problems.setRootModel( resultModel );
resultModel = interpolateModel( resultModel, request, problems );
resultData.setModel( resultModel );
@@ -208,6 +211,7 @@
DefaultModelProblemCollector problems = new DefaultModelProblemCollector( result.getProblems() );
problems.setSourceHint( resultModel );
+ problems.setRootModel( resultModel );
modelPathTranslator.alignToBaseDirectory( resultModel, resultModel.getProjectDirectory(), request );
@@ -237,7 +241,7 @@
if ( hasErrors( problems.getProblems() ) )
{
- throw new ModelBuildingException( problems.getProblems() );
+ throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
return result;
@@ -274,13 +278,13 @@
{
problems.add( new ModelProblem( "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage(),
ModelProblem.Severity.FATAL, modelSource.getLocation(), e ) );
- throw new ModelBuildingException( problems.getProblems() );
+ throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
catch ( IOException e )
{
problems.add( new ModelProblem( "Non-readable POM " + modelSource.getLocation() + ": " + e.getMessage(),
ModelProblem.Severity.FATAL, modelSource.getLocation(), e ) );
- throw new ModelBuildingException( problems.getProblems() );
+ throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
model.setPomFile( pomFile );
@@ -517,11 +521,9 @@
}
catch ( UnresolvableModelException e )
{
- problems.add( new ModelProblem( "Non-resolvable parent POM "
- + ModelProblemUtils.toId( groupId, artifactId, version ) + ": " + e.getMessage(),
- ModelProblem.Severity.FATAL, ModelProblemUtils.toSourceHint( childModel ),
- e ) );
- throw new ModelBuildingException( problems.getProblems() );
+ problems.addFatalError( "Non-resolvable parent POM "
+ + ModelProblemUtils.toId( groupId, artifactId, version ) + ": " + e.getMessage(), e );
+ throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
Model parentModel = readModel( modelSource, null, request, problems );
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java Wed Aug 5 22:45:14 2009
@@ -43,6 +43,8 @@
private Model sourceModel;
+ private Model rootModel;
+
public DefaultModelProblemCollector( List<ModelProblem> problems )
{
this.problems = ( problems != null ) ? problems : new ArrayList<ModelProblem>();
@@ -74,11 +76,36 @@
return sourceHint;
}
+ public void setRootModel( Model rootModel )
+ {
+ this.rootModel = rootModel;
+ }
+
+ public Model getRootModel()
+ {
+ return rootModel;
+ }
+
+ public String getRootModelId()
+ {
+ return ModelProblemUtils.toId( rootModel );
+ }
+
public void add( ModelProblem problem )
{
problems.add( problem );
}
+ public void addFatalError( String message )
+ {
+ problems.add( new ModelProblem( message, ModelProblem.Severity.FATAL, getSourceHint() ) );
+ }
+
+ public void addFatalError( String message, Exception cause )
+ {
+ problems.add( new ModelProblem( message, ModelProblem.Severity.FATAL, getSourceHint(), cause ) );
+ }
+
public void addError( String message )
{
problems.add( new ModelProblem( message, ModelProblem.Severity.ERROR, getSourceHint() ) );
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java Wed Aug 5 22:45:14 2009
@@ -35,16 +35,21 @@
extends Exception
{
+ private final String modelId;
+
private final List<ModelProblem> problems;
/**
* Creates a new exception with the specified problems.
*
+ * @param modelId The identifier of the model that could not be built, may be {@code null}.
* @param problems The problems that causes this exception, may be {@code null}.
*/
- public ModelBuildingException( List<ModelProblem> problems )
+ public ModelBuildingException( String modelId, List<ModelProblem> problems )
{
- super( toMessage( problems ) );
+ super( toMessage( modelId, problems ) );
+
+ this.modelId = ( modelId != null ) ? modelId : "";
this.problems = new ArrayList<ModelProblem>();
if ( problems != null )
@@ -54,16 +59,28 @@
}
/**
+ * Gets the identifier of the POM whose effective model could not be built. The general format of the identifier is
+ * {@code <groupId>:<artifactId>:<version>} but some of these coordinates may still be unknown at the point the
+ * exception is thrown so this information is merely meant to assist the user.
+ *
+ * @return The identifier of the POM or an empty string if not known, never {@code null}.
+ */
+ public String getModelId()
+ {
+ return modelId;
+ }
+
+ /**
* Gets the problems that caused this exception.
*
* @return The problems that caused this exception, never {@code null}.
*/
public List<ModelProblem> getProblems()
{
- return this.problems;
+ return problems;
}
- private static String toMessage( List<ModelProblem> problems )
+ private static String toMessage( String modelId, List<ModelProblem> problems )
{
StringWriter buffer = new StringWriter( 1024 );
@@ -71,7 +88,13 @@
writer.print( problems.size() );
writer.print( ( problems.size() == 1 ) ? " problem was " : " problems were " );
- writer.println( "encountered during construction of the effective model:" );
+ writer.print( "encountered while building the effective model" );
+ if ( modelId != null && modelId.length() > 0 )
+ {
+ writer.print( " for " );
+ writer.print( modelId );
+ }
+ writer.println();
for ( ModelProblem problem : problems )
{
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java?rev=801449&r1=801448&r2=801449&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java Wed Aug 5 22:45:14 2009
@@ -34,11 +34,16 @@
/**
* Creates a user-friendly source hint for the specified model.
*
- * @param model The model to create a source hint for, must not be {@code null}.
+ * @param model The model to create a source hint for, may be {@code null}.
* @return The user-friendly source hint, never {@code null}.
*/
public static String toSourceHint( Model model )
{
+ if ( model == null )
+ {
+ return "";
+ }
+
StringBuilder buffer = new StringBuilder( 192 );
buffer.append( toId( model ) );
@@ -52,8 +57,13 @@
return buffer.toString();
}
- private static String toId( Model model )
+ public static String toId( Model model )
{
+ if ( model == null )
+ {
+ return "";
+ }
+
String groupId = model.getGroupId();
if ( groupId == null && model.getParent() != null )
{