package akka.first.app.java.actors; import java.util.HashMap; import java.util.Map; import akka.actor.UntypedActor; import akka.first.app.java.messages.ReduceData; import akka.first.app.java.messages.Result; public class AggregateActor extends UntypedActor { private Map<String, Integer> finalReducedMap = new HashMap<String, Integer>(); @Override public void onReceive(Object message) throws Exception { if (message instanceof ReduceData) { ReduceData reduceData = (ReduceData) message; aggregateInMemoryReduce(reduceData.getReduceDataList()); } else if (message instanceof Result) { System.out.println(finalReducedMap.toString()); } else unhandled(message); } private void aggregateInMemoryReduce(Map<String, Integer> reducedList) { Integer count = null; for (String key : reducedList.keySet()) { if (finalReducedMap.containsKey(key)) { count = reducedList.get(key) + finalReducedMap.get(key); finalReducedMap.put(key, count); } else { finalReducedMap.put(key, reducedList.get(key)); } } } }