Author: bentmann
Date: Thu Apr 15 15:31:08 2010
New Revision: 934451

URL: http://svn.apache.org/viewvc?rev=934451&view=rev
Log:
o Allowed inspection of erroneous model

Modified:
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java

Modified: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=934451&r1=934450&r2=934451&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 Thu Apr 15 15:31:08 2010
@@ -218,7 +218,8 @@ public class DefaultModelBuilder
                 message += currentData.getId();
 
                 problems.add( ModelProblem.Severity.FATAL, message, null );
-                throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
+                throw new ModelBuildingException( problems.getRootModel(), 
problems.getRootModelId(),
+                                                  problems.getProblems() );
             }
         }
 
@@ -315,7 +316,7 @@ public class DefaultModelBuilder
 
         if ( problems.hasErrors() )
         {
-            throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
+            throw new ModelBuildingException( resultModel, 
problems.getRootModelId(), problems.getProblems() );
         }
 
         return result;
@@ -386,7 +387,8 @@ public class DefaultModelBuilder
         catch ( ModelParseException e )
         {
             problems.add( Severity.FATAL, "Non-parseable POM " + 
modelSource.getLocation() + ": " + e.getMessage(), e );
-            throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
+            throw new ModelBuildingException( problems.getRootModel(), 
problems.getRootModelId(),
+                                              problems.getProblems() );
         }
         catch ( IOException e )
         {
@@ -404,7 +406,8 @@ public class DefaultModelBuilder
                 }
             }
             problems.add( Severity.FATAL, "Non-readable POM " + 
modelSource.getLocation() + ": " + msg, e );
-            throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
+            throw new ModelBuildingException( problems.getRootModel(), 
problems.getRootModelId(),
+                                              problems.getProblems() );
         }
 
         model.setPomFile( pomFile );
@@ -414,7 +417,8 @@ public class DefaultModelBuilder
 
         if ( problems.hasFatalErrors() )
         {
-            throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
+            throw new ModelBuildingException( problems.getRootModel(), 
problems.getRootModelId(),
+                                              problems.getProblems() );
         }
 
         return model;
@@ -694,7 +698,8 @@ public class DefaultModelBuilder
             problems.add( Severity.FATAL, "Non-resolvable parent POM "
                 + ModelProblemUtils.toId( groupId, artifactId, version ) + " 
for "
                 + ModelProblemUtils.toId( childModel ) + ": " + 
e.getMessage(), e );
-            throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
+            throw new ModelBuildingException( problems.getRootModel(), 
problems.getRootModelId(),
+                                              problems.getProblems() );
         }
 
         ModelBuildingRequest lenientRequest = request;

Modified: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java?rev=934451&r1=934450&r2=934451&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingException.java
 Thu Apr 15 15:31:08 2010
@@ -24,6 +24,8 @@ import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.maven.model.Model;
+
 /**
  * Signals one ore more errors during model building. The model builder tries 
to collect as many problems as possible
  * before eventually failing to provide callers with rich error information. 
Use {...@link #getProblems()} to query the
@@ -35,6 +37,8 @@ public class ModelBuildingException
     extends Exception
 {
 
+    private final Model model;
+
     private final String modelId;
 
     private final List<ModelProblem> problems;
@@ -42,13 +46,15 @@ public class ModelBuildingException
     /**
      * Creates a new exception with the specified problems.
      * 
+     * @param model The model that could not be built, may be {...@code null}.
      * @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( String modelId, List<ModelProblem> problems 
)
+    public ModelBuildingException( Model model, String modelId, 
List<ModelProblem> problems )
     {
         super( toMessage( modelId, problems ) );
 
+        this.model = model;
         this.modelId = ( modelId != null ) ? modelId : "";
 
         this.problems = new ArrayList<ModelProblem>();
@@ -59,6 +65,16 @@ public class ModelBuildingException
     }
 
     /**
+     * Gets the model that could not be built properly.
+     * 
+     * @return The erroneous model or {...@code null} if not available.
+     */
+    public Model getModel()
+    {
+        return model;
+    }
+
+    /**
      * 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.


Reply via email to