@Override
public Collection<Counter> getCounters() {
final Map<Counter.Key, Map<String, LeafCollectorCounter>> counters = new HashMap<Counter.Key, Map<String, LeafCollectorCounter>>();
for (final String marker : markers()) {
for (final LeafCollectorCounter c : getCounters(marker)) {
Map<String, LeafCollectorCounter> values = counters.get(c.getKey());
if (values == null) {
values = new HashMap<String, LeafCollectorCounter>();
counters.put(c.getKey(), values);
}
values.put(marker, c);
}
}
final Collection<Counter> c = new LinkedList<Counter>();
for (final Map.Entry<Counter.Key, Map<String, LeafCollectorCounter>> entry : counters.entrySet()) {
c.add(new AggregatedCollectorCounter(entry.getKey(), entry.getValue()));
}
return c;
}