You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by xa...@apache.org on 2008/02/07 14:58:24 UTC

svn commit: r619414 - in /ant/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java test/java/org/apache/ivy/ant/IvyDeliverTest.java

Author: xavier
Date: Thu Feb  7 05:58:21 2008
New Revision: 619414

URL: http://svn.apache.org/viewvc?rev=619414&view=rev
Log:
FIX: Branch attribute not set on deliver when using a non default branch (IVY-724)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=619414&r1=619413&r2=619414&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Thu Feb  7 05:58:21 2008
@@ -77,6 +77,7 @@
 - IMPROVEMENT: Downgrade Ant version requirement to 1.6 to build Ivy (IVY-687)
 - IMPROVEMENT: In the ResolveReport class, add the possibility to filter the evicted module while getting the list of DownloadArtifact (IVY-704) (thanks to Nicolas Lalevée)
 
+- FIX: Branch attribute not set on deliver when using a non default branch (IVY-724)
 - FIX: NullPointerException reported instead of error in ivy:cachepath (IVY-690)
 - FIX: NPE when calling retrieve if some artifacts are not available locally (IVY-712)
 - FIX: When in ssh plugin we does not set username in scheme, Ivy always try to connect with guest username, even if we change one in panel. (IVY-710) (thanks to Ruslan Shevchenko)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java?rev=619414&r1=619413&r2=619414&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java Thu Feb  7 05:58:21 2008
@@ -42,8 +42,10 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.apache.ivy.Ivy;
+import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.plugins.namespace.NameSpaceHelper;
 import org.apache.ivy.plugins.namespace.Namespace;
 import org.apache.ivy.plugins.parser.ParserSettings;
 import org.apache.ivy.plugins.repository.Resource;
@@ -373,28 +375,44 @@
             org = org == null ? organisation : org;
             String module = substitute(settings, attributes.getValue("name"));
             String branch = substitute(settings, attributes.getValue("branch"));
+            
+            // look for the branch used in resolved revisions
+            if (branch == null) {
+                ModuleId mid = ModuleId.newInstance(org, module);
+                if (ns != null) {
+                    mid = NameSpaceHelper.transform(mid, ns.getToSystemTransformer());
+                }
+                for (Iterator iter = resolvedRevisions.keySet().iterator(); iter.hasNext();) {
+                    ModuleRevisionId mrid = (ModuleRevisionId) iter.next();
+                    if (mrid.getModuleId().equals(mid)) {
+                        branch = mrid.getBranch();
+                        break;
+                    }
+                }
+            }
+            
             String revision = substitute(settings, attributes.getValue("rev"));
-            ModuleRevisionId localMid = ModuleRevisionId.newInstance(org, module, branch,
+            ModuleRevisionId localMrid = ModuleRevisionId.newInstance(org, module, branch,
                 revision, ExtendableItemHelper.getExtraAttributes(attributes,
                     XmlModuleDescriptorParser.DEPENDENCY_REGULAR_ATTRIBUTES));
-            ModuleRevisionId systemMid = ns == null ? localMid : ns.getToSystemTransformer()
-                    .transform(localMid);
+            ModuleRevisionId systemMrid = ns == null ? localMrid : ns.getToSystemTransformer()
+                    .transform(localMrid);
 
             for (int i = 0; i < attributes.getLength(); i++) {
                 String attName = attributes.getQName(i);
                 if ("rev".equals(attName)) {
-                    String rev = (String) resolvedRevisions.get(systemMid);
+                    String rev = (String) resolvedRevisions.get(systemMrid);
                     if (rev != null) {
                         write(" rev=\"" + rev + "\"");
                     } else {
-                        write(" rev=\"" + systemMid.getRevision() + "\"");
+                        write(" rev=\"" + systemMrid.getRevision() + "\"");
                     }
                 } else if ("org".equals(attName)) {
-                    write(" org=\"" + systemMid.getOrganisation() + "\"");
+                    write(" org=\"" + systemMrid.getOrganisation() + "\"");
                 } else if ("name".equals(attName)) {
-                    write(" name=\"" + systemMid.getName() + "\"");
+                    write(" name=\"" + systemMrid.getName() + "\"");
                 } else if ("branch".equals(attName)) {
-                    write(" branch=\"" + systemMid.getBranch() + "\"");
+                    write(" branch=\"" + systemMrid.getBranch() + "\"");
                 } else if ("conf".equals(attName)) {
                     String oldMapping = substitute(settings, attributes.getValue("conf"));
                     if (oldMapping.length() > 0) {
@@ -408,6 +426,11 @@
                     write(" " + attName + "=\""
                             + substitute(settings, attributes.getValue(attName)) + "\"");
                 }
+            }
+            
+            if (systemMrid.getBranch() != null && attributes.getIndex("branch") == -1) {
+                // this dependency is on a specific branch, we set it explicitly in the updated file
+                write(" branch=\"" + systemMrid.getBranch() + "\"");
             }
         }
 

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java?rev=619414&r1=619413&r2=619414&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java Thu Feb  7 05:58:21 2008
@@ -202,6 +202,38 @@
                 .getDependencyRevisionId());
     }
 
+    public void testReplaceBranch() throws Exception {
+        IvyAntSettings settings = new IvyAntSettings();
+        settings.setProject(project);
+        settings.execute();
+        // change the default branch to use
+        settings.getConfiguredIvyInstance().getSettings().setDefaultBranch("BRANCH1");
+        
+        // resolve a module dependencies
+        project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest.xml");
+        IvyResolve res = new IvyResolve();
+        res.setProject(project);
+        res.execute();
+
+        // deliver this module
+        deliver.setPubrevision("1.2");
+        deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml");
+        deliver.execute();
+
+        // should have done the ivy delivering, including setting the branch according to the 
+        // configured default
+        File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml");
+        assertTrue(deliveredIvyFile.exists());
+        ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(
+            new IvySettings(), deliveredIvyFile.toURL(), true);
+        assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), md
+                .getModuleRevisionId());
+        DependencyDescriptor[] dds = md.getDependencies();
+        assertEquals(1, dds.length);
+        assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "BRANCH1", "2.2"), dds[0]
+                .getDependencyRevisionId());
+    }
+
     public void testWithExtraAttributes() throws Exception {
         // test case for IVY-415
         project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest-extra.xml");