@Override public void execute(final Object message) throws Exception { if (logger.isInfoEnabled()) { logger.info("In Ready state"); } // ussdCall.tell(new Answer(), source); // Execute the received RCML here final UntypedActorContext context = getContext(); final State state = fsm.state(); if (downloadingRcml.equals(state) || downloadingFallbackRcml.equals(state) || processingInfoRequest.equals(state)) { response = ((DownloaderResponse) message).get(); if (parser != null) { context.stop(parser); parser = null; } final String type = response.getContentType(); if (type.contains("text/xml") || type.contains("application/xml") || type.contains("text/html")) { parser = parser(response.getContentAsString()); } else if (type.contains("text/plain")) { parser = parser("<UssdMessage>" + response.getContentAsString() + "</UssdMessage>"); } else { final StopInterpreter stop = new StopInterpreter(); source.tell(stop, source); return; } } final GetNextVerb next = GetNextVerb.instance(); parser.tell(next, source); }
ActorRef parser(final String xml) { final UntypedActorContext context = getContext(); return context.actorOf( new Props( new UntypedActorFactory() { private static final long serialVersionUID = 1L; @Override public UntypedActor create() throws Exception { return new Parser(xml, self()); } })); }
ActorRef downloader() { final UntypedActorContext context = getContext(); return context.actorOf( new Props( new UntypedActorFactory() { private static final long serialVersionUID = 1L; @Override public UntypedActor create() throws Exception { return new Downloader(); } })); }
ActorRef mailer(final Configuration configuration) { final UntypedActorContext context = getContext(); return context.actorOf( new Props( new UntypedActorFactory() { private static final long serialVersionUID = 1L; @Override public Actor create() throws Exception { return new EmailService(configuration); } })); }
@Override public ActorRef actorOf(Props props) { return context.actorOf(props); }
@Override public ActorSystem getActorSystem() { return context.system(); }
@Override public ActorSelection actorSelection(String path) { return context.actorSelection(path); }