Author: brianf Date: Wed Mar 5 16:35:23 2008 New Revision: 634093 URL: http://svn.apache.org/viewvc?rev=634093&view=rev Log: MNG-2123: fixed the range resolution code. It was incorrectly expecting that the previous nodes had resolved the available versions and they weren't.
Modified: 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/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=634093&r1=634092&r2=634093&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 Wed Mar 5 16:35:23 2008 @@ -192,10 +192,33 @@ for ( int j = 0; j < 2; j++ ) { Artifact resetArtifact = resetNodes[j].getArtifact(); - if ( resetArtifact.getVersion() == null && resetArtifact.getVersionRange() != null && - resetArtifact.getAvailableVersions() != null ) + + //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...) + if ( resetArtifact.getVersion() == null && resetArtifact.getVersionRange() != null) { + //go find the version. This is a total hack. See previous comment. + List versions = resetArtifact.getAvailableVersions(); + if ( versions == null ) + { + try + { + versions = + source.retrieveAvailableVersions( resetArtifact, localRepository, + remoteRepositories ); + resetArtifact.setAvailableVersions( versions ); + } + catch ( ArtifactMetadataRetrievalException e ) + { + resetArtifact.setDependencyTrail( node.getDependencyTrail() ); + throw new ArtifactResolutionException( + "Unable to get dependency information: " + + e.getMessage(), resetArtifact, + remoteRepositories, e ); + } + } resetArtifact.selectVersion( resetArtifact.getVersionRange().matchVersion( resetArtifact.getAvailableVersions() ).toString() ); fireEvent( ResolutionListener.SELECT_VERSION_FROM_RANGE, listeners, resetNodes[j] );