From 04075032d3729df27b48d1557da6f6b2b8688907 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Tue, 29 Nov 2016 17:31:56 +0100
Subject: [PATCH] update woken-messages version and use it for listing methods
 too

---
 pom.xml                                       |  2 +-
 .../java/eu/hbp/mip/akka/ListenerActor.java   |  7 ++-
 .../eu/hbp/mip/controllers/ExperimentApi.java | 63 ++++++++-----------
 3 files changed, 34 insertions(+), 38 deletions(-)

diff --git a/pom.xml b/pom.xml
index 05d771937..5af454e24 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
         <spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version>
         <spring-boot-starter-actuator.version>1.4.0.RELEASE</spring-boot-starter-actuator.version>
         <aspectjweaver.version>1.8.9</aspectjweaver.version>
-        <woken-messages.version>a0244b0</woken-messages.version>
+        <woken-messages.version>d455fa0</woken-messages.version>
         <javax-inject.version>1</javax-inject.version>
         <akka-actor.version>2.4.11</akka-actor.version>
         <akka-remote.version>2.4.11</akka-remote.version>
diff --git a/src/main/java/eu/hbp/mip/akka/ListenerActor.java b/src/main/java/eu/hbp/mip/akka/ListenerActor.java
index b62494457..c86140e71 100644
--- a/src/main/java/eu/hbp/mip/akka/ListenerActor.java
+++ b/src/main/java/eu/hbp/mip/akka/ListenerActor.java
@@ -1,6 +1,7 @@
 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;
 
@@ -25,7 +26,11 @@ public class ListenerActor extends UntypedActor {
     public void onReceive(Object message) throws Exception {
         if (message instanceof QueryResult) {
             QueryResult queryResult = (QueryResult) message;
-            listeningService.listen(queryResult.data().get());
+            listeningService.listen("received query result");
+        }
+        else if (message instanceof Methods) {
+            Methods methods = (Methods) message;
+            listeningService.listen("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 554682fe9..725831fc8 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -10,12 +10,12 @@ import com.google.gson.JsonParser;
 import eu.hbp.mip.akka.ListenerActor;
 import eu.hbp.mip.akka.ListeningService;
 import eu.hbp.mip.configuration.SecurityConfiguration;
+import eu.hbp.mip.messages.external.MethodsQuery;
 import eu.hbp.mip.model.Experiment;
 import eu.hbp.mip.model.ExperimentQuery;
 import eu.hbp.mip.model.User;
 import eu.hbp.mip.repositories.ExperimentRepository;
 import eu.hbp.mip.repositories.ModelRepository;
-import eu.hbp.mip.utils.JSONUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -27,10 +27,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.util.Date;
 import java.util.Iterator;
@@ -217,18 +214,21 @@ public class ExperimentApi {
 
         StringBuilder response = new StringBuilder();
 
-        // TODO: Use akka
-        int code = 500;
-
-        JsonObject catalog = new JsonParser().parse(response.toString()).getAsJsonObject();
-
-        InputStream is = ExperimentApi.class.getClassLoader().getResourceAsStream(EXAREME_ALGO_JSON_FILE);
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        JsonObject exaremeAlgo = new JsonParser().parse(br).getAsJsonObject();
+        ActorSelection wokenActor = actorSystem.actorSelection(wokenPath);
+        wokenActor.tell(new MethodsQuery(), new ListenerActor(new ListeningService()).getSelf());
 
-        catalog.get("algorithms").getAsJsonArray().add(exaremeAlgo);
 
+        // TODO: remove this
+        int code = 200;
+        JsonObject catalog = new JsonParser().parse(response.toString()).getAsJsonObject();
+//
+//        InputStream is = ExperimentApi.class.getClassLoader().getResourceAsStream(EXAREME_ALGO_JSON_FILE);
+//        InputStreamReader isr = new InputStreamReader(is);
+//        BufferedReader br = new BufferedReader(isr);
+//        JsonObject exaremeAlgo = new JsonParser().parse(br).getAsJsonObject();
+//
+//        catalog.get("algorithms").getAsJsonArray().add(exaremeAlgo);
+//
         return new ResponseEntity<>(gson.toJson(catalog), HttpStatus.valueOf(code));
     }
 
@@ -306,19 +306,19 @@ public class ExperimentApi {
                 String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO;
 
                 // Results are stored in the experiment object
-                try {
-                    executeExperiment(url, query, experiment);
-                } catch (IOException e) {
-                    LOGGER.trace(e);
-                    LOGGER.warn("Exareme experiment failed to run properly !");
-                    setExperimentError(e, experiment);
-                }
-
-                if(!JSONUtil.isJSONValid(experiment.getResult()))
-                {
-                    experiment.setResult("Unsupported variables !");
-                }
-                finishExpermient(experiment);
+//                try {
+//                    executeExperiment(url, query, experiment);
+//                } catch (IOException e) {
+//                    LOGGER.trace(e);
+//                    LOGGER.warn("Exareme experiment failed to run properly !");
+//                    setExperimentError(e, experiment);
+//                }
+//
+//                if(!JSONUtil.isJSONValid(experiment.getResult()))
+//                {
+//                    experiment.setResult("Unsupported variables !");
+//                }
+//                finishExpermient(experiment);
             }
         }.start();
     }
@@ -331,15 +331,6 @@ public class ExperimentApi {
         LOGGER.info("Experiment updated (finished)");
     }
 
-    private static void executeExperiment(String url, String query, Experiment experiment) throws IOException {
-        StringBuilder results = new StringBuilder();
-        // TODO: use akka
-        int code = 500;
-        experiment.setResult(results.toString());
-        experiment.setHasError(code >= 400);
-        experiment.setHasServerError(code >= 500);
-    }
-
     private static void setExperimentError(IOException e, Experiment experiment) {
         experiment.setHasError(true);
         experiment.setHasServerError(true);
-- 
GitLab