From e4fb2b81f6b0ece544e287a6de69dc066cd7ecf6 Mon Sep 17 00:00:00 2001
From: Ludovic Claude <ludovic.claude54@gmail.com>
Date: Wed, 20 Mar 2019 19:02:14 +0100
Subject: [PATCH] Return only data part of Experiments

Fixes HBPLD-302
---
 src/main/java/eu/hbp/mip/akka/ExperimentActor.java        | 1 +
 .../eu/hbp/mip/configuration/PortalErrorAttributes.java   | 8 +++++++-
 src/main/java/eu/hbp/mip/controllers/ExperimentApi.java   | 3 ++-
 src/main/java/eu/hbp/mip/model/Experiment.java            | 2 +-
 4 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
index 21b415266..7431d7928 100644
--- a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
+++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
@@ -47,6 +47,7 @@ public class ExperimentActor extends AbstractActor {
                 experiment.setHasServerError(true);
                 experiment.setResult(queryResult.error().get());
             } else {
+                // TODO: use new WokenConversions().toJson(queryResult)
                 experiment.setResult(queryResult.data().get().compactPrint());
             }
             experiment.setFinished(Date.from(queryResult.timestamp().toInstant()));
diff --git a/src/main/java/eu/hbp/mip/configuration/PortalErrorAttributes.java b/src/main/java/eu/hbp/mip/configuration/PortalErrorAttributes.java
index 0143c42ca..aba509034 100644
--- a/src/main/java/eu/hbp/mip/configuration/PortalErrorAttributes.java
+++ b/src/main/java/eu/hbp/mip/configuration/PortalErrorAttributes.java
@@ -19,7 +19,13 @@ public class PortalErrorAttributes extends DefaultErrorAttributes {
         Map<String, Object> errorAttributes = super.getErrorAttributes(requestAttributes, includeStackTrace);
 
         Throwable throwable = getError(requestAttributes);
-        LOGGER.warn("Reporting server error", throwable);
+        StringBuilder sb = new StringBuilder("[");
+        for (String attr: requestAttributes.getAttributeNames(RequestAttributes.SCOPE_REQUEST)) {
+            Object v = requestAttributes.getAttribute(attr, RequestAttributes.SCOPE_REQUEST);
+            sb.append(attr).append(" = ").append(v).append('\n');
+        }
+        sb.append("]");
+        LOGGER.error("Reporting server error on request with attributes " + sb.toString(), throwable);
 
         if (throwable != null) {
 
diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index d94514c6e..caa8ea97b 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -272,7 +272,8 @@ public class ExperimentApi extends WokenClientController {
                         experiment.setHasServerError(true);
                         LOGGER.error("Experiment failed with message: " + queryResult.error().get());
                     }
-                    experiment.setResult(new WokenConversions().toJson(queryResult));
+                    // TODO: use new WokenConversions().toJson(queryResult)
+                    experiment.setResult(queryResult.data().get().compactPrint());
                     experiment.setFinished(Date.from(queryResult.timestamp().toInstant()));
                     experimentRepository.save(experiment);
                     LOGGER.info("Experiment " + uuid + " updated (finished)");
diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java
index 4356ee755..8f4dd0a34 100644
--- a/src/main/java/eu/hbp/mip/model/Experiment.java
+++ b/src/main/java/eu/hbp/mip/model/Experiment.java
@@ -309,7 +309,7 @@ public class Experiment {
             exp.remove("result");
 
             if (!isExaremeAlgorithm._1) {
-                JsonArray jsonResult = parser.parse(this.result).getAsJsonArray();
+                JsonElement jsonResult = parser.parse(this.result);
                 exp.add("result", jsonResult);
             } else {
                 JsonArray jsonArrayResult = new JsonArray();
-- 
GitLab