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 ); } }