Author: mkleint
Date: Thu Jul  5 13:11:15 2012
New Revision: 1357589

URL: http://svn.apache.org/viewvc?rev=1357589&view=rev
Log:
MNG-5306 : introduce ModelProblemCollectorRequest and a new ModelProblem 
property - version which denotes on which validation level the error/warning 
applies. Additionally move the logic on failing the ModelBuilding from 
ModelProblemCollector to ModelBuilder's protected method to allow overriding. 
Default maven behaviour should stay the same.

Added:
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorExt.java
   (with props)
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
   (with props)
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/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/DefaultModelProblem.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/ModelProblem.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/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/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/test/java/org/apache/maven/model/building/SimpleProblemCollector.java

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -36,11 +36,14 @@ import org.codehaus.plexus.component.rep
 import org.codehaus.plexus.logging.Logger;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 
 @Deprecated
 public class DefaultProfileManager
@@ -195,14 +198,13 @@ public class DefaultProfileManager
             profileSelector.getActiveProfiles( profilesById.values(), context, 
new ModelProblemCollector()
             {
 
-                public void add( Severity severity, String message, 
InputLocation location, Exception cause )
+                public void add( ModelProblemCollectorRequest req )
                 {
-                    if ( !ModelProblem.Severity.WARNING.equals( severity ) )
+                    if ( !ModelProblem.Severity.WARNING.equals( 
req.getSeverity() ) )
                     {
-                        errors.add( new ProfileActivationException( message, 
cause ) );
+                        errors.add( new ProfileActivationException( 
req.getMessage(), req.getException() ) );
                     }
                 }
-
             } );
 
         if ( !errors.isEmpty() )

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -19,6 +19,7 @@ package org.apache.maven.project.validat
  * under the License.
  */
 
+import java.util.List;
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.DefaultModelBuildingRequest;
@@ -26,6 +27,8 @@ import org.apache.maven.model.building.M
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
@@ -66,14 +69,12 @@ public class DefaultModelValidator
             this.result = result;
         }
 
-        public void add( Severity severity, String message, InputLocation 
location, Exception cause )
+        public void add( ModelProblemCollectorRequest req )
         {
-            if ( !ModelProblem.Severity.WARNING.equals( severity ) )
+            if ( !ModelProblem.Severity.WARNING.equals( req.getSeverity() ) )
             {
-                result.addMessage( message );
+                result.addMessage( req.getMessage() );
             }
         }
-
     }
-
 }

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -37,6 +37,8 @@ import org.apache.maven.model.PluginMana
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.merge.MavenModelMerger;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -64,7 +66,9 @@ public class DefaultLifecycleBindingsInj
 
         if ( defaultPlugins == null )
         {
-            problems.add( Severity.ERROR, "Unknown packaging: " + packaging, 
model.getLocation( "packaging" ), null );
+            problems.add( new ModelProblemCollectorRequest( Severity.ERROR, 
Version.BASE)
+                    .setMessage( "Unknown packaging: " + packaging )
+                    .setLocation( model.getLocation( "packaging" )));
         }
         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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -26,6 +26,8 @@ import org.apache.maven.model.Model;
 import org.apache.maven.model.building.AbstractModelBuildingListener;
 import org.apache.maven.model.building.ModelBuildingEvent;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.plugin.PluginResolutionException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
 
@@ -95,7 +97,9 @@ class DefaultModelBuildingListener
         }
         catch ( Exception e )
         {
-            event.getProblems().add( Severity.ERROR, "Invalid plugin 
repository: " + e.getMessage(), null, e );
+            event.getProblems().add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                    .setMessage( "Invalid plugin repository: " + 
e.getMessage() )
+                    .setException( e ));
         }
         project.setPluginArtifactRepositories( pluginRepositories );
 
@@ -111,11 +115,15 @@ class DefaultModelBuildingListener
             }
             catch ( PluginResolutionException e )
             {
-                event.getProblems().add( Severity.ERROR, "Unresolveable build 
extension: " + e.getMessage(), null, e );
+                event.getProblems().add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( "Unresolveable build extension: " + 
e.getMessage())
+                        .setException( e ));
             }
             catch ( PluginVersionResolutionException e )
             {
-                event.getProblems().add( Severity.ERROR, "Unresolveable build 
extension: " + e.getMessage(), null, e );
+                event.getProblems().add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( "Unresolveable build extension: " + 
e.getMessage() )
+                        .setException( e ));
             }
 
             projectBuildingHelper.selectProjectRealm( project );
@@ -130,7 +138,9 @@ class DefaultModelBuildingListener
         }
         catch ( Exception e )
         {
-            event.getProblems().add( Severity.ERROR, "Invalid artifact 
repository: " + e.getMessage(), null, e );
+            event.getProblems().add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                    .setMessage( "Invalid artifact repository: " + 
e.getMessage() )
+                    .setException( 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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -442,7 +442,7 @@ public class DefaultProjectBuilder
                     {
                         ModelProblem problem =
                             new DefaultModelProblem( "Child module " + 
moduleFile + " of " + pomFile
-                                + " does not exist", 
ModelProblem.Severity.ERROR, model, -1, -1, null );
+                                + " does not exist", 
ModelProblem.Severity.ERROR, ModelProblem.Version.BASE, model, -1, -1, null );
                         result.getProblems().add( problem );
 
                         noErrors = false;
@@ -478,7 +478,7 @@ public class DefaultProjectBuilder
 
                         ModelProblem problem =
                             new DefaultModelProblem( "Child module " + 
moduleFile + " of " + pomFile
-                                + " forms aggregation cycle " + buffer, 
ModelProblem.Severity.ERROR, model, -1, -1,
+                                + " forms aggregation cycle " + buffer, 
ModelProblem.Severity.ERROR, ModelProblem.Version.BASE, model, -1, -1,
                                                      null );
                         result.getProblems().add( problem );
 
@@ -630,7 +630,7 @@ public class DefaultProjectBuilder
             ModelProblem problem =
                 new DefaultModelProblem( "Detected profiles.xml alongside " + 
modelId
                     + ", this file is no longer supported and was ignored" + 
", please use the settings.xml instead",
-                                         ModelProblem.Severity.WARNING, model, 
-1, -1, null );
+                                         ModelProblem.Severity.WARNING, 
ModelProblem.Version.V30, model, -1, -1, null );
             result.getProblems().add( problem );
         }
     }

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=1357589&r1=1357588&r2=1357589&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 Jul  5 13:11:15 2012
@@ -42,6 +42,7 @@ import org.apache.maven.model.PluginMana
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.composition.DependencyManagementImporter;
 import org.apache.maven.model.inheritance.InheritanceAssembler;
 import org.apache.maven.model.interpolation.ModelInterpolator;
@@ -322,7 +323,7 @@ public class DefaultModelBuilder
                 }
                 message += currentData.getId();
 
-                problems.add( ModelProblem.Severity.FATAL, message, null, null 
);
+                problems.add( new 
ModelProblemCollectorRequest(ModelProblem.Severity.FATAL, 
ModelProblem.Version.BASE).setMessage(message));
                 throw problems.newModelBuildingException();
             }
         }
@@ -414,7 +415,7 @@ public class DefaultModelBuilder
 
         modelValidator.validateEffectiveModel( resultModel, request, problems 
);
 
-        if ( problems.hasErrors() )
+        if ( hasModelErrors(problems) )
         {
             throw problems.newModelBuildingException();
         }
@@ -476,13 +477,15 @@ public class DefaultModelBuilder
 
                 if ( pomFile != null )
                 {
-                    problems.add( Severity.ERROR, "Malformed POM " + 
modelSource.getLocation() + ": " + e.getMessage(),
-                                  null, e );
+                    problems.add( new 
ModelProblemCollectorRequest(Severity.ERROR, Version.V20)
+                            .setMessage("Malformed POM " + 
modelSource.getLocation() + ": " + e.getMessage())
+                            .setException(e ));
                 }
                 else
                 {
-                    problems.add( Severity.WARNING, "Malformed POM " + 
modelSource.getLocation() + ": "
-                        + e.getMessage(), null, e );
+                    problems.add( new 
ModelProblemCollectorRequest(Severity.WARNING, Version.V20)
+                            .setMessage("Malformed POM " + 
modelSource.getLocation() + ": " + e.getMessage())
+                            .setException(e));
                 }
             }
 
@@ -494,8 +497,9 @@ public class DefaultModelBuilder
         }
         catch ( ModelParseException e )
         {
-            problems.add( Severity.FATAL, "Non-parseable POM " + 
modelSource.getLocation() + ": " + e.getMessage(),
-                          null, e );
+            problems.add( new ModelProblemCollectorRequest(Severity.FATAL, 
Version.BASE)
+                    .setMessage("Non-parseable POM " + 
modelSource.getLocation() + ": " + e.getMessage())
+                    .setException(e));
             throw problems.newModelBuildingException();
         }
         catch ( IOException e )
@@ -513,7 +517,9 @@ public class DefaultModelBuilder
                     msg = e.getClass().getSimpleName();
                 }
             }
-            problems.add( Severity.FATAL, "Non-readable POM " + 
modelSource.getLocation() + ": " + msg, null, e );
+            problems.add( new ModelProblemCollectorRequest(Severity.FATAL, 
Version.BASE)
+                    .setMessage("Non-readable POM " + 
modelSource.getLocation() + ": " + msg)
+                    .setException(e ));
             throw problems.newModelBuildingException();
         }
 
@@ -522,7 +528,7 @@ public class DefaultModelBuilder
         problems.setSource( model );
         modelValidator.validateRawModel( model, request, problems );
 
-        if ( problems.hasFatalErrors() )
+        if ( hasFatalErrors(problems) )
         {
             throw problems.newModelBuildingException();
         }
@@ -562,8 +568,10 @@ public class DefaultModelBuilder
             }
             catch ( InvalidRepositoryException e )
             {
-                problems.add( Severity.ERROR, "Invalid repository " + 
repository.getId() + ": " + e.getMessage(),
-                              repository.getLocation( "" ), e );
+                problems.add( new ModelProblemCollectorRequest(Severity.ERROR, 
Version.BASE)
+                        .setMessage( "Invalid repository " + 
repository.getId() + ": " + e.getMessage())
+                        .setLocation(repository.getLocation( "" ))
+                        .setException(e) );
             }
         }
     }
@@ -615,8 +623,9 @@ public class DefaultModelBuilder
             if ( versions.get( key ) == null && managedVersions.get( key ) == 
null )
             {
                 InputLocation location = plugins.get( key ).getLocation( "" );
-                problems.add( Severity.WARNING, 
"'build.plugins.plugin.version' for " + key + " is missing.", location,
-                              null );
+                problems.add( new 
ModelProblemCollectorRequest(Severity.WARNING, Version.V20)
+                        .setMessage( "'build.plugins.plugin.version' for " + 
key + " is missing.")
+                        .setLocation(location));
             }
         }
     }
@@ -691,9 +700,10 @@ public class DefaultModelBuilder
 
             if ( !"pom".equals( parentModel.getPackaging() ) )
             {
-                problems.add( Severity.ERROR, "Invalid packaging for parent 
POM "
-                    + ModelProblemUtils.toSourceHint( parentModel ) + ", must 
be \"pom\" but is \""
-                    + parentModel.getPackaging() + "\"", 
parentModel.getLocation( "packaging" ), null );
+                problems.add( new ModelProblemCollectorRequest(Severity.ERROR, 
Version.BASE)
+                        .setMessage( "Invalid packaging for parent POM " + 
ModelProblemUtils.toSourceHint( parentModel ) + ", must be \"pom\" but is \""
+                                    + parentModel.getPackaging() + "\"")
+                        .setLocation(parentModel.getLocation( "packaging" )));
             }
         }
         else
@@ -745,7 +755,9 @@ public class DefaultModelBuilder
             buffer.append( ", please verify your project structure" );
 
             problems.setSource( childModel );
-            problems.add( Severity.WARNING, buffer.toString(), 
parent.getLocation( "" ), null );
+            problems.add( new ModelProblemCollectorRequest( Severity.WARNING, 
Version.BASE)
+                    .setMessage( buffer.toString())
+                    .setLocation( parent.getLocation( "" )));
             return null;
         }
         if ( version == null || !version.equals( parent.getVersion() ) )
@@ -837,7 +849,10 @@ public class DefaultModelBuilder
                 }
             }
 
-            problems.add( Severity.FATAL, buffer.toString(), 
parent.getLocation( "" ), e );
+            problems.add( new ModelProblemCollectorRequest(Severity.FATAL, 
Version.BASE)
+                    .setMessage( buffer.toString())
+                    .setLocation(parent.getLocation( "" ))
+                    .setException(e));
             throw problems.newModelBuildingException();
         }
 
@@ -903,20 +918,23 @@ public class DefaultModelBuilder
 
             if ( groupId == null || groupId.length() <= 0 )
             {
-                problems.add( Severity.ERROR, 
"'dependencyManagement.dependencies.dependency.groupId' for "
-                    + dependency.getManagementKey() + " is missing.", 
dependency.getLocation( "" ), null );
+                problems.add( new ModelProblemCollectorRequest(Severity.ERROR, 
Version.BASE)
+                        .setMessage( 
"'dependencyManagement.dependencies.dependency.groupId' for " + 
dependency.getManagementKey() + " is missing.")
+                        .setLocation( dependency.getLocation( "" )));
                 continue;
             }
             if ( artifactId == null || artifactId.length() <= 0 )
             {
-                problems.add( Severity.ERROR, 
"'dependencyManagement.dependencies.dependency.artifactId' for "
-                    + dependency.getManagementKey() + " is missing.", 
dependency.getLocation( "" ), null );
+                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( 
"'dependencyManagement.dependencies.dependency.artifactId' for " + 
dependency.getManagementKey() + " is missing.")
+                        .setLocation( dependency.getLocation( "" )));
                 continue;
             }
             if ( version == null || version.length() <= 0 )
             {
-                problems.add( Severity.ERROR, 
"'dependencyManagement.dependencies.dependency.version' for "
-                    + dependency.getManagementKey() + " is missing.", 
dependency.getLocation( "" ), null );
+                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( 
"'dependencyManagement.dependencies.dependency.version' for " + 
dependency.getManagementKey() + " is missing.")
+                        .setLocation( dependency.getLocation( "" )));
                 continue;
             }
 
@@ -930,7 +948,7 @@ public class DefaultModelBuilder
                     message += modelId + " -> ";
                 }
                 message += imported;
-                problems.add( Severity.ERROR, message, null, null );
+                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).setMessage( message ));
 
                 continue;
             }
@@ -962,7 +980,10 @@ public class DefaultModelBuilder
                     }
                     buffer.append( ": " ).append( e.getMessage() );
 
-                    problems.add( Severity.ERROR, buffer.toString(), 
dependency.getLocation( "" ), e );
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE )
+                            .setMessage( buffer.toString() )
+                            .setLocation( dependency.getLocation( "" ))
+                            .setException( e ));
                     continue;
                 }
 
@@ -1061,4 +1082,25 @@ public class DefaultModelBuilder
             && ( version == null || message.contains( version ) );
     }
 
+    protected boolean hasModelErrors(ModelProblemCollectorExt problems) {
+        if (problems instanceof DefaultModelProblemCollector) {
+            return ((DefaultModelProblemCollector)problems).hasErrors();
+        } else {
+            //the default execution path only knows the 
DefaultModelProblemCollector,
+            // only reason it's not in signature is because it's package 
private
+            throw new IllegalStateException(); 
+        }
+        
+    }
+
+    protected boolean hasFatalErrors(ModelProblemCollectorExt problems) {
+        if (problems instanceof DefaultModelProblemCollector) {
+            return ((DefaultModelProblemCollector)problems).hasFatalErrors();
+        } else {
+            //the default execution path only knows the 
DefaultModelProblemCollector,
+            // only reason it's not in signature is because it's package 
private
+            throw new IllegalStateException(); 
+        }
+    }
+
 }

Modified: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java?rev=1357589&r1=1357588&r2=1357589&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblem.java
 Thu Jul  5 13:11:15 2012
@@ -46,6 +46,9 @@ public class DefaultModelProblem
 
     private final Severity severity;
 
+    private final Version version;
+
+
     /**
      * Creates a new problem with the specified message and exception.
      * 
@@ -57,10 +60,11 @@ public class DefaultModelProblem
      * @param columnNumber The one-based index of the column containing the 
error or {@code -1} if unknown.
      * @param exception The exception that caused this problem, may be {@code 
null}.
      */
-    public DefaultModelProblem( String message, Severity severity, Model 
source, int lineNumber, int columnNumber,
+    //mkleint: does this need to be public?
+    public DefaultModelProblem( String message, Severity severity, Version 
version, Model source, int lineNumber, int columnNumber,
                                 Exception exception )
     {
-        this( message, severity, ModelProblemUtils.toPath( source ), 
lineNumber, columnNumber,
+        this( message, severity, version, ModelProblemUtils.toPath( source ), 
lineNumber, columnNumber,
               ModelProblemUtils.toId( source ), exception );
     }
 
@@ -70,13 +74,15 @@ public class DefaultModelProblem
      * @param message The message describing the problem, may be {@code null}.
      * @param severity The severity level of the problem, may be {@code null} 
to default to
      *            {@link ModelProblem.Severity#ERROR}.
+     * @param version The version since the problem is relevant
      * @param source A hint about the source of the problem like a file path, 
may be {@code null}.
      * @param lineNumber The one-based index of the line containing the 
problem or {@code -1} if unknown.
      * @param columnNumber The one-based index of the column containing the 
problem or {@code -1} if unknown.
      * @param modelId The identifier of the model that exhibits the problem, 
may be {@code null}.
      * @param exception The exception that caused this problem, may be {@code 
null}.
      */
-    public DefaultModelProblem( String message, Severity severity, String 
source, int lineNumber, int columnNumber,
+    //mkleint: does this need to be public?
+    public DefaultModelProblem( String message, Severity severity, Version 
version, String source, int lineNumber, int columnNumber,
                                 String modelId, Exception exception )
     {
         this.message = message;
@@ -86,6 +92,7 @@ public class DefaultModelProblem
         this.columnNumber = columnNumber;
         this.modelId = ( modelId != null ) ? modelId : "";
         this.exception = exception;
+        this.version = version;
     }
 
     public String getSource()
@@ -139,6 +146,11 @@ public class DefaultModelProblem
         return severity;
     }
 
+    public Version getVersion() {
+        return version;
+    }
+    
+
     @Override
     public String toString()
     {

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -26,6 +26,7 @@ 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.building.ModelProblem.Version;
 import org.apache.maven.model.io.ModelParseException;
 
 /**
@@ -38,7 +39,7 @@ import org.apache.maven.model.io.ModelPa
  * @author Benjamin Bentmann
  */
 class DefaultModelProblemCollector
-    implements ModelProblemCollector
+    implements ModelProblemCollectorExt
 {
 
     private final ModelBuildingResult result;
@@ -142,21 +143,21 @@ class DefaultModelProblemCollector
         }
     }
 
-    public void add( Severity severity, String message, InputLocation 
location, Exception cause )
+    public void add( ModelProblemCollectorRequest req )
     {
         int line = -1;
         int column = -1;
         String source = null;
         String modelId = null;
 
-        if ( location != null )
+        if ( req.getLocation() != null )
         {
-            line = location.getLineNumber();
-            column = location.getColumnNumber();
-            if ( location.getSource() != null )
+            line = req.getLocation().getLineNumber();
+            column = req.getLocation().getColumnNumber();
+            if ( req.getLocation().getSource() != null )
             {
-                modelId = location.getSource().getModelId();
-                source = location.getSource().getLocation();
+                modelId = req.getLocation().getSource().getModelId();
+                source = req.getLocation().getSource().getLocation();
             }
         }
 
@@ -166,14 +167,14 @@ class DefaultModelProblemCollector
             source = getSource();
         }
 
-        if ( line <= 0 && column <= 0 && cause instanceof ModelParseException )
+        if ( line <= 0 && column <= 0 && req.getException() instanceof 
ModelParseException )
         {
-            ModelParseException e = (ModelParseException) cause;
+            ModelParseException e = (ModelParseException) req.getException();
             line = e.getLineNumber();
             column = e.getColumnNumber();
         }
 
-        ModelProblem problem = new DefaultModelProblem( message, severity, 
source, line, column, modelId, cause );
+        ModelProblem problem = new DefaultModelProblem( req.getMessage(), 
req.getSeverity(), req.getVersion(), source, line, column, modelId, 
req.getException() );
 
         add( problem );
     }

Modified: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java?rev=1357589&r1=1357588&r2=1357589&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblem.java
 Thu Jul  5 13:11:15 2012
@@ -41,6 +41,14 @@ public interface ModelProblem
 
     }
 
+    enum Version {
+        //based on ModeBuildingResult.validationLevel
+        BASE,
+        V20,
+        V30,
+        V31
+    }
+
     /**
      * Gets the hint about the source of the problem. While the syntax of this 
hint is unspecified and depends on the
      * creator of the problem, the general expectation is that the hint 
provides sufficient information to the user to
@@ -99,4 +107,10 @@ public interface ModelProblem
      */
     Severity getSeverity();
 
+    /**
+     * Gets the applicable maven version/validation level of this problem
+     * @return The version, never {@code null}.
+     */
+    Version getVersion();
+
 }

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -19,6 +19,7 @@ package org.apache.maven.model.building;
  * under the License.
  */
 
+import java.util.List;
 import org.apache.maven.model.InputLocation;
 
 /**
@@ -36,11 +37,8 @@ public interface ModelProblemCollector
     /**
      * Adds the specified problem.
      * 
-     * @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}.
+     * @param req must not be null
      */
-    void add( ModelProblem.Severity severity, String message, InputLocation 
location, Exception cause );
+    void add( ModelProblemCollectorRequest req );
 
 }

Added: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorExt.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorExt.java?rev=1357589&view=auto
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorExt.java
 (added)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorExt.java
 Thu Jul  5 13:11:15 2012
@@ -0,0 +1,37 @@
+package org.apache.maven.model.building;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+/**
+ * Extends the ModelproblemCollector by the capacity of returning the 
collected problems.
+ * @author Milos Kleint
+ */
+public interface ModelProblemCollectorExt extends ModelProblemCollector
+{
+    
+    /**
+     * The collected problems.
+     * @return a list of model problems encountered, never {@code null}
+     */
+    List<ModelProblem> getProblems();
+
+}

Propchange: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorExt.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java?rev=1357589&view=auto
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
 (added)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
 Thu Jul  5 13:11:15 2012
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.maven.model.building;
+
+import org.apache.maven.model.InputLocation;
+import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+
+/**
+ * Class to wrap request parameters to ModelProblemCollector.addProblem
+ *
+ * @author mkleint
+ */
+public final class ModelProblemCollectorRequest
+{
+
+    private final ModelProblem.Severity severity;
+    private final ModelProblem.Version version;
+    private Exception exception;
+    private String message;
+    private InputLocation location;
+    
+    /**
+     * Create a new request with mandatory parameters.
+     * @param severity
+     * @param version 
+     */
+    public ModelProblemCollectorRequest(Severity severity, Version version)
+    {
+        this.severity = severity;
+        this.version = version;
+        if (severity == null)
+        {
+            throw new IllegalStateException("No severity declared");
+        }
+        if (version == null)
+        {
+            throw new IllegalStateException("No version declared.");
+        }
+    }
+
+    public Severity getSeverity()
+    {
+        return severity;
+    }
+
+    public Version getVersion()
+    {
+        return version;
+    }
+
+    public Exception getException()
+    {
+        return exception;
+    }
+
+    public ModelProblemCollectorRequest setException(Exception exception)
+    {
+        this.exception = exception;
+        return this;
+    }
+
+    public String getMessage()
+    {
+        return message;
+    }
+
+    public ModelProblemCollectorRequest setMessage(String message)
+    {
+        this.message = message;
+        return this;
+    }
+
+    public InputLocation getLocation()
+    {
+        return location;
+    }
+
+    public ModelProblemCollectorRequest setLocation(InputLocation location)
+    {
+        this.location = location;
+        return this;
+    }
+}

Propchange: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollectorRequest.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -45,6 +45,9 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
+import org.apache.maven.model.building.ModelProblem;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 
 /**
  * Use a regular expression search to find and resolve expressions within the 
POM.
@@ -241,7 +244,7 @@ public abstract class AbstractStringBase
                 }
                 catch ( InterpolationException e )
                 {
-                    problems.add( Severity.ERROR, e.getMessage(), null, e );
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE ).setMessage( e.getMessage() ).setException( 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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -20,9 +20,12 @@ package org.apache.maven.model.interpola
  */
 
 import java.util.List;
+import org.apache.maven.model.building.ModelProblem;
 
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.codehaus.plexus.interpolation.ValueSource;
 
 /**
@@ -62,7 +65,7 @@ class ProblemDetectingValueSource
             {
                 msg += " Please use ${" + newPrefix + expression.substring( 
bannedPrefix.length() ) + "} instead.";
             }
-            problems.add( Severity.WARNING, msg, null, null );
+            problems.add( new ModelProblemCollectorRequest( Severity.WARNING, 
Version.V20 ).setMessage( msg ));
         }
 
         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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -41,6 +41,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import org.apache.maven.model.building.ModelProblem;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 
 @Component( role = ModelInterpolator.class )
 public class StringSearchModelInterpolator
@@ -191,13 +194,15 @@ public class StringSearchModelInterpolat
             }
             catch ( IllegalArgumentException e )
             {
-                problems.add( Severity.ERROR, "Failed to interpolate field3: " 
+ field + " on class: " + cls.getName(),
-                              null, e );
+                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( "Failed to interpolate field3: " + field 
+ " on class: " + cls.getName())
+                        .setException(e));
             }
             catch ( IllegalAccessException e )
             {
-                problems.add( Severity.ERROR, "Failed to interpolate field4: " 
+ field + " on class: " + cls.getName(),
-                              null, e );
+                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( "Failed to interpolate field4: " + field 
+ " on class: " + cls.getName())
+                        .setException(e));
             }
             finally
             {

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -27,8 +27,11 @@ import org.apache.maven.model.ReportPlug
 import org.apache.maven.model.ReportSet;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -105,9 +108,9 @@ public class DefaultReportingConverter
             && request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 )
         {
 
-            problems.add( Severity.WARNING, "The <reporting> section is 
deprecated"
-                + ", please move the reports to the <configuration> section of 
the new Maven Site Plugin.",
-                          reporting.getLocation( "" ), null );
+            problems.add( new ModelProblemCollectorRequest( Severity.WARNING, 
Version.V31)
+                    .setMessage( "The <reporting> section is deprecated, 
please move the reports to the <configuration> section of the new Maven Site 
Plugin.")
+                    .setLocation( reporting.getLocation( "" ) ));
         }
 
         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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -26,8 +26,11 @@ import java.util.List;
 
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Profile;
+import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.profile.activation.ProfileActivator;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -113,8 +116,10 @@ public class DefaultProfileSelector
             }
             catch ( RuntimeException e )
             {
-                problems.add( Severity.ERROR, "Failed to determine activation 
for profile " + profile.getId(),
-                              profile.getLocation( "" ), e );
+                problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                        .setMessage( "Failed to determine activation for 
profile " + profile.getId())
+                        .setLocation( profile.getLocation( "" ))
+                        .setException( 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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -26,6 +26,8 @@ import org.apache.maven.model.Activation
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.path.PathTranslator;
 import org.apache.maven.model.profile.ProfileActivationContext;
 import org.codehaus.plexus.component.annotations.Component;
@@ -125,8 +127,10 @@ public class FileProfileActivator
         }
         catch ( Exception e )
         {
-            problems.add( Severity.ERROR, "Failed to interpolate file location 
" + path + " for profile "
-                + profile.getId() + ": " + e.getMessage(), file.getLocation( 
missing ? "missing" : "exists" ), e );
+            problems.add( new ModelProblemCollectorRequest( Severity.ERROR, 
Version.BASE)
+                    .setMessage( "Failed to interpolate file location " + path 
+ " for profile " + profile.getId() + ": " + e.getMessage())
+                    .setLocation( file.getLocation( missing ? "missing" : 
"exists" ))
+                    .setException( 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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -27,6 +27,8 @@ import org.apache.maven.model.Activation
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.profile.ProfileActivationContext;
 import org.codehaus.plexus.component.annotations.Component;
 
@@ -56,8 +58,9 @@ public class JdkVersionProfileActivator
 
                 if ( version == null || version.length() <= 0 )
                 {
-                    problems.add( Severity.ERROR, "Failed to determine Java 
version for profile " + profile.getId(),
-                                  activation.getLocation( "jdk" ), null );
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                            .setMessage( "Failed to determine Java version for 
profile " + profile.getId())
+                            .setLocation(activation.getLocation( "jdk" )));
                     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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -24,6 +24,8 @@ import org.apache.maven.model.Activation
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.profile.ProfileActivationContext;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
@@ -61,8 +63,9 @@ public class PropertyProfileActivator
 
                 if ( name == null || name.length() <= 0 )
                 {
-                    problems.add( Severity.ERROR, "The property name is 
required to activate the profile "
-                        + profile.getId(), property.getLocation( "" ), null );
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.ERROR, Version.BASE)
+                            .setMessage( "The property name is required to 
activate the profile " + profile.getId())
+                            .setLocation( property.getLocation( "" )));
                     return false;
                 }
 


Reply via email to