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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -47,7 +47,9 @@ import org.apache.maven.model.Repository
 import org.apache.maven.model.Resource;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblem.Severity;
+import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
@@ -72,16 +74,16 @@ public class DefaultModelValidator
         Parent parent = model.getParent();
         if ( parent != null )
         {
-            validateStringNotEmpty( "parent.groupId", problems, 
Severity.FATAL, parent.getGroupId(), parent );
+            validateStringNotEmpty( "parent.groupId", problems, 
Severity.FATAL, Version.BASE, parent.getGroupId(), parent );
 
-            validateStringNotEmpty( "parent.artifactId", problems, 
Severity.FATAL, parent.getArtifactId(), parent );
+            validateStringNotEmpty( "parent.artifactId", problems, 
Severity.FATAL, Version.BASE, parent.getArtifactId(), parent );
 
-            validateStringNotEmpty( "parent.version", problems, 
Severity.FATAL, parent.getVersion(), parent );
+            validateStringNotEmpty( "parent.version", problems, 
Severity.FATAL, Version.BASE, parent.getVersion(), parent );
 
             if ( equals( parent.getGroupId(), model.getGroupId() )
                 && equals( parent.getArtifactId(), model.getArtifactId() ) )
             {
-                addViolation( problems, Severity.FATAL, "parent.artifactId", 
null, "must be changed"
+                addViolation( problems, Severity.FATAL, Version.BASE, 
"parent.artifactId", null, "must be changed"
                     + ", the parent element cannot have the same 
groupId:artifactId as the project.", parent );
             }
         }
@@ -90,45 +92,45 @@ public class DefaultModelValidator
         {
             Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
-            validateEnum( "modelVersion", problems, Severity.ERROR, 
model.getModelVersion(), null, model, "4.0.0" );
+            validateEnum( "modelVersion", problems, Severity.ERROR, 
Version.V20, model.getModelVersion(), null, model, "4.0.0" );
 
-            validateStringNoExpression( "groupId", problems, Severity.WARNING, 
model.getGroupId(), model );
+            validateStringNoExpression( "groupId", problems, Severity.WARNING, 
Version.V20, model.getGroupId(), model );
             if ( parent == null )
             {
-                validateStringNotEmpty( "groupId", problems, Severity.FATAL, 
model.getGroupId(), model );
+                validateStringNotEmpty( "groupId", problems, Severity.FATAL, 
Version.V20, model.getGroupId(), model );
             }
 
-            validateStringNoExpression( "artifactId", problems, 
Severity.WARNING, model.getArtifactId(), model );
-            validateStringNotEmpty( "artifactId", problems, Severity.FATAL, 
model.getArtifactId(), model );
+            validateStringNoExpression( "artifactId", problems, 
Severity.WARNING, Version.V20, model.getArtifactId(), model );
+            validateStringNotEmpty( "artifactId", problems, Severity.FATAL, 
Version.V20, model.getArtifactId(), model );
 
-            validateStringNoExpression( "version", problems, Severity.WARNING, 
model.getVersion(), model );
+            validateStringNoExpression( "version", problems, Severity.WARNING, 
Version.V20, model.getVersion(), model );
             if ( parent == null )
             {
-                validateStringNotEmpty( "version", problems, Severity.FATAL, 
model.getVersion(), model );
+                validateStringNotEmpty( "version", problems, Severity.FATAL, 
Version.V20, model.getVersion(), model );
             }
 
-            validateRawDependencies( problems, model.getDependencies(), 
"dependencies.dependency", request );
+            validate20RawDependencies( problems, model.getDependencies(), 
"dependencies.dependency", request );
 
             if ( model.getDependencyManagement() != null )
             {
-                validateRawDependencies( problems, 
model.getDependencyManagement().getDependencies(),
+                validate20RawDependencies( problems, 
model.getDependencyManagement().getDependencies(),
                                       
"dependencyManagement.dependencies.dependency", request );
             }
 
-            validateRepositories( problems, model.getRepositories(), 
"repositories.repository", request );
+            validateRawRepositories( problems, model.getRepositories(), 
"repositories.repository", request );
 
-            validateRepositories( problems, model.getPluginRepositories(), 
"pluginRepositories.pluginRepository",
+            validateRawRepositories( problems, model.getPluginRepositories(), 
"pluginRepositories.pluginRepository",
                                   request );
 
             Build build = model.getBuild();
             if ( build != null )
             {
-                validateRawPlugins( problems, build.getPlugins(), 
"build.plugins.plugin", request );
+                validate20RawPlugins( problems, build.getPlugins(), 
"build.plugins.plugin", request );
 
                 PluginManagement mngt = build.getPluginManagement();
                 if ( mngt != null )
                 {
-                    validateRawPlugins( problems, mngt.getPlugins(), 
"build.pluginManagement.plugins.plugin",
+                    validate20RawPlugins( problems, mngt.getPlugins(), 
"build.pluginManagement.plugins.plugin",
                                         request );
                 }
             }
@@ -141,34 +143,34 @@ public class DefaultModelValidator
 
                 if ( !profileIds.add( profile.getId() ) )
                 {
-                    addViolation( problems, errOn30, "profiles.profile.id", 
null,
+                    addViolation( problems, errOn30, Version.V20, 
"profiles.profile.id", null,
                                   "must be unique but found duplicate profile 
with id " + profile.getId(), profile );
                 }
 
-                validateRawDependencies( problems, profile.getDependencies(), 
prefix + ".dependencies.dependency",
+                validate20RawDependencies( problems, 
profile.getDependencies(), prefix + ".dependencies.dependency",
                                          request );
 
                 if ( profile.getDependencyManagement() != null )
                 {
-                    validateRawDependencies( problems, 
profile.getDependencyManagement().getDependencies(), prefix
+                    validate20RawDependencies( problems, 
profile.getDependencyManagement().getDependencies(), prefix
                         + ".dependencyManagement.dependencies.dependency", 
request );
                 }
 
-                validateRepositories( problems, profile.getRepositories(), 
prefix + ".repositories.repository",
+                validateRawRepositories( problems, profile.getRepositories(), 
prefix + ".repositories.repository",
                                       request );
 
-                validateRepositories( problems, 
profile.getPluginRepositories(), prefix
+                validateRawRepositories( problems, 
profile.getPluginRepositories(), prefix
                     + ".pluginRepositories.pluginRepository", request );
 
                 BuildBase buildBase = profile.getBuild();
                 if ( buildBase != null )
                 {
-                    validateRawPlugins( problems, buildBase.getPlugins(), 
prefix + ".plugins.plugin", request );
+                    validate20RawPlugins( problems, buildBase.getPlugins(), 
prefix + ".plugins.plugin", request );
 
                     PluginManagement mngt = buildBase.getPluginManagement();
                     if ( mngt != null )
                     {
-                        validateRawPlugins( problems, mngt.getPlugins(), 
prefix + ".pluginManagement.plugins.plugin",
+                        validate20RawPlugins( problems, mngt.getPlugins(), 
prefix + ".pluginManagement.plugins.plugin",
                                             request );
                     }
                 }
@@ -176,7 +178,7 @@ public class DefaultModelValidator
         }
     }
 
-    private void validateRawPlugins( ModelProblemCollector problems, 
List<Plugin> plugins, String prefix,
+    private void validate20RawPlugins( ModelProblemCollector problems, 
List<Plugin> plugins, String prefix,
                                      ModelBuildingRequest request )
     {
         Severity errOn31 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
@@ -191,7 +193,7 @@ public class DefaultModelValidator
 
             if ( existing != null )
             {
-                addViolation( problems, errOn31, prefix + 
".(groupId:artifactId)", null,
+                addViolation( problems, errOn31, Version.V20, prefix + 
".(groupId:artifactId)", null,
                               "must be unique but found duplicate declaration 
of plugin " + key, plugin );
             }
             else
@@ -205,7 +207,7 @@ public class DefaultModelValidator
             {
                 if ( !executionIds.add( exec.getId() ) )
                 {
-                    addViolation( problems, Severity.ERROR, prefix + "[" + 
plugin.getKey()
+                    addViolation( problems, Severity.ERROR, Version.V20, 
prefix + "[" + plugin.getKey()
                         + "].executions.execution.id", null, "must be unique 
but found duplicate execution with id "
                         + exec.getId(), exec );
                 }
@@ -215,19 +217,19 @@ public class DefaultModelValidator
 
     public void validateEffectiveModel( Model model, ModelBuildingRequest 
request, ModelProblemCollector problems )
     {
-        validateStringNotEmpty( "modelVersion", problems, Severity.ERROR, 
model.getModelVersion(), model );
+        validateStringNotEmpty( "modelVersion", problems, Severity.ERROR, 
Version.BASE, model.getModelVersion(), model );
 
         validateId( "groupId", problems, model.getGroupId(), model );
 
         validateId( "artifactId", problems, model.getArtifactId(), model );
 
-        validateStringNotEmpty( "packaging", problems, Severity.ERROR, 
model.getPackaging(), model );
+        validateStringNotEmpty( "packaging", problems, Severity.ERROR, 
Version.BASE, model.getPackaging(), model );
 
         if ( !model.getModules().isEmpty() )
         {
             if ( !"pom".equals( model.getPackaging() ) )
             {
-                addViolation( problems, Severity.ERROR, "packaging", null, 
"with value '" + model.getPackaging()
+                addViolation( problems, Severity.ERROR, 
Version.BASE,"packaging", null, "with value '" + model.getPackaging()
                     + "' is invalid. Aggregator projects " + "require 'pom' as 
packaging.", model );
             }
 
@@ -236,14 +238,14 @@ public class DefaultModelValidator
                 String module = model.getModules().get( i );
                 if ( StringUtils.isBlank( module ) )
                 {
-                    addViolation( problems, Severity.WARNING, 
"modules.module[" + i + "]", null,
+                    addViolation( problems, Severity.WARNING, Version.BASE, 
"modules.module[" + i + "]", null,
                                   "has been specified without a path to the 
project directory.",
                                   model.getLocation( "modules" ) );
                 }
             }
         }
 
-        validateStringNotEmpty( "version", problems, Severity.ERROR, 
model.getVersion(), model );
+        validateStringNotEmpty( "version", problems, Severity.ERROR, 
Version.BASE, model.getVersion(), model );
 
         Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
@@ -263,43 +265,43 @@ public class DefaultModelValidator
                 String module = model.getModules().get( i );
                 if ( !modules.add( module ) )
                 {
-                    addViolation( problems, Severity.ERROR, "modules.module[" 
+ i + "]", null,
+                    addViolation( problems, Severity.ERROR, Version.V20, 
"modules.module[" + i + "]", null,
                                   "specifies duplicate child module " + 
module, model.getLocation( "modules" ) );
                 }
             }
 
             Severity errOn31 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
 
-            validateBannedCharacters( "version", problems, errOn31, 
model.getVersion(), null, model,
+            validateBannedCharacters( "version", problems, errOn31, 
Version.V20, model.getVersion(), null, model,
                                       ILLEGAL_VERSION_CHARS );
-            validateProperSnapshotVersion( "version", problems, errOn31, 
model.getVersion(), null, model );
+            validate20ProperSnapshotVersion( "version", problems, errOn31, 
Version.V20, model.getVersion(), null, model );
 
             Build build = model.getBuild();
             if ( build != null )
             {
                 for ( Plugin p : build.getPlugins() )
                 {
-                    validateStringNotEmpty( "build.plugins.plugin.artifactId", 
problems, Severity.ERROR,
+                    validateStringNotEmpty( "build.plugins.plugin.artifactId", 
problems, Severity.ERROR, Version.V20,
                                             p.getArtifactId(), p );
 
-                    validateStringNotEmpty( "build.plugins.plugin.groupId", 
problems, Severity.ERROR, p.getGroupId(),
+                    validateStringNotEmpty( "build.plugins.plugin.groupId", 
problems, Severity.ERROR, Version.V20, p.getGroupId(),
                                             p );
 
-                    validatePluginVersion( "build.plugins.plugin.version", 
problems, p.getVersion(), p.getKey(), p,
+                    validate20PluginVersion( "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, Version.V20, p.getInherited(), p.getKey(),
                                      p );
 
-                    validateBoolean( "build.plugins.plugin.extensions", 
problems, errOn30, p.getExtensions(),
+                    validateBoolean( "build.plugins.plugin.extensions", 
problems, errOn30, Version.V20, p.getExtensions(),
                                      p.getKey(), p );
 
-                    validateEffectivePluginDependencies( problems, p, request 
);
+                    validate20EffectivePluginDependencies( problems, p, 
request );
                 }
 
-                validateResources( problems, build.getResources(), 
"build.resources.resource", request );
+                validate20RawResources( problems, build.getResources(), 
"build.resources.resource", request );
 
-                validateResources( problems, build.getTestResources(), 
"build.testResources.testResource", request );
+                validate20RawResources( problems, build.getTestResources(), 
"build.testResources.testResource", request );
             }
 
             Reporting reporting = model.getReporting();
@@ -307,25 +309,25 @@ public class DefaultModelValidator
             {
                 for ( ReportPlugin p : reporting.getPlugins() )
                 {
-                    validateStringNotEmpty( 
"reporting.plugins.plugin.artifactId", problems, Severity.ERROR,
+                    validateStringNotEmpty( 
"reporting.plugins.plugin.artifactId", problems, Severity.ERROR, Version.V20,
                                             p.getArtifactId(), p );
 
-                    validateStringNotEmpty( 
"reporting.plugins.plugin.groupId", problems, Severity.ERROR,
+                    validateStringNotEmpty( 
"reporting.plugins.plugin.groupId", problems, Severity.ERROR, Version.V20,
                                             p.getGroupId(), p );
 
-                    validateStringNotEmpty( 
"reporting.plugins.plugin.version", problems, errOn31, p.getVersion(),
+                    validateStringNotEmpty( 
"reporting.plugins.plugin.version", problems, errOn31, Version.V20, 
p.getVersion(),
                                             p.getKey(), p );
                 }
             }
 
             for ( Repository repository : model.getRepositories() )
             {
-                validateRepository( problems, repository, 
"repositories.repository", request );
+                validate20EffectiveRepository( problems, repository, 
"repositories.repository", request );
             }
 
             for ( Repository repository : model.getPluginRepositories() )
             {
-                validateRepository( problems, repository, 
"pluginRepositories.pluginRepository", request );
+                validate20EffectiveRepository( problems, repository, 
"pluginRepositories.pluginRepository", request );
             }
 
             DistributionManagement distMgmt = 
model.getDistributionManagement();
@@ -333,18 +335,18 @@ public class DefaultModelValidator
             {
                 if ( distMgmt.getStatus() != null )
                 {
-                    addViolation( problems, Severity.ERROR, 
"distributionManagement.status", null,
+                    addViolation( problems, Severity.ERROR, Version.V20, 
"distributionManagement.status", null,
                                   "must not be specified.", distMgmt );
                 }
 
-                validateRepository( problems, distMgmt.getRepository(), 
"distributionManagement.repository", request );
-                validateRepository( problems, distMgmt.getSnapshotRepository(),
+                validate20EffectiveRepository( problems, 
distMgmt.getRepository(), "distributionManagement.repository", request );
+                validate20EffectiveRepository( problems, 
distMgmt.getSnapshotRepository(),
                                     
"distributionManagement.snapshotRepository", request );
             }
         }
     }
 
-    private void validateRawDependencies( ModelProblemCollector problems, 
List<Dependency> dependencies, String prefix,
+    private void validate20RawDependencies( ModelProblemCollector problems, 
List<Dependency> dependencies, String prefix,
                                           ModelBuildingRequest request )
     {
         Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
@@ -360,12 +362,12 @@ public class DefaultModelValidator
             {
                 if ( !"pom".equals( dependency.getType() ) )
                 {
-                    addViolation( problems, Severity.WARNING, prefix + 
".type", key,
+                    addViolation( problems, Severity.WARNING, Version.V20, 
prefix + ".type", key,
                                   "must be 'pom' to import the managed 
dependencies.", dependency );
                 }
                 else if ( StringUtils.isNotEmpty( dependency.getClassifier() ) 
)
                 {
-                    addViolation( problems, errOn30, prefix + ".classifier", 
key,
+                    addViolation( problems, errOn30, Version.V20, prefix + 
".classifier", key,
                                   "must be empty, imported POM cannot have a 
classifier.", dependency );
                 }
             }
@@ -376,12 +378,12 @@ public class DefaultModelValidator
                 {
                     if ( !hasExpression( sysPath ) )
                     {
-                        addViolation( problems, Severity.WARNING, prefix + 
".systemPath", key,
+                        addViolation( problems, Severity.WARNING, Version.V20, 
prefix + ".systemPath", key,
                                       "should use a variable instead of a 
hard-coded path " + sysPath, dependency );
                     }
                     else if ( sysPath.contains( "${basedir}" ) || 
sysPath.contains( "${project.basedir}" ) )
                     {
-                        addViolation( problems, Severity.WARNING, prefix + 
".systemPath", key,
+                        addViolation( problems, Severity.WARNING, Version.V20, 
prefix + ".systemPath", key,
                                       "should not point at files within the 
project directory, " + sysPath
                                           + " will be unresolvable by 
dependent projects", dependency );
                     }
@@ -406,7 +408,7 @@ public class DefaultModelValidator
                             + StringUtils.defaultString( 
dependency.getVersion(), "(?)" );
                 }
 
-                addViolation( problems, errOn31, prefix + 
".(groupId:artifactId:type:classifier)", null,
+                addViolation( problems, errOn31, Version.V20, prefix + 
".(groupId:artifactId:type:classifier)", null,
                               "must be unique: " + key + " -> " + msg, 
dependency );
             }
             else
@@ -429,24 +431,24 @@ public class DefaultModelValidator
 
             if ( request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
             {
-                validateBoolean( prefix + "optional", problems, errOn30, 
d.getOptional(), d.getManagementKey(), d );
+                validateBoolean( prefix + "optional", problems, errOn30, 
Version.V20, d.getOptional(), d.getManagementKey(), d );
 
                 if ( !management )
                 {
-                    validateVersion( prefix + "version", problems, errOn30, 
d.getVersion(), d.getManagementKey(), d );
+                    validateVersion( prefix + "version", problems, errOn30, 
Version.V20, 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(), d,
+                    validateEnum( prefix + "scope", problems, 
Severity.WARNING, Version.V20, d.getScope(), d.getManagementKey(), d,
                                   "provided", "compile", "runtime", "test", 
"system" );
                 }
             }
         }
     }
 
-    private void validateEffectivePluginDependencies( ModelProblemCollector 
problems, Plugin plugin,
+    private void validate20EffectivePluginDependencies( ModelProblemCollector 
problems, Plugin plugin,
                                                       ModelBuildingRequest 
request )
     {
         List<Dependency> dependencies = plugin.getDependencies();
@@ -461,9 +463,9 @@ public class DefaultModelValidator
             {
                 validateEffectiveDependency( problems, d, false, prefix, 
request );
 
-                validateVersion( prefix + "version", problems, errOn30, 
d.getVersion(), d.getManagementKey(), d );
+                validateVersion( prefix + "version", problems, errOn30, 
Version.BASE, d.getVersion(), d.getManagementKey(), d );
 
-                validateEnum( prefix + "scope", problems, errOn30, 
d.getScope(), d.getManagementKey(), d, "compile",
+                validateEnum( prefix + "scope", problems, errOn30, 
Version.BASE, d.getScope(), d.getManagementKey(), d, "compile",
                               "runtime", "system" );
             }
         }
@@ -472,15 +474,15 @@ public class DefaultModelValidator
     private void validateEffectiveDependency( ModelProblemCollector problems, 
Dependency d, boolean management,
                                               String prefix, 
ModelBuildingRequest request )
     {
-        validateId( prefix + "artifactId", problems, Severity.ERROR, 
d.getArtifactId(), d.getManagementKey(), d );
+        validateId( prefix + "artifactId", problems, Severity.ERROR, 
Version.BASE, d.getArtifactId(), d.getManagementKey(), d );
 
-        validateId( prefix + "groupId", problems, Severity.ERROR, 
d.getGroupId(), d.getManagementKey(), d );
+        validateId( prefix + "groupId", problems, Severity.ERROR, 
Version.BASE, d.getGroupId(), d.getManagementKey(), d );
 
         if ( !management )
         {
-            validateStringNotEmpty( prefix + "type", problems, Severity.ERROR, 
d.getType(), d.getManagementKey(), d );
+            validateStringNotEmpty( prefix + "type", problems, Severity.ERROR, 
Version.BASE, d.getType(), d.getManagementKey(), d );
 
-            validateStringNotEmpty( prefix + "version", problems, 
Severity.ERROR, d.getVersion(), d.getManagementKey(),
+            validateStringNotEmpty( prefix + "version", problems, 
Severity.ERROR, Version.BASE, d.getVersion(), d.getManagementKey(),
                                     d );
         }
 
@@ -490,7 +492,7 @@ public class DefaultModelValidator
 
             if ( StringUtils.isEmpty( systemPath ) )
             {
-                addViolation( problems, Severity.ERROR, prefix + "systemPath", 
d.getManagementKey(), "is missing.",
+                addViolation( problems, Severity.ERROR, Version.BASE, prefix + 
"systemPath", d.getManagementKey(), "is missing.",
                               d );
             }
             else
@@ -498,7 +500,7 @@ public class DefaultModelValidator
                 File sysFile = new File( systemPath );
                 if ( !sysFile.isAbsolute() )
                 {
-                    addViolation( problems, Severity.ERROR, prefix + 
"systemPath", d.getManagementKey(),
+                    addViolation( problems, Severity.ERROR, Version.BASE, 
prefix + "systemPath", d.getManagementKey(),
                                   "must specify an absolute path but is " + 
systemPath, d );
                 }
                 else if ( !sysFile.isFile() )
@@ -511,13 +513,13 @@ 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, d );
+                    addViolation( problems, Severity.WARNING, Version.BASE, 
prefix + "systemPath", d.getManagementKey(), msg, d );
                 }
             }
         }
         else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
         {
-            addViolation( problems, Severity.ERROR, prefix + "systemPath", 
d.getManagementKey(), "must be omitted."
+            addViolation( problems, Severity.ERROR, Version.BASE, prefix + 
"systemPath", d.getManagementKey(), "must be omitted."
                 + " This field may only be specified for a dependency with 
system scope.", d );
         }
 
@@ -525,25 +527,25 @@ public class DefaultModelValidator
         {
             for ( Exclusion exclusion : d.getExclusions() )
             {
-                validateId( prefix + "exclusions.exclusion.groupId", problems, 
Severity.WARNING,
+                validateId( prefix + "exclusions.exclusion.groupId", problems, 
Severity.WARNING, Version.V20,
                             exclusion.getGroupId(), d.getManagementKey(), 
exclusion );
 
-                validateId( prefix + "exclusions.exclusion.artifactId", 
problems, Severity.WARNING,
+                validateId( prefix + "exclusions.exclusion.artifactId", 
problems, Severity.WARNING, Version.V20,
                             exclusion.getArtifactId(), d.getManagementKey(), 
exclusion );
             }
         }
     }
 
-    private void validateRepositories( ModelProblemCollector problems, 
List<Repository> repositories, String prefix,
+    private void validateRawRepositories( ModelProblemCollector problems, 
List<Repository> repositories, String prefix,
                                        ModelBuildingRequest request )
     {
         Map<String, Repository> index = new HashMap<String, Repository>();
 
         for ( Repository repository : repositories )
         {
-            validateStringNotEmpty( prefix + ".id", problems, Severity.ERROR, 
repository.getId(), repository );
+            validateStringNotEmpty( prefix + ".id", problems, Severity.ERROR, 
Version.V20, repository.getId(), repository );
 
-            validateStringNotEmpty( prefix + "[" + repository.getId() + 
"].url", problems, Severity.ERROR,
+            validateStringNotEmpty( prefix + "[" + repository.getId() + 
"].url", problems, Severity.ERROR, Version.V20,
                                     repository.getUrl(), repository );
 
             String key = repository.getId();
@@ -554,7 +556,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() + " -> "
+                addViolation( problems, errOn30, Version.V20, prefix + ".id", 
null, "must be unique: " + repository.getId() + " -> "
                     + existing.getUrl() + " vs " + repository.getUrl(), 
repository );
             }
             else
@@ -564,42 +566,42 @@ public class DefaultModelValidator
         }
     }
 
-    private void validateRepository( ModelProblemCollector problems, 
Repository repository, String prefix,
+    private void validate20EffectiveRepository( ModelProblemCollector 
problems, Repository repository, String prefix,
                                      ModelBuildingRequest request )
     {
         if ( repository != null )
         {
             Severity errOn31 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
 
-            validateBannedCharacters( prefix + ".id", problems, errOn31, 
repository.getId(), null, repository,
+            validateBannedCharacters( prefix + ".id", problems, errOn31, 
Version.V20, repository.getId(), null, repository,
                                       ILLEGAL_REPO_ID_CHARS );
 
             if ( "local".equals( repository.getId() ) )
             {
-                addViolation( problems, errOn31, prefix + ".id", null, "must 
not be 'local'"
+                addViolation( problems, errOn31, Version.V20, 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.", repository );
             }
 
             if ( "legacy".equals( repository.getLayout() ) )
             {
-                addViolation( problems, Severity.WARNING, prefix + ".layout", 
repository.getId(),
+                addViolation( problems, Severity.WARNING, Version.V20, prefix 
+ ".layout", repository.getId(),
                               "uses the unsupported value 'legacy', artifact 
resolution might fail.", repository );
             }
         }
     }
 
-    private void validateResources( ModelProblemCollector problems, 
List<Resource> resources, String prefix,
+    private void validate20RawResources( ModelProblemCollector problems, 
List<Resource> resources, String prefix,
                                     ModelBuildingRequest request )
     {
         Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
         for ( Resource resource : resources )
         {
-            validateStringNotEmpty( prefix + ".directory", problems, 
Severity.ERROR, resource.getDirectory(),
+            validateStringNotEmpty( prefix + ".directory", problems, 
Severity.ERROR, Version.V20, resource.getDirectory(),
                                     resource );
 
-            validateBoolean( prefix + ".filtering", problems, errOn30, 
resource.getFiltering(),
+            validateBoolean( prefix + ".filtering", problems, errOn30, 
Version.V20, resource.getFiltering(),
                              resource.getDirectory(), resource );
         }
     }
@@ -611,13 +613,13 @@ public class DefaultModelValidator
     private boolean validateId( String fieldName, ModelProblemCollector 
problems, String id,
                                 InputLocationTracker tracker )
     {
-        return validateId( fieldName, problems, Severity.ERROR, id, null, 
tracker );
+        return validateId( fieldName, problems, Severity.ERROR, Version.BASE, 
id, null, tracker );
     }
 
-    private boolean validateId( String fieldName, ModelProblemCollector 
problems, Severity severity, String id,
+    private boolean validateId( String fieldName, ModelProblemCollector 
problems, Severity severity, Version version, String id,
                                 String sourceHint, InputLocationTracker 
tracker )
     {
-        if ( !validateStringNotEmpty( fieldName, problems, severity, id, 
sourceHint, tracker ) )
+        if ( !validateStringNotEmpty( fieldName, problems, severity, version, 
id, sourceHint, tracker ) )
         {
             return false;
         }
@@ -626,14 +628,14 @@ public class DefaultModelValidator
             boolean match = id.matches( ID_REGEX );
             if ( !match )
             {
-                addViolation( problems, severity, fieldName, sourceHint, "with 
value '" + id
+                addViolation( problems, severity, version, fieldName, 
sourceHint, "with value '" + id
                     + "' does not match a valid id pattern.", tracker );
             }
             return match;
         }
     }
 
-    private boolean validateStringNoExpression( String fieldName, 
ModelProblemCollector problems, Severity severity,
+    private boolean validateStringNoExpression( String fieldName, 
ModelProblemCollector problems, Severity severity, Version version,
                                                 String string, 
InputLocationTracker tracker )
     {
         if ( !hasExpression( string ) )
@@ -641,7 +643,7 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, null, "contains an 
expression but should be a constant.",
+        addViolation( problems, severity, version, fieldName, null, "contains 
an expression but should be a constant.",
                       tracker );
 
         return false;
@@ -652,10 +654,10 @@ public class DefaultModelValidator
         return value != null && value.contains( "${" );
     }
 
-    private boolean validateStringNotEmpty( String fieldName, 
ModelProblemCollector problems, Severity severity,
+    private boolean validateStringNotEmpty( String fieldName, 
ModelProblemCollector problems, Severity severity, Version version,
                                             String string, 
InputLocationTracker tracker )
     {
-        return validateStringNotEmpty( fieldName, problems, severity, string, 
null, tracker );
+        return validateStringNotEmpty( fieldName, problems, severity, version, 
string, null, tracker );
     }
 
     /**
@@ -666,10 +668,10 @@ public class DefaultModelValidator
      * <li><code>string.length > 0</code>
      * </ul>
      */
-    private boolean validateStringNotEmpty( String fieldName, 
ModelProblemCollector problems, Severity severity,
+    private boolean validateStringNotEmpty( String fieldName, 
ModelProblemCollector problems, Severity severity, Version version, 
                                             String string, String sourceHint, 
InputLocationTracker tracker )
     {
-        if ( !validateNotNull( fieldName, problems, severity, string, 
sourceHint, tracker ) )
+        if ( !validateNotNull( fieldName, problems, severity, version, string, 
sourceHint, tracker ) )
         {
             return false;
         }
@@ -679,7 +681,7 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "is 
missing.", tracker );
+        addViolation( problems, severity, version, fieldName, sourceHint, "is 
missing.", tracker );
 
         return false;
     }
@@ -691,7 +693,7 @@ public class DefaultModelValidator
      * <li><code>string != null</code>
      * </ul>
      */
-    private boolean validateNotNull( String fieldName, ModelProblemCollector 
problems, Severity severity,
+    private boolean validateNotNull( String fieldName, ModelProblemCollector 
problems, Severity severity, Version version,
                                      Object object, String sourceHint, 
InputLocationTracker tracker )
     {
         if ( object != null )
@@ -699,12 +701,12 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "is 
missing.", tracker );
+        addViolation( problems, severity, version, fieldName, sourceHint, "is 
missing.", tracker );
 
         return false;
     }
 
-    private boolean validateBoolean( String fieldName, ModelProblemCollector 
problems, Severity severity,
+    private boolean validateBoolean( String fieldName, ModelProblemCollector 
problems, Severity severity, Version version,
                                      String string, String sourceHint, 
InputLocationTracker tracker )
     {
         if ( string == null || string.length() <= 0 )
@@ -717,13 +719,13 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "must be 
'true' or 'false' but is '" + string + "'.",
+        addViolation( problems, severity, version, fieldName, sourceHint, 
"must be 'true' or 'false' but is '" + string + "'.",
                       tracker );
 
         return false;
     }
 
-    private boolean validateEnum( String fieldName, ModelProblemCollector 
problems, Severity severity, String string,
+    private boolean validateEnum( String fieldName, ModelProblemCollector 
problems, Severity severity, Version version, String string,
                                   String sourceHint, InputLocationTracker 
tracker, String... validValues )
     {
         if ( string == null || string.length() <= 0 )
@@ -738,13 +740,13 @@ public class DefaultModelValidator
             return true;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "must be one 
of " + values + " but is '" + string
+        addViolation( problems, severity, version, fieldName, sourceHint, 
"must be one of " + values + " but is '" + string
             + "'.", tracker );
 
         return false;
     }
 
-    private boolean validateBannedCharacters( String fieldName, 
ModelProblemCollector problems, Severity severity,
+    private boolean validateBannedCharacters( String fieldName, 
ModelProblemCollector problems, Severity severity, Version version, 
                                               String string, String 
sourceHint, InputLocationTracker tracker,
                                               String banned )
     {
@@ -754,7 +756,7 @@ public class DefaultModelValidator
             {
                 if ( banned.indexOf( string.charAt( i ) ) >= 0 )
                 {
-                    addViolation( problems, severity, fieldName, sourceHint,
+                    addViolation( problems, severity, version, fieldName, 
sourceHint,
                                   "must not contain any of these characters " 
+ banned + " but found "
                                       + string.charAt( i ), tracker );
                     return false;
@@ -765,7 +767,7 @@ public class DefaultModelValidator
         return true;
     }
 
-    private boolean validateVersion( String fieldName, ModelProblemCollector 
problems, Severity severity,
+    private boolean validateVersion( String fieldName, ModelProblemCollector 
problems, Severity severity, Version version,
                                      String string, String sourceHint, 
InputLocationTracker tracker )
     {
         if ( string == null || string.length() <= 0 )
@@ -775,12 +777,12 @@ public class DefaultModelValidator
 
         if ( hasExpression( string ) )
         {
-            addViolation( problems, severity, fieldName, sourceHint,
+            addViolation( problems, severity, version, fieldName, sourceHint,
                           "must be a valid version but is '" + string + "'.", 
tracker );
             return false;
         }
 
-        if ( !validateBannedCharacters( fieldName, problems, severity, string, 
sourceHint, tracker,
+        if ( !validateBannedCharacters( fieldName, problems, severity, 
version, string, sourceHint, tracker,
                                         ILLEGAL_VERSION_CHARS ) )
         {
             return false;
@@ -789,7 +791,7 @@ public class DefaultModelValidator
         return true;
     }
 
-    private boolean validateProperSnapshotVersion( String fieldName, 
ModelProblemCollector problems, Severity severity,
+    private boolean validate20ProperSnapshotVersion( String fieldName, 
ModelProblemCollector problems, Severity severity, Version version,
                                                    String string, String 
sourceHint, InputLocationTracker tracker )
     {
         if ( string == null || string.length() <= 0 )
@@ -799,7 +801,7 @@ public class DefaultModelValidator
 
         if ( string.endsWith( "SNAPSHOT" ) && !string.endsWith( "-SNAPSHOT" ) )
         {
-            addViolation( problems, severity, fieldName, sourceHint, "uses an 
unsupported snapshot version format"
+            addViolation( problems, severity, version, fieldName, sourceHint, 
"uses an unsupported snapshot version format"
                 + ", should be '*-SNAPSHOT' instead.", tracker );
             return false;
         }
@@ -807,7 +809,7 @@ public class DefaultModelValidator
         return true;
     }
 
-    private boolean validatePluginVersion( String fieldName, 
ModelProblemCollector problems, String string,
+    private boolean validate20PluginVersion( String fieldName, 
ModelProblemCollector problems, String string,
                                            String sourceHint, 
InputLocationTracker tracker,
                                            ModelBuildingRequest request )
     {
@@ -819,14 +821,14 @@ public class DefaultModelValidator
 
         Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
 
-        if ( !validateVersion( fieldName, problems, errOn30, string, 
sourceHint, tracker ) )
+        if ( !validateVersion( fieldName, problems, errOn30, Version.V20, 
string, sourceHint, tracker ) )
         {
             return false;
         }
 
         if ( string.length() <= 0 || "RELEASE".equals( string ) || 
"LATEST".equals( string ) )
         {
-            addViolation( problems, errOn30, fieldName, sourceHint, "must be a 
valid version but is '" + string + "'.",
+            addViolation( problems, errOn30, Version.V20, fieldName, 
sourceHint, "must be a valid version but is '" + string + "'.",
                           tracker );
             return false;
         }
@@ -834,7 +836,7 @@ public class DefaultModelValidator
         return true;
     }
 
-    private static void addViolation( ModelProblemCollector problems, Severity 
severity, String fieldName,
+    private static void addViolation( ModelProblemCollector problems, Severity 
severity, Version version, String fieldName,
                                       String sourceHint, String message, 
InputLocationTracker tracker )
     {
         StringBuilder buffer = new StringBuilder( 256 );
@@ -847,7 +849,7 @@ public class DefaultModelValidator
 
         buffer.append( ' ' ).append( message );
 
-        problems.add( severity, buffer.toString(), getLocation( fieldName, 
tracker ), null );
+        problems.add( new ModelProblemCollectorRequest( severity, version 
).setMessage( buffer.toString() ).setLocation( getLocation( fieldName, tracker 
)));
     }
 
     private static InputLocation getLocation( String fieldName, 
InputLocationTracker tracker )

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=1357589&r1=1357588&r2=1357589&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
 Thu Jul  5 13:11:15 2012
@@ -22,8 +22,6 @@ 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;
 
 /**
  * A simple model problem collector for testing the model building components.
@@ -55,21 +53,20 @@ public class SimpleProblemCollector
         return fatals;
     }
 
-    public void add( Severity severity, String message, InputLocation 
location, Exception cause )
+    public void add( ModelProblemCollectorRequest req )
     {
-        switch ( severity )
+        switch ( req.getSeverity() )
         {
             case FATAL:
-                fatals.add( message );
+                fatals.add( req.getMessage() );
                 break;
             case ERROR:
-                errors.add( message );
+                errors.add( req.getMessage() );
                 break;
             case WARNING:
-                warnings.add( message );
+                warnings.add( req.getMessage() );
                 break;
         }
 
     }
-
 }


Reply via email to