You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2008/03/03 07:16:43 UTC
svn commit: r632948 - in /maven/shared/trunk/maven-dependency-tree/src:
main/java/org/apache/maven/shared/dependency/tree/
test/java/org/apache/maven/shared/dependency/tree/
Author: carlos
Date: Sun Mar 2 22:16:42 2008
New Revision: 632948
URL: http://svn.apache.org/viewvc?rev=632948&view=rev
Log:
[MNG-3093] Track selectVersionFromRange events in the tree
Modified:
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java
maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java?rev=632948&r1=632947&r2=632948&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java Sun Mar 2 22:16:42 2008
@@ -26,6 +26,7 @@
import java.util.List;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
import org.apache.maven.shared.dependency.tree.traversal.SerializingDependencyNodeVisitor;
@@ -189,7 +190,11 @@
* artifact scope has not been managed.
*/
private String premanagedScope;
+
+ private VersionRange versionSelectedFromRange;
+ private List availableVersions;
+
// constructors -----------------------------------------------------------
/**
@@ -514,6 +519,40 @@
public void setPremanagedScope( String premanagedScope )
{
this.premanagedScope = premanagedScope;
+ }
+
+ /**
+ * If the version was selected from a range this method will return the range.
+ *
+ * @return the version range before a version was selected, or <code>null</code> if the artifact had a explicit
+ * version.
+ * @since 1.2
+ */
+ public VersionRange getVersionSelectedFromRange()
+ {
+ return versionSelectedFromRange;
+ }
+
+ public void setVersionSelectedFromRange( VersionRange versionSelectedFromRange )
+ {
+ this.versionSelectedFromRange = versionSelectedFromRange;
+ }
+
+ /**
+ * If the version was selected from a range this method will return the available versions when making the decision.
+ *
+ * @return {@link List} < {@link String} > the versions available when a version was selected from a range, or
+ * <code>null</code> if the artifact had a explicit version.
+ * @since 1.2
+ */
+ public List getAvailableVersions()
+ {
+ return availableVersions;
+ }
+
+ public void setAvailableVersions( List availableVersions )
+ {
+ this.availableVersions = availableVersions;
}
/**
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java?rev=632948&r1=632947&r2=632948&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java Sun Mar 2 22:16:42 2008
@@ -298,8 +298,19 @@
public void selectVersionFromRange( Artifact artifact )
{
log( "selectVersionFromRange: artifact=" + artifact );
-
- // TODO: track version selection from range in node (MNG-3093)
+
+ DependencyNode node = getNode( artifact );
+
+ /*
+ * selectVersionFromRange is called before includeArtifact
+ */
+ if ( node == null && isCurrentNodeIncluded() )
+ {
+ node = addNode( artifact );
+ }
+
+ node.setVersionSelectedFromRange( artifact.getVersionRange() );
+ node.setAvailableVersions( artifact.getAvailableVersions() );
}
/*
Modified: maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java?rev=632948&r1=632947&r2=632948&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java Sun Mar 2 22:16:42 2008
@@ -48,6 +48,11 @@
*/
private final Map resolutionGroupsByArtifact;
+ /**
+ * Map of available versions by artifact.
+ */
+ private final Map availableVersionsByArtifact;
+
// constructors -----------------------------------------------------------
/**
@@ -56,6 +61,7 @@
public ArtifactMetadataSourceStub()
{
resolutionGroupsByArtifact = new HashMap();
+ availableVersionsByArtifact = new HashMap();
}
// ArtifactMetadataSource methods -----------------------------------------
@@ -85,7 +91,9 @@
public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
List remoteRepositories ) throws ArtifactMetadataRetrievalException
{
- return Collections.EMPTY_LIST;
+ List availableVersions = (List) availableVersionsByArtifact.get( artifact );
+
+ return availableVersions != null ? availableVersions : Collections.EMPTY_LIST;
}
// public methods ---------------------------------------------------------
@@ -103,5 +111,18 @@
ResolutionGroup resolution = new ResolutionGroup( artifact, dependencyArtifacts, Collections.EMPTY_LIST );
resolutionGroupsByArtifact.put( artifact, resolution );
+ }
+
+ /**
+ * Adds versions for the specified artifact to this artifact metadata source stub.
+ *
+ * @param artifact
+ * the artifact to add metadata to
+ * @param versions
+ * the list of versions to register as available for the specified artifact
+ */
+ public void addAvailableVersions( Artifact artifact, List versions )
+ {
+ availableVersionsByArtifact.put( artifact, versions );
}
}
Modified: maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java?rev=632948&r1=632947&r2=632948&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java Sun Mar 2 22:16:42 2008
@@ -19,6 +19,7 @@
* under the License.
*/
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -41,6 +42,9 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ResolutionNode;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
@@ -552,6 +556,33 @@
assertDependencyTree( expectedRootNode, project );
}
+
+ /**
+ * Tests building a tree for a project with a dependency with version range
+ *
+ * <pre>
+ * g:p:t:1
+ * \- g:a:t:1
+ * </pre>
+ *
+ * @throws DependencyTreeBuilderException
+ */
+ public void testProjectWithVersionRange() throws DependencyTreeBuilderException
+ {
+ Artifact projectArtifact = createArtifact( "g:p:t:1" );
+ Artifact childArtifact = createArtifact( "g:a:t:[1,2)" );
+
+ MavenProject project = createProject( projectArtifact, new Artifact[] { childArtifact } );
+
+ DependencyNode expectedRootNode = createNode( "g:p:t:1" );
+ expectedRootNode.addChild( createNode( "g:a:t:1.0" ) );
+ ArtifactVersion version = new DefaultArtifactVersion( "1.0" );
+ List availableVersions = new ArrayList();
+ availableVersions.add( version );
+ artifactMetadataSource.addAvailableVersions( childArtifact, availableVersions );
+ assertDependencyTree( expectedRootNode, project );
+ }
+
// TODO: reinstate when MNG-3236 fixed
/*
public void testProjectWithFilter() throws DependencyTreeBuilderException, ArtifactResolutionException
@@ -593,7 +624,15 @@
String version = get( tokens, 3 );
String scope = get( tokens, 4 );
- VersionRange versionRange = VersionRange.createFromVersion( version );
+ VersionRange versionRange;
+ try
+ {
+ versionRange = VersionRange.createFromVersionSpec( version );
+ }
+ catch ( InvalidVersionSpecificationException e )
+ {
+ throw new RuntimeException(e);
+ }
return new DefaultArtifact( groupId, artifactId, versionRange, scope, type, null, new DefaultArtifactHandler() );
}