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:04:21 UTC

svn commit: r620411 - in /maven/artifact/trunk/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:04:20 2008
New Revision: 620411

URL: http://svn.apache.org/viewvc?rev=620411&view=rev
Log:
[MNG-3396] Managed versions don't affect over constrained ranges

Modified:
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
    maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?rev=620411&r1=620410&r2=620411&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java Sun Feb 10 21:04:20 2008
@@ -378,6 +378,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
@@ -422,43 +454,11 @@
                                 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() );
 
                             ResolutionGroup rGroup = source.retrieve( artifact, localRepository, remoteRepositories );
 
-                            //TODO might be better to have source.retreive() throw a specific exception for this situation
+                            //TODO might be better to have source.retrieve() throw a specific exception for this situation
                             //and catch here rather than have it return null
                             if ( rGroup == null )
                             {

Modified: maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=620411&r1=620410&r2=620411&view=diff
==============================================================================
--- maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (original)
+++ maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java Sun Feb 10 21:04:20 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
     {