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 2010/05/31 12:24:21 UTC

svn commit: r949708 [1/2] - in /maven/maven-3/trunk: maven-compat/src/main/java/org/apache/maven/profiles/ maven-compat/src/main/java/org/apache/maven/project/validation/ maven-core/src/main/java/org/apache/maven/model/plugin/ maven-core/src/main/java/...

Author: bentmann
Date: Mon May 31 10:24:20 2010
New Revision: 949708

URL: http://svn.apache.org/viewvc?rev=949708&view=rev
Log:
[MNG-1803] Provide line number information when there are errors processing a pom.xml

o Merged feature branch

Modified:
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    maven/maven-3/trunk/maven-model-builder/   (props changed)
    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/DefaultModelBuildingRequest.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/   (props changed)
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
    maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
    maven/maven-3/trunk/maven-model-builder/src/main/mdo/   (props changed)
    maven/maven-3/trunk/maven-model-builder/src/main/resources/   (props changed)
    maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java
    maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/   (props changed)
    maven/maven-3/trunk/maven-model/pom.xml
    maven/maven-3/trunk/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java
    maven/maven-3/trunk/maven-model/src/main/mdo/maven.mdo

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Mon May 31 10:24:20 2010
@@ -20,6 +20,7 @@ package org.apache.maven.profiles;
  */
 
 import org.apache.maven.model.Activation;
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.ModelProblemCollector;
@@ -194,7 +195,7 @@ public class DefaultProfileManager
             profileSelector.getActiveProfiles( profilesById.values(), context, new ModelProblemCollector()
             {
 
-                public void add( Severity severity, String message, Exception cause )
+                public void add( Severity severity, String message, InputLocation location, Exception cause )
                 {
                     if ( !ModelProblem.Severity.WARNING.equals( severity ) )
                     {

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java Mon May 31 10:24:20 2010
@@ -19,6 +19,7 @@ package org.apache.maven.project.validat
  * under the License.
  */
 
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.DefaultModelBuildingRequest;
 import org.apache.maven.model.building.ModelBuildingRequest;
@@ -66,7 +67,7 @@ public class DefaultModelValidator
             this.result = result;
         }
 
-        public void add( Severity severity, String message, Exception cause )
+        public void add( Severity severity, String message, InputLocation location, Exception cause )
         {
             if ( !ModelProblem.Severity.WARNING.equals( severity ) )
             {

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java Mon May 31 10:24:20 2010
@@ -64,7 +64,7 @@ public class DefaultLifecycleBindingsInj
 
         if ( defaultPlugins == null )
         {
-            problems.add( Severity.ERROR, "Unknown packaging: " + packaging, null );
+            problems.add( Severity.ERROR, "Unknown packaging: " + packaging, model.getLocation( "packaging" ), null );
         }
         else if ( !defaultPlugins.isEmpty() )
         {

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java Mon May 31 10:24:20 2010
@@ -95,7 +95,7 @@ class DefaultModelBuildingListener
         }
         catch ( Exception e )
         {
-            event.getProblems().add( Severity.ERROR, "Invalid plugin repository: " + e.getMessage(), e );
+            event.getProblems().add( Severity.ERROR, "Invalid plugin repository: " + e.getMessage(), null, e );
         }
         project.setPluginArtifactRepositories( pluginRepositories );
 
@@ -111,11 +111,11 @@ class DefaultModelBuildingListener
             }
             catch ( PluginResolutionException e )
             {
-                event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), e );
+                event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), null, e );
             }
             catch ( PluginVersionResolutionException e )
             {
-                event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), e );
+                event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), null, e );
             }
 
             projectBuildingHelper.selectProjectRealm( project );
@@ -130,7 +130,7 @@ class DefaultModelBuildingListener
         }
         catch ( Exception e )
         {
-            event.getProblems().add( Severity.ERROR, "Invalid artifact repository: " + e.getMessage(), e );
+            event.getProblems().add( Severity.ERROR, "Invalid artifact repository: " + e.getMessage(), null, e );
         }
         project.setRemoteArtifactRepositories( remoteRepositories );
     }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Mon May 31 10:24:20 2010
@@ -110,6 +110,7 @@ public class DefaultProjectBuilder
     
                 request.setPomFile( pomFile );
                 request.setModelSource( modelSource );
+                request.setLocationTracking( pomFile != null );
     
                 ModelBuildingResult result;
                 try
@@ -310,6 +311,7 @@ public class DefaultProjectBuilder
 
             request.setPomFile( pomFile );
             request.setTwoPhaseBuilding( true );
+            request.setLocationTracking( true );
             request.setModelCache( modelCache );
 
             DefaultModelBuildingListener listener =

Propchange: maven/maven-3/trunk/maven-model-builder/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 31 10:24:20 2010
@@ -6,3 +6,4 @@
 /maven/components/sisbell-plugin-manager/maven-project-builder:738757-738972
 /maven/components/trunk/maven-model-builder:767708-768832
 /maven/components/trunk/maven-project-builder:688587-696625,696644-699681
+/maven/maven-3/branches/MNG-1803/maven-model-builder:935092-949699

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=949708&r1=949707&r2=949708&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 Mon May 31 10:24:20 2010
@@ -33,6 +33,8 @@ import java.util.Properties;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.InputLocation;
+import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
@@ -321,7 +323,7 @@ public class DefaultModelBuilder
                 }
                 message += currentData.getId();
 
-                problems.add( ModelProblem.Severity.FATAL, message, null );
+                problems.add( ModelProblem.Severity.FATAL, message, null, null );
                 throw new ModelBuildingException( problems.getRootModel(), problems.getRootModelId(),
                                                   problems.getProblems() );
             }
@@ -448,9 +450,11 @@ public class DefaultModelBuilder
         try
         {
             boolean strict = request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0;
+            InputSource source = request.isLocationTracking() ? new InputSource() : null;
 
             Map<String, Object> options = new HashMap<String, Object>();
             options.put( ModelProcessor.IS_STRICT, Boolean.valueOf( strict ) );
+            options.put( ModelProcessor.INPUT_SOURCE, source );
             options.put( ModelProcessor.SOURCE, modelSource );
 
             try
@@ -479,18 +483,24 @@ public class DefaultModelBuilder
                 if ( pomFile != null )
                 {
                     problems.add( Severity.ERROR, "Malformed POM " + modelSource.getLocation() + ": " + e.getMessage(),
-                                  e );
+                                  null, e );
                 }
                 else
                 {
                     problems.add( Severity.WARNING, "Malformed POM " + modelSource.getLocation() + ": "
-                        + e.getMessage(), e );
+                        + e.getMessage(), null, e );
                 }
             }
+
+            if ( source != null )
+            {
+                source.setModelId( ModelProblemUtils.toId( model ) );
+                source.setLocation( pomFile != null ? pomFile.getAbsolutePath() : null );
+            }
         }
         catch ( ModelParseException e )
         {
-            problems.add( Severity.FATAL, "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
+            problems.add( Severity.FATAL, "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage(), null, e );
             throw new ModelBuildingException( problems.getRootModel(), problems.getRootModelId(),
                                               problems.getProblems() );
         }
@@ -509,7 +519,7 @@ public class DefaultModelBuilder
                     msg = e.getClass().getSimpleName();
                 }
             }
-            problems.add( Severity.FATAL, "Non-readable POM " + modelSource.getLocation() + ": " + msg, e );
+            problems.add( Severity.FATAL, "Non-readable POM " + modelSource.getLocation() + ": " + msg, null, e );
             throw new ModelBuildingException( problems.getRootModel(), problems.getRootModelId(),
                                               problems.getProblems() );
         }
@@ -560,7 +570,8 @@ public class DefaultModelBuilder
             }
             catch ( InvalidRepositoryException e )
             {
-                problems.add( Severity.ERROR, "Invalid repository " + repository.getId() + ": " + e.getMessage(), e );
+                problems.add( Severity.ERROR, "Invalid repository " + repository.getId() + ": " + e.getMessage(),
+                              repository.getLocation( "" ), e );
             }
         }
     }
@@ -573,10 +584,11 @@ public class DefaultModelBuilder
             return;
         }
 
+        Map<String, Plugin> plugins = new HashMap<String, Plugin>();
         Map<String, String> versions = new HashMap<String, String>();
         Map<String, String> managedVersions = new HashMap<String, String>();
 
-        for ( int i = 0, n = lineage.size() - 1; i < n; i++ )
+        for ( int i = lineage.size() - 1; i >= 0; i-- )
         {
             Model model = lineage.get( i ).getModel();
             Build build = model.getBuild();
@@ -588,6 +600,7 @@ public class DefaultModelBuilder
                     if ( versions.get( key ) == null )
                     {
                         versions.put( key, plugin.getVersion() );
+                        plugins.put( key, plugin );
                     }
                 }
                 PluginManagement mngt = build.getPluginManagement();
@@ -609,7 +622,9 @@ public class DefaultModelBuilder
         {
             if ( versions.get( key ) == null && managedVersions.get( key ) == null )
             {
-                problems.add( Severity.WARNING, "'build.plugins.plugin.version' for " + key + " is missing.", null );
+                InputLocation location = plugins.get( key ).getLocation( "" );
+                problems.add( Severity.WARNING, "'build.plugins.plugin.version' for " + key + " is missing.", location,
+                              null );
             }
         }
     }
@@ -685,7 +700,7 @@ public class DefaultModelBuilder
             {
                 problems.add( Severity.ERROR, "Invalid packaging for parent POM "
                     + ModelProblemUtils.toSourceHint( parentModel ) + ", must be \"pom\" but is \""
-                    + parentModel.getPackaging() + "\"", null );
+                    + parentModel.getPackaging() + "\"", parentModel.getLocation( "packaging" ), null );
             }
         }
         else
@@ -730,7 +745,7 @@ public class DefaultModelBuilder
             problems.add( Severity.WARNING, "'parent.relativePath' of POM "
                 + ModelProblemUtils.toSourceHint( childModel ) + " points at " + groupId + ":" + artifactId
                 + " instead of " + parent.getGroupId() + ":" + parent.getArtifactId()
-                + ", please verify your project structure", null );
+                + ", please verify your project structure", childModel.getLocation( "parent" ), null );
             return null;
         }
         if ( version == null || !version.equals( parent.getVersion() ) )
@@ -801,7 +816,7 @@ public class DefaultModelBuilder
         {
             problems.add( Severity.FATAL, "Non-resolvable parent POM "
                 + ModelProblemUtils.toId( groupId, artifactId, version ) + " for "
-                + ModelProblemUtils.toId( childModel ) + ": " + e.getMessage(), e );
+                + ModelProblemUtils.toId( childModel ) + ": " + e.getMessage(), childModel.getLocation( "parent" ), e );
             throw new ModelBuildingException( problems.getRootModel(), problems.getRootModelId(),
                                               problems.getProblems() );
         }
@@ -877,7 +892,7 @@ public class DefaultModelBuilder
                     message += modelId + " -> ";
                 }
                 message += imported;
-                problems.add( Severity.ERROR, message, null );
+                problems.add( Severity.ERROR, message, null, null );
 
                 continue;
             }
@@ -902,7 +917,8 @@ public class DefaultModelBuilder
                 catch ( UnresolvableModelException e )
                 {
                     problems.add( Severity.ERROR, "Non-resolvable import POM "
-                        + ModelProblemUtils.toId( groupId, artifactId, version ) + ": " + e.getMessage(), e );
+                        + ModelProblemUtils.toId( groupId, artifactId, version ) + ": " + e.getMessage(),
+                                  dependency.getLocation( "" ), e );
                     continue;
                 }
 

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java Mon May 31 10:24:20 2010
@@ -47,6 +47,8 @@ public class DefaultModelBuildingRequest
 
     private boolean twoPhaseBuilding;
 
+    private boolean locationTracking;
+
     private List<Profile> profiles;
 
     private List<String> activeProfileIds;
@@ -155,6 +157,18 @@ public class DefaultModelBuildingRequest
         return this;
     }
 
+    public boolean isLocationTracking()
+    {
+        return locationTracking;
+    }
+
+    public DefaultModelBuildingRequest setLocationTracking( boolean locationTracking )
+    {
+        this.locationTracking = locationTracking;
+
+        return this;
+    }
+
     public List<Profile> getProfiles()
     {
         if ( profiles == null )

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java Mon May 31 10:24:20 2010
@@ -24,6 +24,7 @@ import java.util.EnumSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.io.ModelParseException;
@@ -139,25 +140,38 @@ class DefaultModelProblemCollector
         }
     }
 
-    public void add( Severity severity, String message, Exception cause )
+    public void add( Severity severity, String message, InputLocation location, Exception cause )
     {
         int line = -1;
         int column = -1;
+        String source = null;
+        String modelId = null;
 
-        if ( cause instanceof ModelParseException )
+        if ( location != null )
+        {
+            line = location.getLineNumber();
+            column = location.getColumnNumber();
+            if ( location.getSource() != null )
+            {
+                modelId = location.getSource().getModelId();
+                source = location.getSource().getLocation();
+            }
+        }
+
+        if ( modelId == null )
+        {
+            modelId = getModelId();
+            source = getSource();
+        }
+
+        if ( line <= 0 && column <= 0 && cause instanceof ModelParseException )
         {
             ModelParseException e = (ModelParseException) cause;
             line = e.getLineNumber();
             column = e.getColumnNumber();
         }
 
-        add( severity, message, line, column, cause );
-    }
-
-    private void add( ModelProblem.Severity severity, String message, int line, int column, Exception cause )
-    {
-        ModelProblem problem =
-            new DefaultModelProblem( message, severity, getSource(), line, column, getModelId(), cause );
+        ModelProblem problem = new DefaultModelProblem( message, severity, source, line, column, modelId, cause );
 
         add( problem );
     }

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java Mon May 31 10:24:20 2010
@@ -104,6 +104,18 @@ class FilterModelBuildingRequest
         return this;
     }
 
+    public boolean isLocationTracking()
+    {
+        return request.isLocationTracking();
+    }
+
+    public FilterModelBuildingRequest setLocationTracking( boolean locationTracking )
+    {
+        request.setLocationTracking( locationTracking );
+
+        return this;
+    }
+
     public List<Profile> getProfiles()
     {
         return request.getProfiles();

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java Mon May 31 10:24:20 2010
@@ -156,6 +156,22 @@ public interface ModelBuildingRequest
     ModelBuildingRequest setTwoPhaseBuilding( boolean twoPhaseBuilding );
 
     /**
+     * Indicates whether the model should track the line/column number of the model source from which it was parsed.
+     * 
+     * @return {@code true} if location tracking is enabled, {@code false} otherwise.
+     */
+    boolean isLocationTracking();
+
+    /**
+     * Enables/disables the tracking of line/column numbers for the model source being parsed. By default, input
+     * locations are not tracked.
+     * 
+     * @param locationTracking {@code true} to enable location tracking, {@code false} to disable it.
+     * @return This request, never {@code null}.
+     */
+    ModelBuildingRequest setLocationTracking( boolean locationTracking );
+
+    /**
      * Gets the external profiles that should be considered for model building.
      *
      * @return The external profiles that should be considered for model building, never {@code null}.

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java Mon May 31 10:24:20 2010
@@ -19,6 +19,8 @@ package org.apache.maven.model.building;
  * under the License.
  */
 
+import org.apache.maven.model.InputLocation;
+
 /**
  * Collects problems that are encountered during model building. The primary purpose of this component is to account for
  * the fact that the problem reporter has/should not have information about the calling context and hence cannot provide
@@ -36,8 +38,9 @@ public interface ModelProblemCollector
      * 
      * @param severity The severity of the problem, must not be {@code null}.
      * @param message The detail message of the problem, may be {@code null}.
+     * @param location The location of the problem, may be {@code null}.
      * @param cause The cause of the problem, may be {@code null}.
      */
-    void add( ModelProblem.Severity severity, String message, Exception cause );
+    void add( ModelProblem.Severity severity, String message, InputLocation location, Exception cause );
 
 }

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java Mon May 31 10:24:20 2010
@@ -126,8 +126,7 @@ public class DefaultInheritanceAssembler
                     {
                         // NOTE: Enforce recursive merge to trigger merging/inheritance logic for executions
                         Plugin plugin = new Plugin();
-                        plugin.setGroupId( element.getGroupId() );
-                        plugin.setArtifactId( element.getArtifactId() );
+                        plugin.setGroupId( null );
                         mergePlugin( plugin, element, sourceDominant, context );
 
                         Object key = getPluginKey( element );
@@ -209,8 +208,7 @@ public class DefaultInheritanceAssembler
                     {
                         // NOTE: Enforce recursive merge to trigger merging/inheritance logic for executions as well
                         ReportPlugin plugin = new ReportPlugin();
-                        plugin.setGroupId( element.getGroupId() );
-                        plugin.setArtifactId( element.getArtifactId() );
+                        plugin.setGroupId( null );
                         mergeReportPlugin( plugin, element, sourceDominant, context );
 
                         merged.put( key, plugin );

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java Mon May 31 10:24:20 2010
@@ -242,7 +242,7 @@ public abstract class AbstractStringBase
                 }
                 catch ( InterpolationException e )
                 {
-                    problems.add( Severity.ERROR, e.getMessage(), e );
+                    problems.add( Severity.ERROR, e.getMessage(), null, e );
                 }
 
                 interpolator.clearFeedback();

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java Mon May 31 10:24:20 2010
@@ -62,7 +62,7 @@ class ProblemDetectingValueSource
             {
                 msg += " Please use ${" + newPrefix + expression.substring( bannedPrefix.length() ) + "} instead.";
             }
-            problems.add( Severity.WARNING, msg, null );
+            problems.add( Severity.WARNING, msg, null, null );
         }
 
         return value;

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java Mon May 31 10:24:20 2010
@@ -283,12 +283,12 @@ public class StringSearchModelInterpolat
                             catch ( IllegalArgumentException e )
                             {
                                 problems.add( Severity.ERROR, "Failed to interpolate field3: " + currentField +
-                                    " on class: " + cls.getName(), e );
+                                    " on class: " + cls.getName(), null, e );
                             }
                             catch ( IllegalAccessException e )
                             {
                                 problems.add( Severity.ERROR, "Failed to interpolate field4: " + currentField +
-                                    " on class: " + cls.getName(), e );
+                                    " on class: " + cls.getName(), null, e );
                             }
                             finally
                             {

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java Mon May 31 10:24:20 2010
@@ -26,8 +26,10 @@ import java.io.InputStream;
 import java.io.Reader;
 import java.util.Map;
 
+import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.io.xpp3.MavenXpp3ReaderEx;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
@@ -68,7 +70,7 @@ public class DefaultModelReader
 
         try
         {
-            return read( input, isStrict( options ) );
+            return read( input, isStrict( options ), getSource( options ) );
         }
         finally
         {
@@ -86,7 +88,7 @@ public class DefaultModelReader
 
         try
         {
-            return read( ReaderFactory.newXmlReader( input ), isStrict( options ) );
+            return read( ReaderFactory.newXmlReader( input ), isStrict( options ), getSource( options ) );
         }
         finally
         {
@@ -100,13 +102,25 @@ public class DefaultModelReader
         return value == null || Boolean.parseBoolean( value.toString() );
     }
 
-    private Model read( Reader reader, boolean strict )
+    private InputSource getSource( Map<String, ?> options )
+    {
+        Object value = ( options != null ) ? options.get( INPUT_SOURCE ) : null;
+        return (InputSource) value;
+    }
+
+    private Model read( Reader reader, boolean strict, InputSource source )
         throws IOException
     {
         try
         {
-            MavenXpp3Reader r = new MavenXpp3Reader();
-            return r.read( reader, strict );
+            if ( source != null )
+            {
+                return new MavenXpp3ReaderEx().read( reader, strict, source );
+            }
+            else
+            {
+                return new MavenXpp3Reader().read( reader, strict );
+            }
         }
         catch ( XmlPullParserException e )
         {

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java Mon May 31 10:24:20 2010
@@ -34,6 +34,7 @@ import org.apache.maven.model.Model;
  */
 public interface ModelReader
 {
+
     /**
      * The key for the option to enable strict parsing. This option is of type {@link Boolean} and defaults to {@code
      * true}. If {@code false}, unknown elements will be ignored instead of causing a failure.
@@ -41,6 +42,13 @@ public interface ModelReader
     String IS_STRICT = "org.apache.maven.model.io.isStrict";
 
     /**
+     * The key for the option to enable tracking of line/column numbers. This option is of type
+     * {@link org.apache.maven.model.InputSource} and defaults to {@code null}. Providing an input source enables
+     * location tracking.
+     */
+    String INPUT_SOURCE = "org.apache.maven.model.io.inputSource";
+
+    /**
      * Reads the model from the specified file.
      *
      * @param input The file to deserialize the model from, must not be {@code null}.

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java Mon May 31 10:24:20 2010
@@ -114,9 +114,7 @@ public class DefaultPluginManagementInje
                 for ( PluginExecution element : src )
                 {
                     Object key = getPluginExecutionKey( element );
-                    PluginExecution clone = new PluginExecution();
-                    mergePluginExecution( clone, element, true, context );
-                    merged.put( key, clone );
+                    merged.put( key, element.clone() );
                 }
 
                 for ( PluginExecution element : tgt )

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java Mon May 31 10:24:20 2010
@@ -34,6 +34,7 @@ import org.apache.maven.model.Deployment
 import org.apache.maven.model.Developer;
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.Extension;
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.IssueManagement;
 import org.apache.maven.model.License;
 import org.apache.maven.model.MailingList;
@@ -85,6 +86,7 @@ public class MavenModelMerger
             if ( sourceDominant )
             {
                 target.setName( src );
+                target.setLocation( "name", source.getLocation( "name" ) );
             }
         }
     }
@@ -98,10 +100,12 @@ public class MavenModelMerger
             if ( sourceDominant )
             {
                 target.setUrl( src );
+                target.setLocation( "url", source.getLocation( "url" ) );
             }
             else if ( target.getUrl() == null )
             {
                 target.setUrl( appendPath( src, context ) );
+                target.setLocation( "url", source.getLocation( "url" ) );
             }
         }
     }
@@ -231,18 +235,27 @@ public class MavenModelMerger
         List<String> src = source.getModules();
         if ( !src.isEmpty() && sourceDominant )
         {
+            List<Integer> indices = new ArrayList<Integer>();
             List<String> tgt = target.getModules();
             Set<String> excludes = new LinkedHashSet<String>( tgt );
             List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
             merged.addAll( tgt );
-            for ( String s : src )
+            for ( int i = 0, n = tgt.size(); i < n; i++ )
+            {
+                indices.add( Integer.valueOf( i ) );
+            }
+            for ( int i = 0, n = src.size(); i < n; i++ )
             {
+                String s = src.get( i );
                 if ( !excludes.contains( s ) )
                 {
                     merged.add( s );
+                    indices.add( Integer.valueOf( ~i ) );
                 }
             }
             target.setModules( merged );
+            target.setLocation( "modules", InputLocation.merge( target.getLocation( "modules" ),
+                                                                source.getLocation( "modules" ), indices ) );
         }
     }
 
@@ -398,10 +411,12 @@ public class MavenModelMerger
             if ( sourceDominant )
             {
                 target.setUrl( src );
+                target.setLocation( "url", source.getLocation( "url" ) );
             }
             else if ( target.getUrl() == null )
             {
                 target.setUrl( appendPath( src, context ) );
+                target.setLocation( "url", source.getLocation( "url" ) );
             }
         }
     }
@@ -415,10 +430,12 @@ public class MavenModelMerger
             if ( sourceDominant )
             {
                 target.setUrl( src );
+                target.setLocation( "url", source.getLocation( "url" ) );
             }
             else if ( target.getUrl() == null )
             {
                 target.setUrl( appendPath( src, context ) );
+                target.setLocation( "url", source.getLocation( "url" ) );
             }
         }
     }
@@ -432,10 +449,12 @@ public class MavenModelMerger
             if ( sourceDominant )
             {
                 target.setConnection( src );
+                target.setLocation( "connection", source.getLocation( "connection" ) );
             }
             else if ( target.getConnection() == null )
             {
                 target.setConnection( appendPath( src, context ) );
+                target.setLocation( "connection", source.getLocation( "connection" ) );
             }
         }
     }
@@ -450,10 +469,12 @@ public class MavenModelMerger
             if ( sourceDominant )
             {
                 target.setDeveloperConnection( src );
+                target.setLocation( "developerConnection", source.getLocation( "developerConnection" ) );
             }
             else if ( target.getDeveloperConnection() == null )
             {
                 target.setDeveloperConnection( appendPath( src, context ) );
+                target.setLocation( "developerConnection", source.getLocation( "developerConnection" ) );
             }
         }
     }

Propchange: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 31 10:24:20 2010
@@ -5,3 +5,4 @@
 /maven/components/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/path:738757-738972
 /maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/path:751453-767358,767708-768832
 /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path:688587-696625,696644-699681
+/maven/maven-3/branches/MNG-1803/maven-model-builder/src/main/java/org/apache/maven/model/path:935092-949699

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java Mon May 31 10:24:20 2010
@@ -106,7 +106,8 @@ public class DefaultReportingConverter
         {
 
             problems.add( Severity.WARNING, "The <reporting> section is deprecated"
-                + ", please move the reports to the <configuration> section of the new Maven Site Plugin.", null );
+                + ", please move the reports to the <configuration> section of the new Maven Site Plugin.",
+                          reporting.getLocation( "" ), null );
         }
 
         for ( ReportPlugin plugin : reporting.getPlugins() )

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java Mon May 31 10:24:20 2010
@@ -113,7 +113,8 @@ public class DefaultProfileSelector
             }
             catch ( RuntimeException e )
             {
-                problems.add( Severity.ERROR, "Failed to determine activation for profile " + profile.getId(), e );
+                problems.add( Severity.ERROR, "Failed to determine activation for profile " + profile.getId(),
+                              profile.getLocation( "" ), e );
                 return false;
             }
         }

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java Mon May 31 10:24:20 2010
@@ -120,7 +120,7 @@ public class FileProfileActivator
         catch ( Exception e )
         {
             problems.add( Severity.ERROR, "Failed to interpolate file location " + path + " for profile "
-                + profile.getId() + ": " + e.getMessage(), e );
+                + profile.getId() + ": " + e.getMessage(), file.getLocation( missing ? "missing" : "exists" ), e );
             return false;
         }
 

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java Mon May 31 10:24:20 2010
@@ -57,7 +57,7 @@ public class JdkVersionProfileActivator
                 if ( version.length() <= 0 )
                 {
                     problems.add( Severity.ERROR, "Failed to determine Java version for profile " + profile.getId(),
-                                  null );
+                                  activation.getLocation( "jdk" ), null );
                     return false;
                 }
 

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java Mon May 31 10:24:20 2010
@@ -62,7 +62,7 @@ public class PropertyProfileActivator
                 if ( name == null || name.length() <= 0 )
                 {
                     problems.add( Severity.ERROR, "The property name is required to activate the profile "
-                        + profile.getId(), null );
+                        + profile.getId(), property.getLocation( "" ), null );
                     return false;
                 }
 

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Mon May 31 10:24:20 2010
@@ -31,6 +31,8 @@ import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.InputLocation;
+import org.apache.maven.model.InputLocationTracker;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
@@ -63,17 +65,17 @@ public class DefaultModelValidator
         Parent parent = model.getParent();
         if ( parent != null )
         {
-            validateStringNotEmpty( "parent.groupId", problems, Severity.FATAL, parent.getGroupId() );
+            validateStringNotEmpty( "parent.groupId", problems, Severity.FATAL, parent.getGroupId(), parent );
 
-            validateStringNotEmpty( "parent.artifactId", problems, Severity.FATAL, parent.getArtifactId() );
+            validateStringNotEmpty( "parent.artifactId", problems, Severity.FATAL, parent.getArtifactId(), parent );
 
-            validateStringNotEmpty( "parent.version", problems, Severity.FATAL, parent.getVersion() );
+            validateStringNotEmpty( "parent.version", problems, Severity.FATAL, parent.getVersion(), parent );
 
             if ( equals( parent.getGroupId(), model.getGroupId() )
                 && equals( parent.getArtifactId(), model.getArtifactId() ) )
             {
                 addViolation( problems, Severity.FATAL, "parent.artifactId", null, "must be changed"
-                    + ", the parent element cannot have the same groupId:artifactId as the project." );
+                    + ", the parent element cannot have the same groupId:artifactId as the project.", parent );
             }
         }
 
@@ -81,10 +83,10 @@ public class DefaultModelValidator
         {
             Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
-            validateEnum( "modelVersion", problems, Severity.ERROR, model.getModelVersion(), null, "4.0.0" );
-            validateStringNoExpression( "groupId", problems, Severity.WARNING, model.getGroupId() );
-            validateStringNoExpression( "artifactId", problems, Severity.WARNING, model.getArtifactId() );
-            validateStringNoExpression( "version", problems, Severity.WARNING, model.getVersion() );
+            validateEnum( "modelVersion", problems, Severity.ERROR, model.getModelVersion(), null, model, "4.0.0" );
+            validateStringNoExpression( "groupId", problems, Severity.WARNING, model.getGroupId(), model );
+            validateStringNoExpression( "artifactId", problems, Severity.WARNING, model.getArtifactId(), model );
+            validateStringNoExpression( "version", problems, Severity.WARNING, model.getVersion(), model );
 
             validateRawDependencies( problems, model.getDependencies(), "dependencies.dependency", request );
 
@@ -117,7 +119,7 @@ public class DefaultModelValidator
                 if ( !profileIds.add( profile.getId() ) )
                 {
                     addViolation( problems, errOn30, "profiles.profile.id", null,
-                                  "must be unique but found duplicate profile with id " + profile.getId() );
+                                  "must be unique but found duplicate profile with id " + profile.getId(), profile );
                 }
 
                 validateRawDependencies( problems, profile.getDependencies(), "profiles.profile[" + profile.getId()
@@ -157,7 +159,7 @@ public class DefaultModelValidator
             if ( existing != null )
             {
                 addViolation( problems, errOn31, prefix + "(groupId:artifactId)", null,
-                              "must be unique but found duplicate declaration of plugin " + key );
+                              "must be unique but found duplicate declaration of plugin " + key, plugin );
             }
             else
             {
@@ -172,7 +174,7 @@ public class DefaultModelValidator
                 {
                     addViolation( problems, Severity.ERROR, "build.plugins.plugin[" + plugin.getKey()
                         + "].executions.execution.id", null, "must be unique but found duplicate execution with id "
-                        + exec.getId() );
+                        + exec.getId(), exec );
                 }
             }
         }
@@ -180,20 +182,20 @@ public class DefaultModelValidator
 
     public void validateEffectiveModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems )
     {
-        validateStringNotEmpty( "modelVersion", problems, Severity.ERROR, model.getModelVersion() );
+        validateStringNotEmpty( "modelVersion", problems, Severity.ERROR, model.getModelVersion(), model );
 
-        validateId( "groupId", problems, model.getGroupId() );
+        validateId( "groupId", problems, model.getGroupId(), model );
 
-        validateId( "artifactId", problems, model.getArtifactId() );
+        validateId( "artifactId", problems, model.getArtifactId(), model );
 
-        validateStringNotEmpty( "packaging", problems, Severity.ERROR, model.getPackaging() );
+        validateStringNotEmpty( "packaging", problems, Severity.ERROR, model.getPackaging(), model );
 
         if ( !model.getModules().isEmpty() )
         {
             if ( !"pom".equals( model.getPackaging() ) )
             {
                 addViolation( problems, Severity.ERROR, "packaging", null, "with value '" + model.getPackaging()
-                    + "' is invalid. Aggregator projects " + "require 'pom' as packaging." );
+                    + "' is invalid. Aggregator projects " + "require 'pom' as packaging.", model );
             }
 
             for ( int i = 0, n = model.getModules().size(); i < n; i++ )
@@ -202,12 +204,13 @@ public class DefaultModelValidator
                 if ( StringUtils.isBlank( module ) )
                 {
                     addViolation( problems, Severity.WARNING, "modules.module[" + i + "]", null,
-                                  "has been specified without a path to the project directory." );
+                                  "has been specified without a path to the project directory.",
+                                  model.getLocation( "modules" ) );
                 }
             }
         }
 
-        validateStringNotEmpty( "version", problems, Severity.ERROR, model.getVersion() );
+        validateStringNotEmpty( "version", problems, Severity.ERROR, model.getVersion(), model );
 
         Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
@@ -228,7 +231,7 @@ public class DefaultModelValidator
                 if ( !modules.add( module ) )
                 {
                     addViolation( problems, Severity.ERROR, "modules.module[" + i + "]", null,
-                                  "specifies duplicate child module " + module );
+                                  "specifies duplicate child module " + module, model.getLocation( "modules" ) );
                 }
             }
 
@@ -240,18 +243,18 @@ public class DefaultModelValidator
                 for ( Plugin p : build.getPlugins() )
                 {
                     validateStringNotEmpty( "build.plugins.plugin.artifactId", problems, Severity.ERROR,
-                                            p.getArtifactId() );
+                                            p.getArtifactId(), p );
 
-                    validateStringNotEmpty( "build.plugins.plugin.groupId", problems, Severity.ERROR, p.getGroupId() );
+                    validateStringNotEmpty( "build.plugins.plugin.groupId", problems, Severity.ERROR, p.getGroupId(), p );
 
-                    validatePluginVersion( "build.plugins.plugin.version", problems, p.getVersion(), p.getKey(),
+                    validatePluginVersion( "build.plugins.plugin.version", problems, p.getVersion(), p.getKey(), p,
                                            request );
 
-                    validateBoolean( "build.plugins.plugin.inherited", problems, errOn30, p.getInherited(),
-                                     p.getKey() );
+                    validateBoolean( "build.plugins.plugin.inherited", problems, errOn30, p.getInherited(), p.getKey(),
+                                     p );
 
                     validateBoolean( "build.plugins.plugin.extensions", problems, errOn30, p.getExtensions(),
-                                     p.getKey() );
+                                     p.getKey(), p );
 
                     validateEffectivePluginDependencies( problems, p, request );
                 }
@@ -267,13 +270,13 @@ public class DefaultModelValidator
                 for ( ReportPlugin p : reporting.getPlugins() )
                 {
                     validateStringNotEmpty( "reporting.plugins.plugin.artifactId", problems, Severity.ERROR,
-                                            p.getArtifactId() );
+                                            p.getArtifactId(), p );
 
                     validateStringNotEmpty( "reporting.plugins.plugin.groupId", problems, Severity.ERROR,
-                                            p.getGroupId() );
+                                            p.getGroupId(), p );
 
                     validateStringNotEmpty( "reporting.plugins.plugin.version", problems, errOn31, p.getVersion(),
-                                            p.getKey() );
+                                            p.getKey(), p );
                 }
             }
 
@@ -293,7 +296,7 @@ public class DefaultModelValidator
                 if ( distMgmt.getStatus() != null )
                 {
                     addViolation( problems, Severity.ERROR, "distributionManagement.status", null,
-                                  "must not be specified." );
+                                  "must not be specified.", distMgmt );
                 }
 
                 validateRepository( problems, distMgmt.getRepository(), "distributionManagement.repository", request );
@@ -319,7 +322,7 @@ public class DefaultModelValidator
                 && StringUtils.isNotEmpty( dependency.getClassifier() ) )
             {
                 addViolation( problems, errOn30, prefix + ".classifier", key,
-                              "must be empty, imported POM cannot have a classifier." );
+                              "must be empty, imported POM cannot have a classifier.", dependency );
             }
             else if ( "system".equals( dependency.getScope() ) )
             {
@@ -327,7 +330,7 @@ public class DefaultModelValidator
                 if ( StringUtils.isNotEmpty( sysPath ) && !hasExpression( sysPath ) )
                 {
                     addViolation( problems, Severity.WARNING, prefix + ".systemPath", key,
-                                  "should use a variable instead of a hard-coded path " + sysPath );
+                                  "should use a variable instead of a hard-coded path " + sysPath, dependency );
                 }
             }
 
@@ -350,7 +353,7 @@ public class DefaultModelValidator
                 }
 
                 addViolation( problems, errOn31, prefix + ".(groupId:artifactId:type:classifier)", null,
-                              "must be unique: " + key + " -> " + msg );
+                              "must be unique: " + key + " -> " + msg, dependency );
             }
             else
             {
@@ -372,17 +375,17 @@ public class DefaultModelValidator
 
             if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
             {
-                validateBoolean( prefix + "optional", problems, errOn30, d.getOptional(), d.getManagementKey() );
+                validateBoolean( prefix + "optional", problems, errOn30, d.getOptional(), d.getManagementKey(), d );
 
                 if ( !management )
                 {
-                    validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey() );
+                    validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d );
 
                     /*
                      * TODO: Extensions like Flex Mojos use custom scopes like "merged", "internal", "external", etc. In
                      * order to don't break backward-compat with those, only warn but don't error out.
                      */
-                    validateEnum( prefix + "scope", problems, Severity.WARNING, d.getScope(), d.getManagementKey(),
+                    validateEnum( prefix + "scope", problems, Severity.WARNING, d.getScope(), d.getManagementKey(), d,
                                   "provided", "compile", "runtime", "test", "system" );
                 }
             }
@@ -404,9 +407,9 @@ public class DefaultModelValidator
             {
                 validateEffectiveDependency( problems, d, false, prefix, request );
 
-                validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey() );
+                validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d );
 
-                validateEnum( prefix + "scope", problems, errOn30, d.getScope(), d.getManagementKey(), "compile",
+                validateEnum( prefix + "scope", problems, errOn30, d.getScope(), d.getManagementKey(), d, "compile",
                               "runtime", "system" );
             }
         }
@@ -415,15 +418,16 @@ public class DefaultModelValidator
     private void validateEffectiveDependency( ModelProblemCollector problems, Dependency d, boolean management,
                                               String prefix, ModelBuildingRequest request )
     {
-        validateId( prefix + "artifactId", problems, d.getArtifactId(), d.getManagementKey() );
+        validateId( prefix + "artifactId", problems, d.getArtifactId(), d.getManagementKey(), d );
 
-        validateId( prefix + "groupId", problems, d.getGroupId(), d.getManagementKey() );
+        validateId( prefix + "groupId", problems, d.getGroupId(), d.getManagementKey(), d );
 
         if ( !management )
         {
-            validateStringNotEmpty( prefix + "type", problems, Severity.ERROR, d.getType(), d.getManagementKey() );
+            validateStringNotEmpty( prefix + "type", problems, Severity.ERROR, d.getType(), d.getManagementKey(), d );
 
-            validateStringNotEmpty( prefix + "version", problems, Severity.ERROR, d.getVersion(), d.getManagementKey() );
+            validateStringNotEmpty( prefix + "version", problems, Severity.ERROR, d.getVersion(), d.getManagementKey(),
+                                    d );
         }
 
         if ( "system".equals( d.getScope() ) )
@@ -432,7 +436,7 @@ public class DefaultModelValidator
 
             if ( StringUtils.isEmpty( systemPath ) )
             {
-                addViolation( problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(), "is missing." );
+                addViolation( problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(), "is missing.", d );
             }
             else
             {
@@ -440,7 +444,7 @@ public class DefaultModelValidator
                 if ( !sysFile.isAbsolute() )
                 {
                     addViolation( problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(),
-                                  "must specify an absolute path but is " + systemPath );
+                                  "must specify an absolute path but is " + systemPath, d );
                 }
                 else if ( !sysFile.isFile() )
                 {
@@ -452,14 +456,14 @@ public class DefaultModelValidator
                     {
                         msg += ". Please verify that you run Maven using a JDK and not just a JRE.";
                     }
-                    addViolation( problems, Severity.WARNING, prefix + "systemPath", d.getManagementKey(), msg );
+                    addViolation( problems, Severity.WARNING, prefix + "systemPath", d.getManagementKey(), msg, d );
                 }
             }
         }
         else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
         {
             addViolation( problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(), "must be omitted."
-                + " This field may only be specified for a dependency with system scope." );
+                + " This field may only be specified for a dependency with system scope.", d );
         }
     }
 
@@ -470,10 +474,10 @@ public class DefaultModelValidator
 
         for ( Repository repository : repositories )
         {
-            validateStringNotEmpty( prefix + ".id", problems, Severity.ERROR, repository.getId() );
+            validateStringNotEmpty( prefix + ".id", problems, Severity.ERROR, repository.getId(), repository );
 
             validateStringNotEmpty( prefix + "[" + repository.getId() + "].url", problems, Severity.ERROR,
-                                    repository.getUrl() );
+                                    repository.getUrl(), repository );
 
             String key = repository.getId();
 
@@ -484,7 +488,7 @@ public class DefaultModelValidator
                 Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
                 addViolation( problems, errOn30, prefix + ".id", null, "must be unique: " + repository.getId() + " -> "
-                    + existing.getUrl() + " vs " + repository.getUrl() );
+                    + existing.getUrl() + " vs " + repository.getUrl(), repository );
             }
             else
             {
@@ -503,12 +507,12 @@ public class DefaultModelValidator
                 Severity errOn31 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
                 addViolation( problems, errOn31, prefix + ".id", null, "must not be 'local'"
                     + ", this identifier is reserved for the local repository"
-                    + ", using it for other repositories will corrupt your repository metadata." );
+                    + ", using it for other repositories will corrupt your repository metadata.", repository );
             }
             if ( "legacy".equals( repository.getLayout() ) )
             {
                 addViolation( problems, Severity.WARNING, prefix + ".layout", repository.getId(),
-                              "uses the deprecated value 'legacy'." );
+                              "uses the deprecated value 'legacy'.", repository );
             }
         }
     }
@@ -519,10 +523,10 @@ public class DefaultModelValidator
 
         for ( Resource resource : resources )
         {
-            validateStringNotEmpty( prefix + ".directory", problems, Severity.ERROR, resource.getDirectory() );
+            validateStringNotEmpty( prefix + ".directory", problems, Severity.ERROR, resource.getDirectory(), resource );
 
             validateBoolean( prefix + ".filtering", problems, errOn30, resource.getFiltering(),
-                             resource.getDirectory() );
+                             resource.getDirectory(), resource );
         }
     }
 
@@ -530,14 +534,15 @@ public class DefaultModelValidator
     // Field validation
     // ----------------------------------------------------------------------
 
-    private boolean validateId( String fieldName, ModelProblemCollector problems, String id )
+    private boolean validateId( String fieldName, ModelProblemCollector problems, String id, InputLocationTracker tracker )
     {
-        return validateId( fieldName, problems, id, null );
+        return validateId( fieldName, problems, id, null, tracker );
     }
 
-    private boolean validateId( String fieldName, ModelProblemCollector problems, String id, String sourceHint )
+    private boolean validateId( String fieldName, ModelProblemCollector problems, String id, String sourceHint,
+                                InputLocationTracker tracker )
     {
-        if ( !validateStringNotEmpty( fieldName, problems, Severity.ERROR, id, sourceHint ) )
+        if ( !validateStringNotEmpty( fieldName, problems, Severity.ERROR, id, sourceHint, tracker ) )
         {
             return false;
         }
@@ -547,21 +552,21 @@ public class DefaultModelValidator
             if ( !match )
             {
                 addViolation( problems, Severity.ERROR, fieldName, sourceHint, "with value '" + id
-                    + "' does not match a valid id pattern." );
+                    + "' does not match a valid id pattern.", tracker );
             }
             return match;
         }
     }
 
     private boolean validateStringNoExpression( String fieldName, ModelProblemCollector problems, Severity severity,
-                                                String string )
+                                                String string, InputLocationTracker tracker )
     {
         if ( !hasExpression( string ) )
         {
             return true;
         }
 
-        addViolation( problems, severity, fieldName, null, "contains an expression but should be a constant." );
+        addViolation( problems, severity, fieldName, null, "contains an expression but should be a constant.", tracker );
 
         return false;
     }
@@ -572,9 +577,9 @@ public class DefaultModelValidator
     }
 
     private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, Severity severity,
-                                            String string )
+                                            String string, InputLocationTracker tracker )
     {
-        return validateStringNotEmpty( fieldName, problems, severity, string, null );
+        return validateStringNotEmpty( fieldName, problems, severity, string, null, tracker );
     }
 
     /**
@@ -586,9 +591,9 @@ public class DefaultModelValidator
      * </ul>
      */
     private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, Severity severity,
-                                            String string, String sourceHint )
+                                            String string, String sourceHint, InputLocationTracker tracker )
     {
-        if ( !validateNotNull( fieldName, problems, severity, string, sourceHint ) )
+        if ( !validateNotNull( fieldName, problems, severity, string, sourceHint, tracker ) )
         {
             return false;
         }
@@ -598,7 +603,7 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "is missing." );
+        addViolation( problems, severity, fieldName, sourceHint, "is missing.", tracker );
 
         return false;
     }
@@ -611,20 +616,20 @@ public class DefaultModelValidator
      * </ul>
      */
     private boolean validateNotNull( String fieldName, ModelProblemCollector problems, Severity severity,
-                                     Object object, String sourceHint )
+                                     Object object, String sourceHint, InputLocationTracker tracker )
     {
         if ( object != null )
         {
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "is missing." );
+        addViolation( problems, severity, fieldName, sourceHint, "is missing.", tracker );
 
         return false;
     }
 
     private boolean validateBoolean( String fieldName, ModelProblemCollector problems, Severity severity, String string,
-                                     String sourceHint )
+                                     String sourceHint, InputLocationTracker tracker )
     {
         if ( string == null || string.length() <= 0 )
         {
@@ -636,13 +641,14 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "must be 'true' or 'false' but is '" + string + "'." );
+        addViolation( problems, severity, fieldName, sourceHint, "must be 'true' or 'false' but is '" + string + "'.",
+                      tracker );
 
         return false;
     }
 
     private boolean validateEnum( String fieldName, ModelProblemCollector problems, Severity severity, String string,
-                                  String sourceHint, String... validValues )
+                                  String sourceHint, InputLocationTracker tracker, String... validValues )
     {
         if ( string == null || string.length() <= 0 )
         {
@@ -657,13 +663,13 @@ public class DefaultModelValidator
         }
 
         addViolation( problems, severity, fieldName, sourceHint, "must be one of " + values + " but is '" + string
-            + "'." );
+            + "'.", tracker );
 
         return false;
     }
 
     private boolean validateVersion( String fieldName, ModelProblemCollector problems, Severity severity, String string,
-                                     String sourceHint )
+                                     String sourceHint, InputLocationTracker tracker )
     {
         if ( string == null || string.length() <= 0 )
         {
@@ -675,13 +681,14 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "must be a valid version but is '" + string + "'." );
+        addViolation( problems, severity, fieldName, sourceHint, "must be a valid version but is '" + string + "'.",
+                      tracker );
 
         return false;
     }
 
     private boolean validatePluginVersion( String fieldName, ModelProblemCollector problems, String string,
-                                           String sourceHint, ModelBuildingRequest request )
+                                           String sourceHint, InputLocationTracker tracker, ModelBuildingRequest request )
     {
         Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
@@ -697,13 +704,14 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, errOn30, fieldName, sourceHint, "must be a valid version but is '" + string + "'." );
+        addViolation( problems, errOn30, fieldName, sourceHint, "must be a valid version but is '" + string + "'.",
+                      tracker );
 
         return false;
     }
 
     private static void addViolation( ModelProblemCollector problems, Severity severity, String fieldName,
-                                      String sourceHint, String message )
+                                      String sourceHint, String message, InputLocationTracker tracker )
     {
         StringBuilder buffer = new StringBuilder( 256 );
         buffer.append( '\'' ).append( fieldName ).append( '\'' );
@@ -715,12 +723,48 @@ public class DefaultModelValidator
 
         buffer.append(' ').append( message );
 
-        addViolation( problems, severity, buffer.toString() );
+        problems.add( severity, buffer.toString(), getLocation( fieldName, tracker ), null );
     }
 
-    private static void addViolation( ModelProblemCollector problems, Severity severity, String message )
+    private static InputLocation getLocation( String fieldName, InputLocationTracker tracker )
     {
-        problems.add( severity, message, null );
+        InputLocation location = null;
+
+        if ( tracker != null )
+        {
+            if ( fieldName != null )
+            {
+                Object key = fieldName;
+
+                int idx = fieldName.lastIndexOf( '.' );
+                if ( idx >= 0 )
+                {
+                    key = fieldName = fieldName.substring( idx + 1 );
+                }
+
+                if ( fieldName.endsWith( "]" ) )
+                {
+                    key = fieldName.substring( fieldName.lastIndexOf( '[' ) + 1, fieldName.length() - 1 );
+                    try
+                    {
+                        key = Integer.valueOf( key.toString() );
+                    }
+                    catch ( NumberFormatException e )
+                    {
+                        // use key as is
+                    }
+                }
+
+                location = tracker.getLocation( key );
+            }
+
+            if ( location == null )
+            {
+                location = tracker.getLocation( "" );
+            }
+        }
+
+        return location;
     }
 
     private static boolean equals( String s1, String s2 )

Propchange: maven/maven-3/trunk/maven-model-builder/src/main/mdo/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 31 10:24:20 2010
@@ -4,3 +4,4 @@
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/mdo:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/mdo:738757-738972
 /maven/components/trunk/maven-model-builder/src/main/mdo:767708-768832
+/maven/maven-3/branches/MNG-1803/maven-model-builder/src/main/mdo:935092-949699

Propchange: maven/maven-3/trunk/maven-model-builder/src/main/resources/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 31 10:24:20 2010
@@ -4,4 +4,4 @@
 /maven/components/branches/sisbell-plugin-manager/maven-project-builder/src/main/resources:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project-builder/src/main/resources:738757-738972
 /maven/components/trunk/maven-model-builder/src/main/resources:767708-768832
-/maven/components/trunk/maven-project/src/main/resources:688587-696625,696644-699681
+/maven/maven-3/branches/MNG-1803/maven-model-builder/src/main/resources:935092-949699

Modified: maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java Mon May 31 10:24:20 2010
@@ -22,6 +22,7 @@ package org.apache.maven.model.building;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.building.ModelProblem.Severity;
 
 /**
@@ -54,7 +55,7 @@ public class SimpleProblemCollector
         return fatals;
     }
 
-    public void add( Severity severity, String message, Exception cause )
+    public void add( Severity severity, String message, InputLocation location, Exception cause )
     {
         switch ( severity )
         {

Propchange: maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 31 10:24:20 2010
@@ -5,3 +5,4 @@
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/test/java/org/apache/maven/project/validation:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/test/java/org/apache/maven/project/validation:738757-738972
 /maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/validation:751453-767358,767708-768832
+/maven/maven-3/branches/MNG-1803/maven-model-builder/src/test/java/org/apache/maven/model/validation:935092-949699

Modified: maven/maven-3/trunk/maven-model/pom.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model/pom.xml?rev=949708&r1=949707&r2=949708&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model/pom.xml (original)
+++ maven/maven-3/trunk/maven-model/pom.xml Mon May 31 10:24:20 2010
@@ -51,6 +51,17 @@ under the License.
             <model>src/main/mdo/maven.mdo</model>
           </models>
         </configuration>
+        <executions>
+          <execution>
+            <id>standard</id>
+            <goals>
+              <goal>java</goal>
+              <goal>xpp3-reader</goal>
+              <goal>xpp3-extended-reader</goal>
+              <goal>xpp3-writer</goal>
+            </goals>
+          </execution>
+        </executions>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>