Skip to content

Commit

Permalink
Merge pull request #45 from jenkinsci/nested-bug
Browse files Browse the repository at this point in the history
fix recursion error in aggregation of `result`
  • Loading branch information
simonsymhoven authored Sep 7, 2022
2 parents 1ffb831 + abba60c commit ca6d0fa
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
import io.jenkins.plugins.reporter.model.Item;
import org.apache.commons.collections.ListUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;

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

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

private List<Item> findItems(String id, List<Item> items)
{
for (Item i: items) {
if (i.getId().equals(id) && i.hasItems()) {
return i.hasItems() ? i.getItems() : findItems(id, i.getItems());
if (i.getId().equals(id)) {
return i.hasItems() ? i.getItems() : Collections.singletonList(i);
}

if (i.hasItems()) {
return findItems(id, i.getItems());
}
}

return new ArrayList<>();
return Collections.emptyList();
}
}
11 changes: 5 additions & 6 deletions src/main/java/io/jenkins/plugins/reporter/model/Result.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,13 @@ public void setColors(Map<String, String> colors) {
/**
* Aggregates the results of all items. The values are added together, grouped by key.
*
* @param filter
* the filter to evaluate on the result.
* @param items
* the items to aggregate the childs for.
* @return the aggregated result.
*/
public LinkedHashMap<String, Integer> aggregate(Predicate<? super Item> filter) {
return getItems()
public LinkedHashMap<String, Integer> aggregate(List<Item> items) {
return items
.stream()
.filter(filter)
.map(Item::getResult)
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey, LinkedHashMap::new, Collectors.summingInt(Map.Entry::getValue)));
Expand All @@ -86,6 +85,6 @@ public LinkedHashMap<String, Integer> aggregate(Predicate<? super Item> filter)
* @return the aggregated result.
*/
public LinkedHashMap<String, Integer> aggregate() {
return aggregate(item -> {return true;});
return aggregate(getItems());
}
}

0 comments on commit ca6d0fa

Please sign in to comment.