diff --git a/src/main/java/eu/hbp/mip/akka/SimpleActor.java b/src/main/java/eu/hbp/mip/akka/SimpleActor.java deleted file mode 100644 index 5e5a70cfa4c8866a928c7ec2ccb81951cecf7354..0000000000000000000000000000000000000000 --- a/src/main/java/eu/hbp/mip/akka/SimpleActor.java +++ /dev/null @@ -1,31 +0,0 @@ -package eu.hbp.mip.akka; - -import akka.actor.UntypedActor; -import akka.event.Logging; -import akka.event.LoggingAdapter; -import eu.hbp.mip.messages.external.Methods; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -/** - * Created by mirco on 30.11.16. - */ - -@Component -@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) -public class SimpleActor extends UntypedActor { - - LoggingAdapter log = Logging.getLogger(getContext().system(), this); - - @Override - public void onReceive(Object message) { - 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 097d9ef8ac744809faa1e3e88edfd4f1c99deeee..93699235a5820b367468af5bf031a39714cfc6dd 100644 --- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java @@ -3,11 +3,14 @@ package eu.hbp.mip.controllers; import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.ActorSystem; +import akka.pattern.Patterns; +import akka.util.Timeout; import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import eu.hbp.mip.akka.SpringExtension; import eu.hbp.mip.configuration.SecurityConfiguration; +import eu.hbp.mip.messages.external.Methods; import eu.hbp.mip.messages.external.MethodsQuery; import eu.hbp.mip.model.Experiment; import eu.hbp.mip.model.ExperimentQuery; @@ -22,6 +25,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import scala.concurrent.Await; +import scala.concurrent.Future; +import scala.concurrent.duration.Duration; import java.io.IOException; import java.net.MalformedURLException; @@ -201,11 +207,19 @@ public class ExperimentApi { LOGGER.info("Akka is trying to reach remote " + wokenRefPath); ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath); - ActorRef methodsManager = actorSystem.actorOf(SpringExtension.SPRING_EXTENSION_PROVIDER.get(actorSystem) - .props("simpleActor")); - wokenActor.tell(new MethodsQuery(), methodsManager); - return ResponseEntity.ok().build(); + Timeout timeout = new Timeout(Duration.create(5, "seconds")); + Future<Object> future = Patterns.ask(wokenActor, new MethodsQuery(), timeout); + Methods result = null; + try { + result = (Methods) Await.result(future, timeout.duration()); + } catch (Exception e) { + LOGGER.error("Cannot receive methods list from woken !"); + LOGGER.trace(e.getMessage()); + return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build(); + } + + return ResponseEntity.ok(result.methods()); } private ResponseEntity<String> doListExperiments( diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index b627b77013802c873a5b3a88872ed48ebe662337..c000854237fa1dc8b193569090295d2c060d3fa1 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -1,19 +1,8 @@ akka { - loglevel = DEBUG - log-config-on-start = on - debug { - autoreceive = on - lifecycle = on - unhandled = on - fsm = on - event-stream = on - } actor { provider = "akka.remote.RemoteActorRefProvider" } remote { - log-sent-messages = on - log-received-messages = on enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = 127.0.0.1 # external (logical) hostname