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} &lt; {@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() );
     }