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 2015/09/06 17:14:27 UTC

[1/2] ant-ivy git commit: IVY-1141 : dependencies failed using branch attribute (and extra attributes)

Repository: ant-ivy
Updated Branches:
  refs/heads/master 5240c8825 -> 3fd058c02


IVY-1141 : dependencies failed using branch attribute (and extra attributes)

Thanks to Stephen Haberman

Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/8e0e1c32
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/8e0e1c32
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/8e0e1c32

Branch: refs/heads/master
Commit: 8e0e1c32ff1ed1da4f09fc9917812e6457e6fef7
Parents: 5240c88
Author: Nicolas Lalevée <ni...@hibnet.org>
Authored: Sun Sep 6 17:10:47 2015 +0200
Committer: Nicolas Lalevée <ni...@hibnet.org>
Committed: Sun Sep 6 17:10:56 2015 +0200

----------------------------------------------------------------------
 doc/release-notes.html                          |  1 +
 .../plugins/version/LatestVersionMatcher.java   | 15 +++++-
 .../version/LatestVersionMatcherTest.java       | 53 +++++++++++++++++++-
 3 files changed, 66 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/8e0e1c32/doc/release-notes.html
----------------------------------------------------------------------
diff --git a/doc/release-notes.html b/doc/release-notes.html
index 12624af..0c34994 100644
--- a/doc/release-notes.html
+++ b/doc/release-notes.html
@@ -61,6 +61,7 @@ List of changes since Ivy 2.4.0:
 - FIX: fixdeps remove transitive 'kept' dependencies
 - FIX: PomModuleDescriptorParser should parse licenses from parent POM (IVY-1526) (Thanks to Jaikiran Pai)
 - FIX: dynamic revisions are not cached per resolver (IVY-1430) (Thanks to Stephen Haberman)
+- FIX: Dependencies failed using branch attribute (and extra attributes) (IVY-1141) (Thanks to Stephen Haberman)
 
 - IMPROVEMENT: Optimization: limit the revision numbers scanned if revision prefix is specified (Thanks to Ernestas Vaiciukevi&#269;ius)
 

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/8e0e1c32/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java b/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
index ba5b153..5a30b24 100644
--- a/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
+++ b/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
@@ -39,13 +39,26 @@ public class LatestVersionMatcher extends AbstractVersionMatcher {
     }
 
     public boolean needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) {
-        List statuses = StatusManager.getCurrent().getStatuses();
+        // if asking for a branch, foundMrid will likely have an invalid value that doesn't
+        // come from the module descriptor itself. return true so accept is given the real
+        // module descriptor with the correct branch.
+        if (askedMrid.getBranch() != null) {
+            return true;
+        }
+        List<Status> statuses = StatusManager.getCurrent().getStatuses();
         Status lowest = (Status) statuses.get(statuses.size() - 1);
         String latestLowest = "latest." + lowest.getName();
         return !latestLowest.equals(askedMrid.getRevision());
     }
 
     public boolean accept(ModuleRevisionId askedMrid, ModuleDescriptor foundMD) {
+        String askedBranch = askedMrid.getBranch();
+        String foundBranch = foundMD.getModuleRevisionId().getBranch();
+        boolean sameBranch = (askedBranch == null) ? foundBranch == null
+                : askedBranch.equals(foundBranch);
+        if (!sameBranch) {
+            return false;
+        }
         String askedStatus = askedMrid.getRevision().substring("latest.".length());
         return StatusManager.getCurrent().getPriority(askedStatus) >= StatusManager.getCurrent()
                 .getPriority(foundMD.getStatus());

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/8e0e1c32/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java b/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
index 654bf11..f72d899 100644
--- a/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
+++ b/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
@@ -17,13 +17,14 @@
  */
 package org.apache.ivy.plugins.version;
 
-import junit.framework.TestCase;
-
 import org.apache.ivy.core.IvyContext;
+import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.module.status.Status;
 import org.apache.ivy.core.module.status.StatusManager;
 
+import junit.framework.TestCase;
+
 public class LatestVersionMatcherTest extends TestCase {
     private LatestVersionMatcher vm = new LatestVersionMatcher();
 
@@ -41,6 +42,13 @@ public class LatestVersionMatcherTest extends TestCase {
         assertNeed("latest.integration", false);
     }
 
+    public void testNeedModuleDescriptorForBranches() throws Exception {
+        assertNeed("latest.release", "trunk", true);
+        assertNeed("latest.milestone", "trunk", true);
+        // different branches will have different latest.integration artifacts
+        assertNeed("latest.integration", "trunk", true);
+    }
+
     public void testNeedModuleDescriptorCustomStatus() throws Exception {
         StatusManager.getCurrent().addStatus(new Status("release", false));
         StatusManager.getCurrent().addStatus(new Status("snapshot", true));
@@ -49,9 +57,50 @@ public class LatestVersionMatcherTest extends TestCase {
         assertNeed("latest.snapshot", false);
     }
 
+    public void testAcceptForStandardStatus() throws Exception {
+        assertAccept("latest.release", "release", true);
+        assertAccept("latest.release", "milestone", false);
+        assertAccept("latest.release", "integration", false);
+    }
+
+    public void testAcceptForSameBranches() throws Exception {
+        assertAccept("latest.release", "trunk", "release", "trunk", true);
+        assertAccept("latest.release", "trunk", "milestone", "trunk", false);
+        assertAccept("latest.release", "trunk", "integration", "trunk", false);
+    }
+
+    public void testAcceptForDifferentBranches() throws Exception {
+        assertAccept("latest.release", "trunk", "release", "feature", false);
+        assertAccept("latest.release", "trunk", "milestone", "feature", false);
+        assertAccept("latest.release", "trunk", "integration", "feature", false);
+    }
+
     // assertion helper methods
     private void assertNeed(String askedVersion, boolean b) {
         assertEquals(b, vm.needModuleDescriptor(
             ModuleRevisionId.newInstance("org", "name", askedVersion), null));
     }
+
+    private void assertNeed(String askedVersion, String askedBranch, boolean b) {
+        assertEquals(b, vm.needModuleDescriptor(
+            ModuleRevisionId.newInstance("org", "name", askedBranch, askedVersion), null));
+    }
+
+    private void assertAccept(String askedVersion, String foundStatus, boolean b) {
+        ModuleRevisionId askedMrid = ModuleRevisionId.newInstance("org", "name", askedVersion);
+        DefaultModuleDescriptor foundMD = DefaultModuleDescriptor
+                .newDefaultInstance(ModuleRevisionId.newInstance("org", "name", null));
+        foundMD.setStatus(foundStatus);
+        assertEquals(b, vm.accept(askedMrid, foundMD));
+    }
+
+    private void assertAccept(String askedVersion, String askedBranch, String foundStatus,
+            String foundBranch, boolean b) {
+        ModuleRevisionId askedMrid = ModuleRevisionId.newInstance("org", "name", askedBranch,
+            askedVersion);
+        DefaultModuleDescriptor foundMD = DefaultModuleDescriptor.newDefaultInstance(
+            ModuleRevisionId.newInstance("org", "name", foundBranch, (String) null));
+        foundMD.setStatus(foundStatus);
+        assertEquals(b, vm.accept(askedMrid, foundMD));
+    }
 }


[2/2] ant-ivy git commit: java 5 typing

Posted by hi...@apache.org.
java 5 typing

Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/3fd058c0
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/3fd058c0
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/3fd058c0

Branch: refs/heads/master
Commit: 3fd058c02a1f8881110409be33ad56d3af6386f6
Parents: 8e0e1c3
Author: Nicolas Lalevée <ni...@hibnet.org>
Authored: Sun Sep 6 17:11:11 2015 +0200
Committer: Nicolas Lalevée <ni...@hibnet.org>
Committed: Sun Sep 6 17:11:11 2015 +0200

----------------------------------------------------------------------
 .../ivy/core/module/status/StatusManager.java   | 23 ++++++++++----------
 1 file changed, 11 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/3fd058c0/src/java/org/apache/ivy/core/module/status/StatusManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/status/StatusManager.java b/src/java/org/apache/ivy/core/module/status/StatusManager.java
index cb45b7f..53fc382 100644
--- a/src/java/org/apache/ivy/core/module/status/StatusManager.java
+++ b/src/java/org/apache/ivy/core/module/status/StatusManager.java
@@ -42,14 +42,14 @@ public class StatusManager {
         return IvyContext.getContext().getSettings().getStatusManager();
     }
 
-    private List status = new ArrayList();
+    private List<Status> status = new ArrayList<Status>();
 
     private String defaultStatus;
 
     // for easier querying only
-    private Map statusPriorityMap;
+    private Map<String, Integer> statusPriorityMap;
 
-    private Map statusIntegrationMap;
+    private Map<String, Boolean> statusIntegrationMap;
 
     private String deliveryStatusListString;
 
@@ -71,7 +71,7 @@ public class StatusManager {
         this.defaultStatus = defaultStatus;
     }
 
-    public List getStatuses() {
+    public List<Status> getStatuses() {
         return status;
     }
 
@@ -79,14 +79,14 @@ public class StatusManager {
         if (status.isEmpty()) {
             throw new IllegalStateException("badly configured statuses: no status found");
         }
-        statusPriorityMap = new HashMap();
-        for (ListIterator iter = status.listIterator(); iter.hasNext();) {
-            Status status = (Status) iter.next();
+        statusPriorityMap = new HashMap<String, Integer>();
+        for (ListIterator<Status> iter = status.listIterator(); iter.hasNext();) {
+            Status status = iter.next();
             statusPriorityMap.put(status.getName(), new Integer(iter.previousIndex()));
         }
-        statusIntegrationMap = new HashMap();
-        for (Iterator iter = status.iterator(); iter.hasNext();) {
-            Status status = (Status) iter.next();
+        statusIntegrationMap = new HashMap<String, Boolean>();
+        for (Iterator<Status> iter = status.iterator(); iter.hasNext();) {
+            Status status = iter.next();
             statusIntegrationMap.put(status.getName(), Boolean.valueOf(status.isIntegration()));
         }
     }
@@ -125,8 +125,7 @@ public class StatusManager {
     public String getDeliveryStatusListString() {
         if (deliveryStatusListString == null) {
             StringBuffer ret = new StringBuffer();
-            for (Iterator iter = status.iterator(); iter.hasNext();) {
-                Status status = (Status) iter.next();
+            for (Status status : this.status) {
                 if (!status.isIntegration()) {
                     ret.append(status.getName()).append(",");
                 }