Author: jdcasey
Date: Wed Jul 26 14:29:08 2006
New Revision: 425848

URL: http://svn.apache.org/viewvc?rev=425848&view=rev
Log:
Merging from 425843 on trunk to fix MNG-1697.

Modified:
    
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
    
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java

Modified: 
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java?rev=425848&r1=425847&r2=425848&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
 (original)
+++ 
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
 Wed Jul 26 14:29:08 2006
@@ -75,7 +75,7 @@
             {
                 throw new DuplicateProjectException( "Project '" + id + "' is 
duplicated in the reactor" );
             }
-            
+
             dag.addVertex( id );
 
             projectMap.put( id, project );
@@ -91,8 +91,8 @@
             {
                 Dependency dependency = (Dependency) j.next();
 
-                String dependencyId = ArtifactUtils.versionlessKey( 
dependency.getGroupId(),
-                                                                    
dependency.getArtifactId() );
+                String dependencyId = ArtifactUtils
+                    .versionlessKey( dependency.getGroupId(), 
dependency.getArtifactId() );
 
                 if ( dag.getVertex( dependencyId ) != null )
                 {
@@ -168,10 +168,16 @@
         this.sortedProjects = Collections.unmodifiableList( sortedProjects );
     }
 
-    private void addEdgeWithParentCheck( Map projectMap, String extensionId, 
MavenProject project, String id )
+    private void addEdgeWithParentCheck( Map projectMap, String projectRefId, 
MavenProject project, String id )
         throws CycleDetectedException
     {
-        MavenProject extProject = (MavenProject) projectMap.get( extensionId );
+        MavenProject extProject = (MavenProject) projectMap.get( projectRefId 
);
+        
+        if ( extProject == null )
+        {
+            return;
+        }
+
         project.addProjectReference( extProject );
 
         MavenProject extParent = extProject.getParent();
@@ -179,9 +185,9 @@
         {
             String parentId = ArtifactUtils.versionlessKey( 
extParent.getGroupId(), extParent.getArtifactId() );
             // Don't add edge from parent to extension if a reverse edge 
already exists
-            if ( !dag.hasEdge( extensionId, id ) || !parentId.equals( id ) )
+            if ( !dag.hasEdge( projectRefId, id ) || !parentId.equals( id ) )
             {
-                dag.addEdge( id, extensionId );
+                dag.addEdge( id, projectRefId );
             }
         }
     }

Modified: 
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java?rev=425848&r1=425847&r2=425848&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
 (original)
+++ 
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
 Wed Jul 26 14:29:08 2006
@@ -18,11 +18,14 @@
 
 import junit.framework.TestCase;
 
+import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Extension;
 import org.apache.maven.model.Model;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -34,6 +37,32 @@
 public class ProjectSorterTest
     extends TestCase
 {
+    
+    public void testShouldNotFailWhenProjectReferencesNonExistentProject()
+        throws CycleDetectedException, DuplicateProjectException
+    {
+        MavenProject project = createProject( "group", "artifact", "1.0" );
+        Model model = project.getModel();
+        
+        Build build = model.getBuild();
+        
+        if ( build == null )
+        {
+            build = new Build();
+            model.setBuild( build );
+        }
+        
+        Extension extension = new Extension();
+        
+        extension.setArtifactId( "other-artifact" );
+        extension.setGroupId( "other.group" );
+        extension.setVersion( "1.0" );
+        
+        build.addExtension( extension );
+        
+        new ProjectSorter( Collections.singletonList( project ) );
+    }
+    
     public void testMatchingArtifactIdsDifferentGroupIds()
         throws CycleDetectedException, DuplicateProjectException
     {


Reply via email to