public void summarize() { Iterator<OperationResult> iterator = getSubresults().iterator(); while (iterator.hasNext()) { OperationResult subresult = iterator.next(); if (subresult.getCount() > 1) { // Already summarized continue; } if (subresult.isError() && summarizeErrors) { // go on } else if (subresult.isPartialError() && summarizePartialErrors) { // go on } else if (subresult.isSuccess() && summarizeSuccesses) { // go on } else { continue; } OperationResult similar = findSimilarSubresult(subresult); if (similar == null) { // Nothing to summarize to continue; } merge(similar, subresult); iterator.remove(); } // subresult stripping if necessary // we strip subresults that have same operation name and status, if there are more of them than // threshold Map<OperationStatusKey, Integer> counter = new HashMap<OperationStatusKey, Integer>(); iterator = getSubresults().iterator(); while (iterator.hasNext()) { OperationResult sr = iterator.next(); OperationStatusKey key = new OperationStatusKey(sr.getOperation(), sr.getStatus()); if (counter.containsKey(key)) { int count = counter.get(key); if (count > SUBRESULT_STRIP_THRESHOLD) { iterator.remove(); } else { counter.put(key, ++count); } } else { counter.put(key, 1); } } }