You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ma...@apache.org on 2007/12/18 23:20:58 UTC

svn commit: r605343 - in /ant/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/plugins/resolver/AbstractResourceResolver.java test/java/org/apache/ivy/plugins/resolver/FileSystemResolverTest.java

Author: maartenc
Date: Tue Dec 18 14:20:56 2007
New Revision: 605343

URL: http://svn.apache.org/viewvc?rev=605343&view=rev
Log:
FIX: Ivy doesn't respect the order of the ivy patterns as defined in the settings (IVY-676)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResourceResolver.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/FileSystemResolverTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=605343&r1=605342&r2=605343&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Tue Dec 18 14:20:56 2007
@@ -61,6 +61,7 @@
 
 - IMPROVEMENT: Decrease memory footprint (IVY-662)
 
+- FIX: Ivy doesn't respect the order of the ivy patterns as defined in the settings (IVY-676)
 - FIX: XmlModuleDescriptorWriter doesn't write the deprecated attribute of the "ivy-module/configurations/conf" element (IVY-664)
 - FIX: XMLModuleDescriptorWriter does not write extra attributes (IVY-471) (with contribution from Mikkel Bjerg)
 - FIX: latest compatible conflict manager fails with circular dependencies and dynamic revision (IVY-663)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResourceResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResourceResolver.java?rev=605343&r1=605342&r2=605343&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResourceResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResourceResolver.java Tue Dec 18 14:20:56 2007
@@ -27,6 +27,7 @@
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.ivy.core.IvyContext;
 import org.apache.ivy.core.IvyPatternHelper;
@@ -88,13 +89,16 @@
     protected ResolvedResource findResourceUsingPatterns(ModuleRevisionId moduleRevision,
             List patternList, Artifact artifact, ResourceMDParser rmdparser, Date date) {
         List resolvedResources = new ArrayList();
+        Set foundRevisions = new HashSet();
         boolean dynamic = getSettings().getVersionMatcher().isDynamic(moduleRevision);
         boolean stop = false;
         for (Iterator iter = patternList.iterator(); iter.hasNext() && !stop;) {
             String pattern = (String) iter.next();
             ResolvedResource rres = findResourceUsingPattern(
                 moduleRevision, pattern, artifact, rmdparser, date);
-            if (rres != null) {
+            if ((rres != null) && !foundRevisions.contains(rres.getRevision())) {
+                // only add the first found ResolvedResource for each revision
+                foundRevisions.add(rres.getRevision());
                 resolvedResources.add(rres);
                 stop = !dynamic; // stop iterating if we are not searching a dynamic revision
             }

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/FileSystemResolverTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/FileSystemResolverTest.java?rev=605343&r1=605342&r2=605343&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/FileSystemResolverTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/FileSystemResolverTest.java Tue Dec 18 14:20:56 2007
@@ -46,6 +46,7 @@
 import org.apache.ivy.core.sort.SortEngine;
 import org.apache.ivy.plugins.latest.LatestRevisionStrategy;
 import org.apache.ivy.plugins.latest.LatestTimeStrategy;
+import org.apache.ivy.plugins.resolver.util.ResolvedResource;
 import org.apache.ivy.util.CacheCleaner;
 import org.apache.ivy.util.FileUtil;
 
@@ -147,6 +148,23 @@
 
         assertEquals(artifact, ar.getArtifact());
         assertEquals(DownloadStatus.NO, ar.getDownloadStatus());
+    }
+    
+    public void testFindIvyFileRefWithMultipleIvyPatterns() throws Exception {
+        // cfr IVY-676
+        FileSystemResolver resolver = new FileSystemResolver();
+        resolver.setName("test");
+        resolver.setSettings(settings);
+        resolver.addIvyPattern("test/repositories/multi-ivypattern/ivy1/ivy-[revision].xml");
+        resolver.addIvyPattern("test/repositories/multi-ivypattern/ivy2/ivy-[revision].xml");
+        
+        ModuleRevisionId mrid = ModuleRevisionId.newInstance("org1", "mod1.1", "1.0+");
+        ResolvedResource ivyRef = resolver.findIvyFileRef(
+            new DefaultDependencyDescriptor(mrid, false), data);
+        
+        // check that the found ivy file is the one from the first pattern!
+        assertEquals("test/repositories/multi-ivypattern/ivy1/ivy-1.0.xml", 
+            ivyRef.getResource().getName().replace('\\', '/'));
     }
 
     private DownloadOptions getDownloadOptions(boolean useOrigin) {