From dfd60492e7a83f24e5c9a37d0d4af1bee55f9f34 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Wed, 4 Sep 2013 17:56:27 +0200 Subject: [PATCH] fixed duplicate builds in view build history when nested in folders Jenkins with folders A job A/j a top-level view to recurse into subfolders and include all available jobs and folders (so A and A/j) => builds for A/j are included twice, as view.builds iterate on its items, so get A/j + builds from A. --- core/src/main/java/hudson/util/RunList.java | 25 +++++++++------------ 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/hudson/util/RunList.java b/core/src/main/java/hudson/util/RunList.java index c86b0b0da5..b8d8acaf10 100644 --- a/core/src/main/java/hudson/util/RunList.java +++ b/core/src/main/java/hudson/util/RunList.java @@ -32,19 +32,11 @@ import hudson.model.Job; import hudson.model.Node; import hudson.model.Result; import hudson.model.Run; +import hudson.model.TopLevelItem; import hudson.model.View; import hudson.util.Iterators.CountingPredicate; -import java.util.AbstractList; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.GregorianCalendar; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; +import java.util.*; /** * {@link List} of {@link Run}s, sorted in the descending date order. @@ -67,12 +59,15 @@ public class RunList extends AbstractList { } public RunList(View view) {// this is a type unsafe operation - List> jobs = new ArrayList>(); - for (Item item : view.getItems()) - for (Job j : item.getAllJobs()) - jobs.add(((Job)j).getBuilds()); + Set jobs = new HashSet(); + for (TopLevelItem item : view.getItems()) + jobs.addAll(item.getAllJobs()); - this.base = combine(jobs); + List> runs = new ArrayList>(); + for (Job job : jobs) { + runs.add(job.getBuilds()); + } + this.base = combine(runs); } public RunList(Collection jobs) { -- GitLab