You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/11/28 17:08:33 UTC

svn commit: r885106 - in /maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building: DefaultModelBuilder.java DefaultModelProblemCollector.java

Author: bentmann
Date: Sat Nov 28 16:08:32 2009
New Revision: 885106

URL: http://svn.apache.org/viewvc?rev=885106&view=rev
Log:
o Improved handling of circular parents

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

Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=885106&r1=885105&r2=885106&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 Sat Nov 28 16:08:32 2009
@@ -117,7 +117,7 @@
         return build( request, new LinkedHashSet<String>() );
     }
 
-    private ModelBuildingResult build( ModelBuildingRequest request, Collection<String> imports )
+    private ModelBuildingResult build( ModelBuildingRequest request, Collection<String> importIds )
         throws ModelBuildingException
     {
         DefaultModelBuildingResult result = new DefaultModelBuildingResult();
@@ -137,6 +137,9 @@
         ModelData resultData = new ModelData( inputModel );
         ModelData superData = new ModelData( getSuperModel() );
 
+        Collection<String> parentIds = new LinkedHashSet<String>();
+        parentIds.add( ModelProblemUtils.toId( inputModel ) );
+
         List<ModelData> lineage = new ArrayList<ModelData>();
 
         for ( ModelData currentData = resultData; currentData != null; )
@@ -182,6 +185,18 @@
             {
                 currentData = superData;
             }
+            else if ( !parentIds.add( currentData.getId() ) )
+            {
+                String message = "The parents form a cycle: ";
+                for ( String modelId : parentIds )
+                {
+                    message += modelId + " -> ";
+                }
+                message += currentData.getId();
+
+                problems.add( ModelProblem.Severity.FATAL, message, null );
+                throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
+            }
         }
 
         assembleInheritance( lineage, request, problems );
@@ -588,7 +603,7 @@
     }
 
     private void importDependencyManagement( Model model, ModelBuildingRequest request,
-                                             DefaultModelProblemCollector problems, Collection<String> imports )
+                                             DefaultModelProblemCollector problems, Collection<String> importIds )
     {
         DependencyManagement depMngt = model.getDependencyManagement();
 
@@ -599,7 +614,7 @@
 
         String importing = model.getGroupId() + ':' + model.getArtifactId() + ':' + model.getVersion();
 
-        imports.add( importing );
+        importIds.add( importing );
 
         ModelResolver modelResolver = request.getModelResolver();
 
@@ -624,10 +639,10 @@
 
             String imported = groupId + ':' + artifactId + ':' + version;
 
-            if ( imports.contains( imported ) )
+            if ( importIds.contains( imported ) )
             {
                 String message = "The dependencies of type=pom and with scope=import form a cycle: ";
-                for ( String modelId : imports )
+                for ( String modelId : importIds )
                 {
                     message += modelId + " -> ";
                 }
@@ -673,7 +688,7 @@
                 ModelBuildingResult importResult;
                 try
                 {
-                    importResult = build( importRequest, imports );
+                    importResult = build( importRequest, importIds );
                 }
                 catch ( ModelBuildingException e )
                 {
@@ -703,7 +718,7 @@
             importMngts.add( importMngt );
         }
 
-        imports.remove( importing );
+        importIds.remove( importing );
 
         dependencyManagementImporter.importManagement( model, importMngts, request, problems );
     }

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=885106&r1=885105&r2=885106&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 Sat Nov 28 16:08:32 2009
@@ -86,6 +86,11 @@
     {
         this.sourceModel = source;
         this.source = null;
+
+        if ( rootModel == null )
+        {
+            rootModel = source;
+        }
     }
 
     private String getSource()