You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2008/04/12 02:51:08 UTC

svn commit: r647357 - in /maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver: AbstractArtifactResolutionException.java DefaultArtifactCollector.java

Author: vsiveton
Date: Fri Apr 11 17:51:03 2008
New Revision: 647357

URL: http://svn.apache.org/viewvc?rev=647357&view=rev
Log:
o improved the dependency trail when an OverConstrainedVersionException occurred

Modified:
    maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java
    maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java

Modified: maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java?rev=647357&r1=647356&r2=647357&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java (original)
+++ maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/AbstractArtifactResolutionException.java Fri Apr 11 17:51:03 2008
@@ -45,7 +45,7 @@
 
     private String classifier;
 
-    private Artifact artifact; 
+    private Artifact artifact;
 
     private List remoteRepositories;
 
@@ -200,6 +200,7 @@
             }
         }
 
+        sb.append( LS );
         sb.append( constructArtifactPath( path, "" ) );
         sb.append( LS );
         return sb.toString();

Modified: maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?rev=647357&r1=647356&r2=647357&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (original)
+++ maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java Fri Apr 11 17:51:03 2008
@@ -33,8 +33,6 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
@@ -73,7 +71,7 @@
 
         ManagedVersionMap versionMap = getManagedVersionsMap( originatingArtifact, managedVersions );
 
-        recurse( root, resolvedArtifacts, versionMap, localRepository, remoteRepositories, source, filter,
+        recurse( originatingArtifact, root, resolvedArtifacts, versionMap, localRepository, remoteRepositories, source, filter,
                  listeners );
 
         Set set = new LinkedHashSet();
@@ -142,7 +140,7 @@
         return versionMap;
     }
 
-    private void recurse( ResolutionNode node, Map resolvedArtifacts, ManagedVersionMap managedVersions,
+    private void recurse( Artifact originatingArtifact, ResolutionNode node, Map resolvedArtifacts, ManagedVersionMap managedVersions,
                           ArtifactRepository localRepository, List remoteRepositories, ArtifactMetadataSource source,
                           ArtifactFilter filter, List listeners )
         throws CyclicDependencyException, ArtifactResolutionException, OverConstrainedVersionException
@@ -150,7 +148,7 @@
         fireEvent( ResolutionListener.TEST_ARTIFACT, listeners, node );
 
         Object key = node.getKey();
-        
+
         // TODO: Does this check need to happen here?  Had to add the same call
         // below when we iterate on child nodes -- will that suffice?
         if ( managedVersions.containsKey( key ))
@@ -192,7 +190,7 @@
                         for ( int j = 0; j < 2; j++ )
                         {
                             Artifact resetArtifact = resetNodes[j].getArtifact();
-                            
+
                             //MNG-2123: if the previous node was not a range, then it wouldn't have any available
                             //versions. We just clobbered the selected version above. (why? i have no idea.)
                             //So since we are here and this is ranges we must go figure out the version (for a third time...)
@@ -220,7 +218,7 @@
                                     }
                                 }
                                 //end hack
-                               
+
                                 //MNG-2861: match version can return null
                                 ArtifactVersion selectedVersion = resetArtifact.getVersionRange().matchVersion( resetArtifact.getAvailableVersions() );
                                 if (selectedVersion != null)
@@ -231,7 +229,7 @@
                                 {
                                   throw new OverConstrainedVersionException(" Unable to find a version in "+ resetArtifact.getAvailableVersions()+" to match the range "+ resetArtifact.getVersionRange(), resetArtifact);
                                 }
-                                
+
                                 fireEvent( ResolutionListener.SELECT_VERSION_FROM_RANGE, listeners, resetNodes[j] );
                             }
                         }
@@ -305,7 +303,7 @@
                             // managed version's POM, *not* any other version's POM.
                             // We retrieve the POM below in the retrieval step.
                             manageArtifact( child, managedVersions, listeners );
-                            
+
                             // Also, we need to ensure that any exclusions it presents are
                             // added to the artifact before we retrieve the metadata
                             // for the artifact; otherwise we may end up with unwanted
@@ -354,18 +352,32 @@
 
                                 if ( version == null )
                                 {
+                                    // Getting the dependency trail so it can be logged in the exception
+                                    List dependencyTrail = new ArrayList();
+                                    dependencyTrail.add( originatingArtifact );
+                                    for ( Iterator it = previousNodes.iterator(); it.hasNext(); )
+                                    {
+                                        ResolutionNode resolutionNode = (ResolutionNode) it.next();
+
+                                        if ( originatingArtifact.equals( resolutionNode.getArtifact() ) )
+                                        {
+                                            continue;
+                                        }
+                                        dependencyTrail.add( resolutionNode.getArtifact() );
+                                    }
+                                    dependencyTrail.add( artifact );
+                                    artifact.setDependencyTrail( dependencyTrail );
+
                                     if ( versions.isEmpty() )
                                     {
                                         throw new OverConstrainedVersionException(
                                             "No versions are present in the repository for the artifact with a range " +
                                                 versionRange, artifact, remoteRepositories );
                                     }
-                                    else
-                                    {
-                                        throw new OverConstrainedVersionException( "Couldn't find a version in " +
-                                            versions + " to match range " + versionRange, artifact,
-                                                                                          remoteRepositories );
-                                    }
+
+                                    throw new OverConstrainedVersionException( "Couldn't find a version in " +
+                                        versions + " to match range " + versionRange, artifact,
+                                                                                      remoteRepositories );
                                 }
                             }
 
@@ -405,7 +417,7 @@
                             e );
                     }
 
-                    recurse( child, resolvedArtifacts, managedVersions, localRepository, remoteRepositories, source,
+                    recurse( originatingArtifact, child, resolvedArtifacts, managedVersions, localRepository, remoteRepositories, source,
                              filter, listeners );
                 }
             }