You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2005/10/19 05:53:25 UTC

svn commit: r326363 - in /maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver: DefaultArtifactCollector.java ResolutionNode.java filter/ScopeArtifactFilter.java

Author: brett
Date: Tue Oct 18 20:53:10 2005
New Revision: 326363

URL: http://svn.apache.org/viewcvs?rev=326363&view=rev
Log:
PR: MNG-1233
corrected handling of scope based exclusions

Modified:
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?rev=326363&r1=326362&r2=326363&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java Tue Oct 18 20:53:10 2005
@@ -79,12 +79,15 @@
                 {
                     Artifact artifact = node.getArtifact();
 
-                    // If it was optional, we don't add it or its children, just allow the update of the version and scope
-                    if ( !node.getArtifact().isOptional() )
+                    if ( node.filterTrail( filter ) )
                     {
-                        artifact.setDependencyTrail( node.getDependencyTrail() );
+                        // If it was optional, we don't add it or its children, just allow the update of the version and scope
+                        if ( !artifact.isOptional() )
+                        {
+                            artifact.setDependencyTrail( node.getDependencyTrail() );
 
-                        set.add( node );
+                            set.add( node );
+                        }
                     }
                 }
             }
@@ -165,10 +168,12 @@
                         for ( int j = 0; j < 2; j++ )
                         {
                             Artifact resetArtifact = resetNodes[j].getArtifact();
-                            if ( resetArtifact.getVersion() == null && resetArtifact.getVersionRange() != null && resetArtifact.getAvailableVersions() != null )
+                            if ( resetArtifact.getVersion() == null && resetArtifact.getVersionRange() != null &&
+                                resetArtifact.getAvailableVersions() != null )
                             {
 
-                                resetArtifact.selectVersion( resetArtifact.getVersionRange().matchVersion( resetArtifact.getAvailableVersions() ).toString() );
+                                resetArtifact.selectVersion( resetArtifact.getVersionRange().matchVersion(
+                                    resetArtifact.getAvailableVersions() ).toString() );
                                 fireEvent( ResolutionListener.SELECT_VERSION_FROM_RANGE, listeners, resetNodes[j] );
                             }
                         }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java?rev=326363&r1=326362&r2=326363&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java Tue Oct 18 20:53:10 2005
@@ -19,7 +19,6 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
-import org.apache.maven.artifact.versioning.VersionRange;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -44,6 +43,8 @@
 
     private boolean active = true;
 
+    private List trail;
+
     public ResolutionNode( Artifact artifact, List remoteRepositories )
     {
         this.artifact = artifact;
@@ -85,45 +86,60 @@
             {
                 Artifact a = (Artifact) i.next();
 
-                if ( filter == null || filter.include( a ) )
+                if ( parents.contains( a.getDependencyConflictId() ) )
                 {
-                    if ( parents.contains( a.getDependencyConflictId() ) )
-                    {
-                        a.setDependencyTrail( getDependencyTrail() );
-
-                        throw new CyclicDependencyException( "A dependency has introduced a cycle", a );
-                    }
+                    a.setDependencyTrail( getDependencyTrail() );
 
-                    children.add( new ResolutionNode( a, remoteRepositories, this ) );
+                    throw new CyclicDependencyException( "A dependency has introduced a cycle", a );
                 }
+
+                children.add( new ResolutionNode( a, remoteRepositories, this ) );
             }
         }
         else
         {
             children = Collections.EMPTY_LIST;
         }
+        trail = null;
     }
 
     public List getDependencyTrail()
         throws OverConstrainedVersionException
     {
-        List path = new LinkedList();
-        ResolutionNode node = this;
-        while ( node != null )
+        List trial = getTrail();
+
+        List ret = new ArrayList( trial.size() );
+        for ( Iterator i = trial.iterator(); i.hasNext(); )
+        {
+            Artifact artifact = (Artifact) i.next();
+            ret.add( artifact.getId() );
+        }
+        return ret;
+    }
+
+    private List getTrail()
+        throws OverConstrainedVersionException
+    {
+        if ( trail == null )
         {
-            Artifact artifact = node.getArtifact();
-            if ( artifact.getVersion() == null )
+            List ids = new LinkedList();
+            ResolutionNode node = this;
+            while ( node != null )
             {
-                // set the recommended version
-                VersionRange versionRange = artifact.getVersionRange();
-                String version = artifact.getSelectedVersion().toString();
-                artifact.selectVersion( version );
-            }
+                Artifact artifact = node.getArtifact();
+                if ( artifact.getVersion() == null )
+                {
+                    // set the recommended version
+                    String version = artifact.getSelectedVersion().toString();
+                    artifact.selectVersion( version );
+                }
 
-            path.add( 0, artifact.getId() );
-            node = node.parent;
+                ids.add( 0, artifact );
+                node = node.parent;
+            }
+            trail = ids;
         }
-        return path;
+        return trail;
     }
 
     public boolean isResolved()
@@ -176,5 +192,23 @@
                 node.disable();
             }
         }
+    }
+
+    public boolean filterTrail( ArtifactFilter filter )
+        throws OverConstrainedVersionException
+    {
+        boolean success = true;
+        if ( filter != null )
+        {
+            for ( Iterator i = getTrail().iterator(); i.hasNext() && success; )
+            {
+                Artifact artifact = (Artifact) i.next();
+                if ( !filter.include( artifact ) )
+                {
+                    success = false;
+                }
+            }
+        }
+        return success;
     }
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java?rev=326363&r1=326362&r2=326363&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java Tue Oct 18 20:53:10 2005
@@ -35,7 +35,7 @@
     private final boolean testScope;
 
     private final boolean providedScope;
-    
+
     private final boolean systemScope;
 
     public ScopeArtifactFilter( String scope )
@@ -98,8 +98,7 @@
         }
         else
         {
-            // TODO: should this be true? Does it even happen?
-            return false;
+            return true;
         }
     }
 }