Skip to content

Commit ca6d0fa

Browse files
Merge pull request #45 from jenkinsci/nested-bug
fix recursion error in aggregation of `result`
2 parents 1ffb831 + abba60c commit ca6d0fa

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

src/main/java/io/jenkins/plugins/reporter/charts/ItemSeriesBuilder.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
import io.jenkins.plugins.reporter.model.Item;
66
import org.apache.commons.collections.ListUtils;
77

8-
import java.util.ArrayList;
9-
import java.util.HashMap;
10-
import java.util.List;
11-
import java.util.Map;
8+
import java.util.*;
129
import java.util.stream.Collectors;
1310

1411
/**
@@ -50,18 +47,21 @@ protected Map<String, Integer> computeSeries(ReportAction reportAction) {
5047
return items.stream().collect(Collectors.toMap(Item::getId, Item::getTotal));
5148
}
5249

53-
//TODO: fix missing recursion for aggregation
54-
return reportAction.getReport().getResult().aggregate(i -> i.getId().equals(item.getId()));
50+
return reportAction.getReport().getResult().aggregate(items);
5551
}
5652

5753
private List<Item> findItems(String id, List<Item> items)
5854
{
5955
for (Item i: items) {
60-
if (i.getId().equals(id) && i.hasItems()) {
61-
return i.hasItems() ? i.getItems() : findItems(id, i.getItems());
56+
if (i.getId().equals(id)) {
57+
return i.hasItems() ? i.getItems() : Collections.singletonList(i);
58+
}
59+
60+
if (i.hasItems()) {
61+
return findItems(id, i.getItems());
6262
}
6363
}
6464

65-
return new ArrayList<>();
65+
return Collections.emptyList();
6666
}
6767
}

src/main/java/io/jenkins/plugins/reporter/model/Result.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,13 @@ public void setColors(Map<String, String> colors) {
6767
/**
6868
* Aggregates the results of all items. The values are added together, grouped by key.
6969
*
70-
* @param filter
71-
* the filter to evaluate on the result.
70+
* @param items
71+
* the items to aggregate the childs for.
7272
* @return the aggregated result.
7373
*/
74-
public LinkedHashMap<String, Integer> aggregate(Predicate<? super Item> filter) {
75-
return getItems()
74+
public LinkedHashMap<String, Integer> aggregate(List<Item> items) {
75+
return items
7676
.stream()
77-
.filter(filter)
7877
.map(Item::getResult)
7978
.flatMap(map -> map.entrySet().stream())
8079
.collect(Collectors.groupingBy(Map.Entry::getKey, LinkedHashMap::new, Collectors.summingInt(Map.Entry::getValue)));
@@ -86,6 +85,6 @@ public LinkedHashMap<String, Integer> aggregate(Predicate<? super Item> filter)
8685
* @return the aggregated result.
8786
*/
8887
public LinkedHashMap<String, Integer> aggregate() {
89-
return aggregate(item -> {return true;});
88+
return aggregate(getItems());
9089
}
9190
}

0 commit comments

Comments
 (0)