diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java new file mode 100644 index 0000000000000000000000000000000000000000..a783562464efd158bc7f3fa6219bcdb41fff2e86 --- /dev/null +++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java @@ -0,0 +1,46 @@ +package eu.hbp.mip.akka; + +import akka.actor.Props; +import akka.actor.UntypedActor; +import akka.event.Logging; +import akka.event.LoggingAdapter; +import akka.japi.Creator; +import eu.hbp.mip.messages.external.QueryResult; + +import java.util.UUID; + +/** + * Created by mirco on 30.11.16. + */ +public class ExperimentActor extends UntypedActor { + + public static Props props(final UUID expUUID) { + return Props.create(new Creator<ExperimentActor>() { + private static final long serialVersionUID = 1L; + + @Override + public ExperimentActor create() throws Exception { + return new ExperimentActor(expUUID); + } + }); + } + + LoggingAdapter log = Logging.getLogger(getContext().system(), this); + + private final UUID expUUID; + + private ExperimentActor(UUID expUUID) { + this.expUUID = expUUID; + } + + @Override + public void onReceive(Object message) throws Throwable { + if (message instanceof QueryResult) { + QueryResult queryResult = (QueryResult) message; + log.info("received query result for : " + expUUID.toString()); + } + else { + unhandled(message); + } + } +} diff --git a/src/main/java/eu/hbp/mip/akka/ListenerActor.java b/src/main/java/eu/hbp/mip/akka/ListenerActor.java deleted file mode 100644 index c86140e717c4a9f9b474c142117540671b6a8c8e..0000000000000000000000000000000000000000 --- a/src/main/java/eu/hbp/mip/akka/ListenerActor.java +++ /dev/null @@ -1,40 +0,0 @@ -package eu.hbp.mip.akka; - -import akka.actor.UntypedActor; -import eu.hbp.mip.messages.external.Methods; -import eu.hbp.mip.messages.external.QueryResult; -import org.springframework.context.annotation.Scope; - -import javax.inject.Inject; -import javax.inject.Named; - -/** - * Created by mirco on 24.10.16. - */ - -@Named("ListenerActor") -@Scope("prototype") -public class ListenerActor extends UntypedActor { - - final ListeningService listeningService; - @Inject - public ListenerActor(@Named("ListeningService") ListeningService listeningService) { - this.listeningService = listeningService; - } - - @Override - public void onReceive(Object message) throws Exception { - if (message instanceof QueryResult) { - QueryResult queryResult = (QueryResult) message; - listeningService.listen("received query result"); - } - else if (message instanceof Methods) { - Methods methods = (Methods) message; - listeningService.listen("received methods"); - } - else { - unhandled(message); - } - } - -} \ No newline at end of file diff --git a/src/main/java/eu/hbp/mip/akka/SimpleActor.java b/src/main/java/eu/hbp/mip/akka/SimpleActor.java new file mode 100644 index 0000000000000000000000000000000000000000..c57edbf2afda8c3dc51aaf20c2da630191544071 --- /dev/null +++ b/src/main/java/eu/hbp/mip/akka/SimpleActor.java @@ -0,0 +1,25 @@ +package eu.hbp.mip.akka; + +import akka.actor.UntypedActor; +import akka.event.Logging; +import akka.event.LoggingAdapter; +import eu.hbp.mip.messages.external.Methods; + +/** + * Created by mirco on 30.11.16. + */ +public class SimpleActor extends UntypedActor { + + LoggingAdapter log = Logging.getLogger(getContext().system(), this); + + @Override + public void onReceive(Object message) throws Throwable { + if (message instanceof Methods) { + Methods methods = (Methods) message; + log.info("received methods"); + } + else { + unhandled(message); + } + } +} diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java index 725831fc8ee68bd867e3e45fd0842e36f4e9d94b..4932a2add54f6564d7914dca636faa4f6c7b2135 100644 --- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java @@ -1,14 +1,16 @@ package eu.hbp.mip.controllers; +import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.ActorSystem; +import akka.actor.Props; import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import eu.hbp.mip.akka.ListenerActor; -import eu.hbp.mip.akka.ListeningService; +import eu.hbp.mip.akka.ExperimentActor; +import eu.hbp.mip.akka.SimpleActor; import eu.hbp.mip.configuration.SecurityConfiguration; import eu.hbp.mip.messages.external.MethodsQuery; import eu.hbp.mip.model.Experiment; @@ -215,7 +217,8 @@ public class ExperimentApi { StringBuilder response = new StringBuilder(); ActorSelection wokenActor = actorSystem.actorSelection(wokenPath); - wokenActor.tell(new MethodsQuery(), new ListenerActor(new ListeningService()).getSelf()); + ActorRef simpleActor = actorSystem.actorOf(Props.create(SimpleActor.class)); + wokenActor.tell(new MethodsQuery(), simpleActor); // TODO: remove this @@ -294,18 +297,19 @@ public class ExperimentApi { final eu.hbp.mip.messages.external.ExperimentQuery experimentQuery = experiment.computeQuery(); ActorSelection wokenActor = actorSystem.actorSelection(wokenPath); - wokenActor.tell(experimentQuery, new ListenerActor(new ListeningService()).getSelf()); + ActorRef experimentActor = actorSystem.actorOf(Props.create(ExperimentActor.class, experiment.getUuid())); + wokenActor.tell(experimentQuery, experimentActor); } private void sendExaremeExperiment(Experiment experiment) { // this runs in the background. For future optimization: use a thread pool - new Thread() { - @Override - public void run() { - String query = experiment.computeExaremeQuery(); - String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO; - - // Results are stored in the experiment object +// new Thread() { +// @Override +// public void run() { +// String query = experiment.computeExaremeQuery(); +// String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO; +// +// // Results are stored in the experiment object // try { // executeExperiment(url, query, experiment); // } catch (IOException e) { @@ -319,8 +323,8 @@ public class ExperimentApi { // experiment.setResult("Unsupported variables !"); // } // finishExpermient(experiment); - } - }.start(); +// } +// }.start(); } private void finishExpermient(Experiment experiment)