You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2012/08/15 13:43:11 UTC

svn commit: r1373350 - in /ant/ivy/core/trunk: CHANGES.txt doc/use/resolve.html src/java/org/apache/ivy/ant/IvyResolve.java test/java/org/apache/ivy/ant/IvyResolveTest.java

Author: hibou
Date: Wed Aug 15 11:43:10 2012
New Revision: 1373350

URL: http://svn.apache.org/viewvc?rev=1373350&view=rev
Log:
IVY-1288: Exposing some parent metadata (organisation, module, revision, branch) as properties (Thanks to Jean-Louis Boudart)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/doc/use/resolve.html
    ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=1373350&r1=1373349&r2=1373350&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Wed Aug 15 11:43:10 2012
@@ -138,6 +138,7 @@ for detailed view of each issue, please 
 - FIX: Buildnumber and IvyFindRevision Ant tasks should honour defaultBranch setting (IVY-1344) (Thanks to Ales Nosek)
 
 - NEW: Support Conditional Setting of a Property (IVY-1367)
+- NEW: Exposing some parent metadata (organisation, module, revision, branch) as properties (IVY-1288) (Thanks to Jean-Louis Boudart)
 
 - IMPROVEMENT: add support for source bundles from p2 repositories
 - IMPROVEMENT: add support for source URI from OBR repositories

Modified: ant/ivy/core/trunk/doc/use/resolve.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/use/resolve.html?rev=1373350&r1=1373349&r2=1373350&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/use/resolve.html (original)
+++ ant/ivy/core/trunk/doc/use/resolve.html Wed Aug 15 11:43:10 2012
@@ -54,6 +54,22 @@ In addition, if the <i>resolveId</i> att
 <li>ivy.deps.changed.${resolveId}</li>
 </ul>
 
+<b>Since 2.4</b>
+If current module extends other modules 
+<ul>
+<li>ivy.parents.count</li>
+number of parents module
+<li>ivy.parent[index].organisation</li>
+set to the organisation name found in the parent ivyfile which was used for resolve
+<li>ivy.parent[index].module</li>
+set to the module name found in the parent ivyfile which was used for resolve
+<li>ivy.parent[index].revision</li>
+set to the revision name found in the parent ivyfile which was used for resolve
+<li>ivy.parent[index].branch</li>
+set to the branch name found in the parent ivyfile which was used for resolve
+</ul>
+Where <i>index</i> represent the index of extends module.
+
 When ivy has finished the resolve task, it outputs a summary of what has been resolved. This summary looks like this:
 <pre>
 ---------------------------------------------------------------------

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java?rev=1373350&r1=1373349&r2=1373350&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java Wed Aug 15 11:43:10 2012
@@ -31,6 +31,7 @@ import org.apache.ivy.core.LogOptions;
 import org.apache.ivy.core.module.descriptor.DefaultExcludeRule;
 import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
 import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
+import org.apache.ivy.core.module.descriptor.ExtendsDescriptor;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.report.ResolveReport;
@@ -350,6 +351,24 @@ public class IvyResolve extends IvyTask 
                 settings.setVariable("ivy.module", mdName);
                 getProject().setProperty("ivy.revision", mdRev);
                 settings.setVariable("ivy.revision", mdRev);
+                for (int i = 0; i < md.getInheritedDescriptors().length; i++) {
+                    ExtendsDescriptor parent = md.getInheritedDescriptors()[i];
+                    String parentOrg = parent.getResolvedParentRevisionId().getOrganisation();
+                    String parentModule = parent.getResolvedParentRevisionId().getName();
+                    String parentRevision = parent.getResolvedParentRevisionId().getRevision();
+                    String parentBranch = parent.getResolvedParentRevisionId().getBranch();
+                    getProject().setProperty("ivy.parent["+i+"].organisation", parentOrg);
+                    settings.setVariable("ivy.parent["+i+"].organisation", parentOrg);
+                    getProject().setProperty("ivy.parent["+i+"].module", parentModule);
+                    settings.setVariable("ivy.parent["+i+"].module", parentModule);
+                    getProject().setProperty("ivy.parent["+i+"].revision", parentRevision);
+                    settings.setVariable("ivy.parent["+i+"].revision", parentRevision);
+                    getProject().setProperty("ivy.parent["+i+"].branch", parentBranch);
+                    settings.setVariable("ivy.parent["+i+"].branch", parentBranch);
+                }
+                getProject().setProperty("ivy.parents.count", String.valueOf(md.getInheritedDescriptors().length));
+                settings.setVariable("ivy.parents.count", String.valueOf(md.getInheritedDescriptors().length));
+
                 Boolean hasChanged = null;
                 if (getCheckIfChanged()) {
                     hasChanged = Boolean.valueOf(report.hasChanged());

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java?rev=1373350&r1=1373349&r2=1373350&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java Wed Aug 15 11:43:10 2012
@@ -18,7 +18,6 @@
 package org.apache.ivy.ant;
 
 import java.io.File;
-import java.util.List;
 
 import junit.framework.TestCase;
 
@@ -586,5 +585,15 @@ public class IvyResolveTest extends Test
             // ok
         }
     }
+    
+    public void testSimpleExtends() throws Exception {
+        resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-extends-multiconf.xml"));
+        resolve.execute();
+        assertEquals("1", resolve.getProject().getProperty("ivy.parents.count"));
+        assertEquals("apache", resolve.getProject().getProperty("ivy.parent[0].organisation"));
+        assertEquals("resolve-simple", resolve.getProject().getProperty("ivy.parent[0].module"));
+        assertEquals("1.0", resolve.getProject().getProperty("ivy.parent[0].revision"));
+        assertEquals(null, resolve.getProject().getProperty("ivy.parent[0].branch"));
+    }
 
 }