Author: maartenc
Date: Mon Oct 20 14:47:15 2008
New Revision: 706421

URL: http://svn.apache.org/viewvc?rev=706421&view=rev
Log:
FIX: Extra Attributes specified in the Dependency's Module Descriptor are not 
available to resolvers (IVY-929) (thanks to Scott Hebert)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
    
ant/ivy/core/trunk/test/repositories/extra-attributes/mymodule/task1/1854/ivy.xml

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=706421&r1=706420&r2=706421&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Mon Oct 20 14:47:15 2008
@@ -31,6 +31,7 @@
        Jacob Grydholt Jensen
        Scott Goldstein
        Pierre Hägnestrand
+       Scott Hebert
        Tobias Himstedt
        Ben Hale
        Peter Hayes
@@ -106,6 +107,7 @@
 - FIX: Unable to resolve snapshot versions depending on xml elements order 
(IVY-940)
 - FIX: pre-resolve-dependency event doesn't export branch information 
(IVY-941) (thanks to Jaroslaw Wypychowski)
 - FIX: cachefileset produces an empty fileset when the cache refers to libs in 
directories that only have the root directory in common (IVY-948) (thanks to 
Chris Wood)
+- FIX: Extra Attributes specified in the Dependency's Module Descriptor are 
not available to resolvers (IVY-929) (thanks to Scott Hebert)
 
    2.0.0-rc1
 =====================================

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java?rev=706421&r1=706420&r2=706421&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java 
(original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java 
Mon Oct 20 14:47:15 2008
@@ -472,23 +472,28 @@
 
     private ModuleRevisionId getRevision(ResolvedResource ivyRef, 
ModuleRevisionId askedMrid,
             ModuleDescriptor md) throws ParseException {
+        Map allAttributes = new HashMap();
+        allAttributes.putAll(md.getQualifiedExtraAttributes());
+        allAttributes.putAll(askedMrid.getQualifiedExtraAttributes());
+        
         String revision = ivyRef.getRevision();
         if (revision == null) {
             Message.debug("no revision found in reference for " + askedMrid);
             if (getSettings().getVersionMatcher().isDynamic(askedMrid)) {
                 if (md.getModuleRevisionId().getRevision() == null) {
-                    return ModuleRevisionId.newInstance(askedMrid, "working@" 
+ getName());
+                    revision = "working@" + getName();
                 } else {
-                    Message.debug("using  " + askedMrid);
-                    return askedMrid;
+                    Message.debug("using " + askedMrid);
+                    revision = askedMrid.getRevision();
                 }
             } else {
-                Message.debug("using  " + askedMrid);
-                return askedMrid;
+                Message.debug("using " + askedMrid);
+                revision = askedMrid.getRevision();
             }
-        } else {
-            return ModuleRevisionId.newInstance(askedMrid, revision);
         }
+        
+        return ModuleRevisionId.newInstance(askedMrid.getOrganisation(), 
askedMrid.getName(),
+                    askedMrid.getBranch(), revision, allAttributes);
     }
 
     public ResolvedModuleRevision parse(final ResolvedResource mdRef, 
DependencyDescriptor dd,

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=706421&r1=706420&r2=706421&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
Mon Oct 20 14:47:15 2008
@@ -27,6 +27,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
@@ -4148,6 +4149,9 @@
         Ivy ivy = new Ivy();
         ivy.configure(new 
File("test/repositories/extra-attributes/ivysettings.xml"));
         ivy.getSettings().setDefaultCache(cache);
+        
+        FileSystemResolver fResolver = (FileSystemResolver) 
ivy.getSettings().getDefaultResolver();
+        fResolver.setCheckconsistency(false); // important for testing IVY-929
 
         ResolveReport report = 
ivy.resolve(ResolveTest.class.getResource("ivy-extra-att.xml"),
             getResolveOptions(ivy.getSettings(), new String[] 
{"*"}).setValidate(false));
@@ -4156,6 +4160,15 @@
         assertTrue(new File(cache, 
"apache/mymodule/task1/1854/ivy.xml").exists());
         assertTrue(new File(cache, 
"apache/mymodule/task1/1854/mymodule-windows.jar").exists());
         assertTrue(new File(cache, 
"apache/mymodule/task1/1854/mymodule-linux.jar").exists());
+        
+        Set moduleRevisions = 
report.getConfigurationReport("default").getModuleRevisionIds();
+        assertEquals(1, moduleRevisions.size());
+        ModuleRevisionId resolveModRevId = (ModuleRevisionId) 
moduleRevisions.iterator().next();
+        assertEquals("apache", resolveModRevId.getOrganisation());
+        assertEquals("mymodule", resolveModRevId.getName());
+        assertEquals("1854", resolveModRevId.getRevision());
+        assertEquals("task1", resolveModRevId.getExtraAttribute("eatt"));
+        assertEquals("another", resolveModRevId.getExtraAttribute("eatt2"));
     }
 
     public void testExtraAttributes2() throws Exception {

Modified: 
ant/ivy/core/trunk/test/repositories/extra-attributes/mymodule/task1/1854/ivy.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/extra-attributes/mymodule/task1/1854/ivy.xml?rev=706421&r1=706420&r2=706421&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/test/repositories/extra-attributes/mymodule/task1/1854/ivy.xml
 (original)
+++ 
ant/ivy/core/trunk/test/repositories/extra-attributes/mymodule/task1/1854/ivy.xml
 Mon Oct 20 14:47:15 2008
@@ -22,6 +22,7 @@
         organisation="apache"
         module="mymodule"
         eatt="task1"
+        eatt2="another"
         revision="1854"
         status="integration">
        </info>


Reply via email to