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/02/11 06:12:22 UTC

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

Author: carlos
Date: Sun Feb 10 21:12:21 2008
New Revision: 620413

URL: http://svn.apache.org/viewvc?rev=620413&view=rev
Log:
[MNG-3396] Managed versions don't affect over constrained ranges. Merge 620411 from https://svn.apache.org/repos/asf/maven/artifact/trunk

Modified:
    maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
    maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.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=620413&r1=620412&r2=620413&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 Sun Feb 10 21:12:21 2008
@@ -262,6 +262,38 @@
                     Artifact artifact = child.getArtifact();
                     try
                     {
+                        Object childKey = child.getKey();
+                        if ( managedVersions.containsKey( childKey ) )
+                        {
+                            // If this child node is a managed dependency, ensure
+                            // we are using the dependency management version
+                            // of this child if applicable b/c we want to use the
+                            // 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 retrive the metadata
+                            // for the artifact; otherwise we may end up with unwanted
+                            // dependencies.
+                            Artifact ma = (Artifact) managedVersions.get( childKey );
+                            ArtifactFilter managedExclusionFilter = ma.getDependencyFilter();
+                            if ( null != managedExclusionFilter )
+                            {
+                                if ( null != artifact.getDependencyFilter() )
+                                {
+                                    AndArtifactFilter aaf = new AndArtifactFilter();
+                                    aaf.add( artifact.getDependencyFilter() );
+                                    aaf.add( managedExclusionFilter );
+                                    artifact.setDependencyFilter( aaf );
+                                }
+                                else
+                                {
+                                    artifact.setDependencyFilter( managedExclusionFilter );
+                                }
+                            }
+                        }
+
                         if ( artifact.getVersion() == null )
                         {
                             // set the recommended version
@@ -304,38 +336,6 @@
 
                             artifact.selectVersion( version.toString() );
                             fireEvent( ResolutionListener.SELECT_VERSION_FROM_RANGE, listeners, child );
-                        }
-
-                        Object childKey = child.getKey();
-                        if ( managedVersions.containsKey( childKey ) )
-                        {
-                            // If this child node is a managed dependency, ensure
-                            // we are using the dependency management version
-                            // of this child if applicable b/c we want to use the
-                            // 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 retrive the metadata
-                            // for the artifact; otherwise we may end up with unwanted
-                            // dependencies.
-                            Artifact ma = (Artifact) managedVersions.get( childKey );
-                            ArtifactFilter managedExclusionFilter = ma.getDependencyFilter();
-                            if ( null != managedExclusionFilter )
-                            {
-                                if ( null != artifact.getDependencyFilter() )
-                                {
-                                    AndArtifactFilter aaf = new AndArtifactFilter();
-                                    aaf.add( artifact.getDependencyFilter() );
-                                    aaf.add( managedExclusionFilter );
-                                    artifact.setDependencyFilter( aaf );
-                                }
-                                else
-                                {
-                                    artifact.setDependencyFilter( managedExclusionFilter );
-                                }
-                            }
                         }
 
                         artifact.setDependencyTrail( node.getDependencyTrail() );

Modified: maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=620413&r1=620412&r2=620413&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (original)
+++ maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java Sun Feb 10 21:12:21 2008
@@ -285,6 +285,20 @@
         assertEquals( "Check version", "2.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
     }
 
+    public void testResolveRangeWithManagedVersion()
+        throws ArtifactResolutionException, InvalidVersionSpecificationException
+    {
+        ArtifactSpec a = createArtifactSpec( "a", "1.0" );
+        ArtifactSpec b = a.addDependency( "b", "[1.0,3.0]" );
+
+        ArtifactSpec managedB = createArtifactSpec( "b", "5.0" );
+
+        ArtifactResolutionResult res = collect( a, managedB.artifact );
+        assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, managedB.artifact } ),
+                      res.getArtifacts() );
+        assertEquals( "Check version", "5.0", getArtifact( "b", res.getArtifacts() ).getVersion() );
+    }
+
     public void testCompatibleRanges()
         throws ArtifactResolutionException, InvalidVersionSpecificationException
     {