/** * */ package models.com.mc.actors; import mc.messages.ResultMessage; import models.com.mc.classifiers.Classifier; import models.com.mc.classifiers.ClassifierFactory; import models.com.mc.classifiers.uclassify.UClassifierFactory; import models.com.mc.configs.ClassifiersConfig; import akka.actor.Props; import akka.actor.UntypedActor; /** * Classifying Actor who classify messages according to configured classifier */ public class ClassifyingActor extends UntypedActor { /** * Message Classifier */ Classifier classifier; String service; /** * Constructor */ public ClassifyingActor() { // TODO Auto-generated constructor stub } public ClassifyingActor(String service) { ClassifierFactory uClassifierFactory = new UClassifierFactory(); classifier = uClassifierFactory.getClassifier(service); this.service = service; } public static Props props(String serivce) { return Props.create(ClassifyingActor.class, serivce); } /* * (non-Javadoc) * * @see akka.actor.UntypedActor#onReceive(java.lang.Object) */ @Override public void onReceive(Object arg0) throws Exception { if (arg0 instanceof String) { try { String result = classifier.classify((String) arg0).toLowerCase(); getSender().tell(new ResultMessage(service, result), getSelf()); } catch (Exception e) { getSender().tell(new ResultMessage(service), getSelf()); } } else unhandled(arg0); } //request the message again @Override public void postRestart(Throwable reason) { getContext().parent().tell(this.service, getSelf()); } }