You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2016/09/24 15:19:46 UTC

[24/33] maven git commit: [MNG-6075] Increase the model validation level to the next minor level version.

[MNG-6075] Increase the model validation level to the next minor level version.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/0fbad04c
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/0fbad04c
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/0fbad04c

Branch: refs/heads/MNG-6056-feature-toggle
Commit: 0fbad04c5ff63c87b6d80873cb8b45b6c9b79781
Parents: 744b98e
Author: Christian Schulte <sc...@apache.org>
Authored: Mon Aug 1 09:36:06 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Mon Aug 1 09:36:06 2016 +0200

----------------------------------------------------------------------
 .../model/building/DefaultModelBuilder.java     | 29 ++++++++++++++++++++
 1 file changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/0fbad04c/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index e5e5dc5..2d50ed1 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -30,6 +30,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 
 import org.apache.commons.lang3.Validate;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
@@ -387,6 +388,7 @@ public class DefaultModelBuilder
         }
 
         problems.setSource( inputModel );
+        checkModelVersions( lineage, request, problems );
         checkPluginVersions( lineage, request, problems );
 
         // [MNG-4052] import scope dependencies prefer to download pom rather than find it in the current project
@@ -769,6 +771,33 @@ public class DefaultModelBuilder
         }
     }
 
+    private void checkModelVersions( final List<ModelData> lineage, final ModelBuildingRequest request,
+                                     final ModelProblemCollector problems )
+    {
+        if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 )
+        {
+            final Set<String> modelVersions = new HashSet<>( lineage.size() );
+
+            for ( int i = lineage.size() - 1; i >= 0; i-- )
+            {
+                final Model model = lineage.get( i ).getModel();
+
+                if ( model.getModelVersion() != null )
+                {
+                    if ( !modelVersions.isEmpty() && modelVersions.add( model.getModelVersion() ) )
+                    {
+                        problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.V31 )
+                            .setMessage( String.format(
+                                    "Cannot inherit from parent '%s' with different model version '%s'."
+                                        + " Expected model version '%s'.",
+                                    model.getId(), model.getModelVersion(), modelVersions.iterator().next() ) ) );
+
+                    }
+                }
+            }
+        }
+    }
+
     private void processImports( final List<Model> lineage, final ModelBuildingRequest request,
                                  final DefaultModelProblemCollector problems )
     {