package edu.ucsb.jpregel.system; import api.Aggregator; import java.util.concurrent.atomic.AtomicInteger; /** * Aggregates sum of AtomicInteger objects. * Thread-safe. * @author Pete Cappello */ public class AggregatorSumInteger extends Aggregator<AtomicInteger> { private static final AtomicInteger ZERO = new AtomicInteger(); public AggregatorSumInteger() { super(); } public AggregatorSumInteger( AtomicInteger atomicInteger ) { super( atomicInteger ); } @Override public void aggregate( Aggregator<AtomicInteger> aggregator ) { // 1st get returns AtomicInteger; 2nd get returns its int value element.addAndGet( aggregator.get().get() ); } @Override public AtomicInteger identityElement() { return ZERO; } @Override public Aggregator make() { return new AggregatorSumInteger(); } @Override public String toString() { return get().toString(); } }