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č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(",");
}