Author: maartenc
Date: Thu Aug 30 15:28:25 2012
New Revision: 1378988

URL: http://svn.apache.org/viewvc?rev=1378988&view=rev
Log:
FIX: Resolve does not deliver all dependent artifacts (IVY-1366) (thanks to 
Wolfgang Frank) (merged from trunk)

Added:
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/a/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/a/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/a/1/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/a/1/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/a/1/ivy.xml
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/a/1/ivy.xml
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/a/1/jars/
      - copied from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/a/1/jars/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/a/1/jars/a-1.jar
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/a/1/jars/a-1.jar
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/b/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/b/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/b/1/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/b/1/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/b/1/ivy.xml
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/b/1/ivy.xml
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/b/1/jars/
      - copied from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/b/1/jars/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/b/1/jars/b-1.jar
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/b/1/jars/b-1.jar
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/c/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/c/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/c/1/
      - copied from r1378882, ant/ivy/core/trunk/test/repositories/IVY-1366/c/1/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/c/1/ivy.xml
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/c/1/ivy.xml
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/c/1/jars/
      - copied from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/c/1/jars/
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/c/1/jars/c-1.jar
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/c/1/jars/c-1.jar
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/ivy.xml
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/ivy.xml
    ant/ivy/core/branches/2.3.x/test/repositories/IVY-1366/ivysettings.xml
      - copied unchanged from r1378882, 
ant/ivy/core/trunk/test/repositories/IVY-1366/ivysettings.xml
Modified:
    ant/ivy/core/branches/2.3.x/   (props changed)
    ant/ivy/core/branches/2.3.x/CHANGES.txt
    
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/IvyNode.java
    
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
    
ant/ivy/core/branches/2.3.x/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Propchange: ant/ivy/core/branches/2.3.x/
------------------------------------------------------------------------------
  Merged /ant/ivy/core/trunk:r1378882

Modified: ant/ivy/core/branches/2.3.x/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/CHANGES.txt?rev=1378988&r1=1378987&r2=1378988&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/CHANGES.txt (original)
+++ ant/ivy/core/branches/2.3.x/CHANGES.txt Thu Aug 30 15:28:25 2012
@@ -45,6 +45,7 @@ for detailed view of each issue, please 
        Gregory Fernandez
        Danno Ferrin
        Benjamin Francisoud     
+       Wolfgang Frank
        Jacob Grydholt Jensen
        John Gibson
        Mitch Gitman
@@ -129,6 +130,7 @@ for detailed view of each issue, please 
        
    2.3.x
 =====================================
+- FIX: Resolve does not deliver all dependent artifacts (IVY-1366) (thanks to 
Wolfgang Frank)
 - FIX: Ivy descriptors are merged incorrectly when there is an <exclude> 
element (IVY-1356)
 - FIX: SimpleDateFormat is not thread safe (IVY-1373)
 - FIX: Maven 'hk2-jar' packaging is now supported (IVY-1357)

Modified: 
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/IvyNode.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/IvyNode.java?rev=1378988&r1=1378987&r2=1378988&view=diff
==============================================================================
--- 
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/IvyNode.java 
(original)
+++ 
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/IvyNode.java 
Thu Aug 30 15:28:25 2012
@@ -288,7 +288,7 @@ public class IvyNode implements Comparab
         }
     }
 
-    public Collection getDependencies(String rootModuleConf, String[] confs) {
+    public Collection getDependencies(String rootModuleConf, String[] confs, 
String requestedConf) {
         if (md == null) {
             throw new IllegalStateException(
                     "impossible to get dependencies when data has not been 
loaded");
@@ -302,7 +302,7 @@ public class IvyNode implements Comparab
         }
         Collection deps = new HashSet();
         for (int i = 0; i < confs.length; i++) {
-            deps.addAll(getDependencies(rootModuleConf, confs[i], confs[i]));
+            deps.addAll(getDependencies(rootModuleConf, confs[i], 
requestedConf));
         }
         return deps;
     }

Modified: 
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/ResolveEngine.java?rev=1378988&r1=1378987&r2=1378988&view=diff
==============================================================================
--- 
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
 (original)
+++ 
ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
 Thu Aug 30 15:28:25 2012
@@ -1081,7 +1081,8 @@ public class ResolveEngine {
             // In this case we need to compute selected nodes again. 
             Collection deps = ancestor.getNode().getDependencies(
                 node.getRootModuleConf(), 
-                
ancestor.getNode().getConfigurations(node.getRootModuleConf()));
+                
ancestor.getNode().getConfigurations(node.getRootModuleConf()), 
+                ancestor.getRequestedConf());
             for (Iterator iter = deps.iterator(); iter.hasNext();) {
                 IvyNode dep = (IvyNode) iter.next();
                 if (dep.getModuleId().equals(node.getModuleId())) {
@@ -1096,9 +1097,11 @@ public class ResolveEngine {
              * (otherwise previous block would have been reached). We can 
compute conflicts based on
              * the parent direct dependencies in current root module conf.
              */
-            Collection parentDepIvyNodes = node.getParent().getNode()
-                        .getDependencies(node.getRootModuleConf(), 
-                            new String[] {node.getParentConf()});
+            VisitNode parent = node.getParent();
+            Collection parentDepIvyNodes = parent.getNode().getDependencies(
+                node.getRootModuleConf(), 
+                parent.getNode().getConfigurations(node.getRootModuleConf()), 
+                parent.getRequestedConf());
             for (Iterator it = parentDepIvyNodes.iterator(); it.hasNext();) {
                 IvyNode parentDep = (IvyNode) it.next();
                 if (parentDep.getModuleId().equals(node.getModuleId())) {

Modified: 
ant/ivy/core/branches/2.3.x/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=1378988&r1=1378987&r2=1378988&view=diff
==============================================================================
--- 
ant/ivy/core/branches/2.3.x/test/java/org/apache/ivy/core/resolve/ResolveTest.java
 (original)
+++ 
ant/ivy/core/branches/2.3.x/test/java/org/apache/ivy/core/resolve/ResolveTest.java
 Thu Aug 30 15:28:25 2012
@@ -110,7 +110,7 @@ public class ResolveTest extends TestCas
         FileUtil.forceDelete(deliverDir);
         FileUtil.forceDelete(workDir);
     }
-
+    
     public void testResolveWithRetainingArtifactName() throws Exception {
         ((DefaultRepositoryCacheManager) 
ivy.getSettings().getDefaultRepositoryCacheManager())
                 
.setArtifactPattern(ivy.substitute("[module]/[originalname].[ext]"));
@@ -3430,6 +3430,21 @@ public class ResolveTest extends TestCas
         assertFalse(modRevIds.contains(ModuleRevisionId.newInstance("junit", 
"junit", "3.8")));
     }
 
+    public void testIVY1366() throws Exception {
+        Ivy ivy = new Ivy();
+        ivy.configure(new File("test/repositories/IVY-1366/ivysettings.xml"));
+
+        ResolveReport report = ivy.resolve(new 
File("test/repositories/IVY-1366/ivy.xml"), 
+                new ResolveOptions().setConfs(new String[] {"runtime"}));
+        assertFalse(report.hasError());
+        
+        List artifacts = report.getArtifacts();
+        assertEquals(3, artifacts.size());
+        assertEquals("test#a;1!a.jar", artifacts.get(0).toString());
+        assertEquals("test#c;1!c.jar", artifacts.get(1).toString());
+        assertEquals("test#b;1!b.jar", artifacts.get(2).toString());
+    }
+    
     public void testBadFiles() throws Exception {
         Ivy ivy = new Ivy();
         ivy.configure(new File("test/repositories/badfile/ivysettings.xml"));


Reply via email to