From 493c8e36e24a7e7e01fe37ce20abe8fdafbdc8e3 Mon Sep 17 00:00:00 2001
From: Ludovic Claude <ludovic.claude54@gmail.com>
Date: Wed, 27 Dec 2017 15:00:28 +0100
Subject: [PATCH] Upgrade to Akka 2.5 and Woken-messages 2.1.5

---
 pom.xml                                       |  4 +-
 src/main/java/eu/hbp/mip/MIPApplication.java  |  2 +-
 .../java/eu/hbp/mip/akka/ExperimentActor.java | 60 +++++++------------
 .../java/eu/hbp/mip/akka/SpringExtension.java |  2 +-
 .../eu/hbp/mip/controllers/ArticlesApi.java   |  2 +-
 .../eu/hbp/mip/controllers/DatasetsApi.java   |  2 +-
 .../eu/hbp/mip/controllers/ExperimentApi.java | 11 ++--
 .../eu/hbp/mip/controllers/ModelsApi.java     |  2 +-
 .../eu/hbp/mip/controllers/RequestsApi.java   |  8 +--
 .../java/eu/hbp/mip/controllers/StatsApi.java |  2 +-
 .../java/eu/hbp/mip/controllers/UsersApi.java |  2 +-
 .../eu/hbp/mip/controllers/VariablesApi.java  |  2 +-
 src/main/java/eu/hbp/mip/model/Article.java   |  2 +-
 src/main/java/eu/hbp/mip/model/Dataset.java   |  2 +-
 .../java/eu/hbp/mip/model/Experiment.java     | 35 +++++------
 .../java/eu/hbp/mip/model/GeneralStats.java   |  2 +-
 src/main/java/eu/hbp/mip/model/Group.java     |  2 +-
 .../java/eu/hbp/mip/model/MiningQuery.java    | 15 ++---
 src/main/java/eu/hbp/mip/model/Query.java     |  2 +-
 src/main/java/eu/hbp/mip/model/Tag.java       |  2 +-
 src/main/java/eu/hbp/mip/model/User.java      |  2 +-
 src/main/java/eu/hbp/mip/model/Value.java     |  2 +-
 src/main/java/eu/hbp/mip/model/Variable.java  |  2 +-
 src/main/java/eu/hbp/mip/model/Vote.java      |  2 +-
 .../java/eu/hbp/mip/utils/TypesConvert.java   | 21 +++----
 25 files changed, 80 insertions(+), 110 deletions(-)

diff --git a/pom.xml b/pom.xml
index f4eced3d8..2777e1152 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,9 +47,9 @@
         <spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version>
         <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version>
         <aspectjweaver.version>1.8.9</aspectjweaver.version>
-        <woken-messages.version>2.1.1</woken-messages.version>
+        <woken-messages.version>2.1.5</woken-messages.version>
         <javax-inject.version>1</javax-inject.version>
-        <akka.version>2.3.16</akka.version>
+        <akka.version>2.5.8</akka.version>
         <spring-context.version>4.3.4.RELEASE</spring-context.version>
         <protobuf-java.version>3.1.0</protobuf-java.version>
     </properties>
diff --git a/src/main/java/eu/hbp/mip/MIPApplication.java b/src/main/java/eu/hbp/mip/MIPApplication.java
index 9e648fda9..df70ba78a 100644
--- a/src/main/java/eu/hbp/mip/MIPApplication.java
+++ b/src/main/java/eu/hbp/mip/MIPApplication.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
index 19a1fc606..f6fa19a65 100644
--- a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
+++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java
@@ -1,7 +1,6 @@
 package eu.hbp.mip.akka;
 
-import akka.actor.UntypedActor;
-import eu.hbp.mip.woken.messages.external.QueryError;
+import akka.actor.AbstractActor;
 import eu.hbp.mip.woken.messages.external.QueryResult;
 import eu.hbp.mip.model.Experiment;
 import eu.hbp.mip.repositories.ExperimentRepository;
@@ -20,56 +19,39 @@ import java.util.UUID;
 
 @Component
 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-public class ExperimentActor extends UntypedActor {
+public class ExperimentActor extends AbstractActor {
 
     @Autowired
     private ExperimentRepository experimentRepository;
 
     private static final Logger LOGGER = Logger.getLogger(ExperimentActor.class);
 
+    public Receive createReceive() {
+        return receiveBuilder()
+                .match(QueryResult.class, this::handleQueryResult)
+                .matchAny(o -> LOGGER.info("received unknown message " + o))
+                .build();
+    }
 
-    @Override
-    public void onReceive(Object message) {
+    private void handleQueryResult(QueryResult queryResult) {
         LOGGER.info("ActorExperiment - onReceive method has been called");
         UUID uuid = UUID.fromString(this.getSelf().path().name());
-        LOGGER.info("\n\nExperimentActor received response from woken for UUID: \n"+uuid.toString());
-        if (message instanceof QueryResult) {
-            QueryResult queryResult = (QueryResult) message;
-            Experiment experiment = experimentRepository.findOne(uuid);
-            if(experiment == null)
-            {
-                LOGGER.error("Experiment with UUID="+uuid+" not found in DB");
-                getContext().stop(getSelf());
-                return;
-            }
-            experiment.setResult(queryResult.data().get());
-            experiment.setFinished(Date.from(queryResult.timestamp().toInstant()));
-            experimentRepository.save(experiment);
-            LOGGER.info("Experiment "+ uuid +" updated (finished)");
+        LOGGER.info("\n\nExperimentActor received response from woken for UUID: \n" + uuid.toString());
+        Experiment experiment = experimentRepository.findOne(uuid);
+        if (experiment == null) {
+            LOGGER.error("Experiment with UUID=" + uuid + " not found in DB");
             getContext().stop(getSelf());
-        }
-
-        else if (message instanceof QueryError) {
-            QueryError queryError = (QueryError) message;
-            LOGGER.warn("received query error");
-            Experiment experiment = experimentRepository.findOne(uuid);
-            if(experiment == null)
-            {
-                LOGGER.error("Experiment with UUID="+uuid+" not found in DB");
-                getContext().stop(getSelf());
-                return;
+        } else {
+            if (queryResult.error().nonEmpty()) {
+                experiment.setHasServerError(true);
+                experiment.setResult(queryResult.error().get());
+            } else {
+                experiment.setResult(queryResult.data().get());
             }
-            experiment.setHasServerError(true);
-            experiment.setResult(queryError.message());
-            experimentRepository.save(experiment);
-            experiment.setFinished(new Date());
+            experiment.setFinished(Date.from(queryResult.timestamp().toInstant()));
             experimentRepository.save(experiment);
-            LOGGER.info("Experiment "+ uuid +" updated (finished)");
+            LOGGER.info("Experiment " + uuid + " updated (finished)");
             getContext().stop(getSelf());
         }
-
-        else {
-            unhandled(message);
-        }
     }
 }
diff --git a/src/main/java/eu/hbp/mip/akka/SpringExtension.java b/src/main/java/eu/hbp/mip/akka/SpringExtension.java
index e170284c8..5fe0698be 100644
--- a/src/main/java/eu/hbp/mip/akka/SpringExtension.java
+++ b/src/main/java/eu/hbp/mip/akka/SpringExtension.java
@@ -6,7 +6,7 @@ import akka.actor.Extension;
 import akka.actor.Props;
 import org.springframework.context.ApplicationContext;
 
-/**
+/*
  * Created by mirco on 24.10.16.
  */
 
diff --git a/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java b/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java
index e72ba07aa..9fe77079d 100644
--- a/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ArticlesApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java b/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java
index 26780f909..ccaf9e74d 100644
--- a/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/DatasetsApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index 5c3658972..8f2118618 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -12,8 +12,6 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import eu.hbp.mip.akka.SpringExtension;
 import eu.hbp.mip.configuration.SecurityConfiguration;
-import eu.hbp.mip.woken.messages.external.Methods;
-import eu.hbp.mip.woken.messages.external.MethodsQuery;
 import eu.hbp.mip.model.Experiment;
 import eu.hbp.mip.model.ExperimentQuery;
 import eu.hbp.mip.model.User;
@@ -21,6 +19,8 @@ import eu.hbp.mip.repositories.ExperimentRepository;
 import eu.hbp.mip.repositories.ModelRepository;
 import eu.hbp.mip.utils.HTTPUtil;
 import eu.hbp.mip.utils.JSONUtil;
+import eu.hbp.mip.woken.messages.external.MethodsQuery$;
+import eu.hbp.mip.woken.messages.external.MethodsResponse;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -46,6 +46,7 @@ import java.util.List;
 import java.util.UUID;
 
 import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
+
 /**
  * Created by habfast on 21/04/16.
  */
@@ -222,10 +223,10 @@ public class ExperimentApi {
         ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath);
 
         Timeout timeout = new Timeout(Duration.create(5, "seconds"));
-        Future<Object> future = Patterns.ask(wokenActor, new MethodsQuery(), timeout);
-        Methods result;
+        Future<Object> future = Patterns.ask(wokenActor, MethodsQuery$.MODULE$, timeout);
+        MethodsResponse result;
         try {
-            result = (Methods) Await.result(future, timeout.duration());
+            result = (MethodsResponse) Await.result(future, timeout.duration());
         } catch (Exception e) {
             LOGGER.error("Cannot receive methods list from woken !");
             LOGGER.trace(e.getMessage());
diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
index 77b74ad65..7a5952b95 100644
--- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
index 3ef2931c8..b590e6151 100644
--- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 18.01.16.
  */
 
@@ -62,7 +62,7 @@ public class RequestsApi {
         List<String> variables = extractVarCodes(q, "variables");
         List<String> groupings = extractVarCodes(q, "grouping");
         List<String> covariables = extractVarCodes(q, "covariables");
-        String filters = extractFilters(q, "filters");
+        String filters = extractFilters(q);
 
         List<String> allVars = new LinkedList<>();
         allVars.addAll(variables);
@@ -89,8 +89,8 @@ public class RequestsApi {
         return codes;
     }
 
-    private String extractFilters(JsonObject q, String field) {
-        return q.getAsJsonPrimitive(field).getAsString();
+    private String extractFilters(JsonObject q) {
+        return q.getAsJsonPrimitive("filters").getAsString();
     }
 
     private String generateDSCode(Query query) {
diff --git a/src/main/java/eu/hbp/mip/controllers/StatsApi.java b/src/main/java/eu/hbp/mip/controllers/StatsApi.java
index 4ca4fa9a4..ee88bbbba 100644
--- a/src/main/java/eu/hbp/mip/controllers/StatsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/StatsApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 18.01.16.
  */
 
diff --git a/src/main/java/eu/hbp/mip/controllers/UsersApi.java b/src/main/java/eu/hbp/mip/controllers/UsersApi.java
index 38635b6ee..ac69057ed 100644
--- a/src/main/java/eu/hbp/mip/controllers/UsersApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/UsersApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 14.01.16.
  */
 
diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
index d4ab18e7f..17770f1a5 100644
--- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Article.java b/src/main/java/eu/hbp/mip/model/Article.java
index 508ad89c4..220839623 100644
--- a/src/main/java/eu/hbp/mip/model/Article.java
+++ b/src/main/java/eu/hbp/mip/model/Article.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Dataset.java b/src/main/java/eu/hbp/mip/model/Dataset.java
index 2319d1550..69fc5ed99 100644
--- a/src/main/java/eu/hbp/mip/model/Dataset.java
+++ b/src/main/java/eu/hbp/mip/model/Dataset.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java
index fa94e45ef..5412c38db 100644
--- a/src/main/java/eu/hbp/mip/model/Experiment.java
+++ b/src/main/java/eu/hbp/mip/model/Experiment.java
@@ -6,12 +6,11 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.annotations.Expose;
 import com.google.gson.reflect.TypeToken;
-import eu.hbp.mip.woken.messages.external.Algorithm;
 import eu.hbp.mip.woken.messages.external.ExperimentQuery;
 import eu.hbp.mip.woken.messages.external.*;
 import eu.hbp.mip.utils.TypesConvert;
 import org.hibernate.annotations.Cascade;
-import scala.collection.JavaConverters;
+import scala.collection.JavaConversions;
 
 import javax.persistence.*;
 import java.lang.reflect.Type;
@@ -91,32 +90,28 @@ public class Experiment {
         if (model == null || model.getQuery() == null)
             return new ExperimentQuery(null, null, null, null, null, null);
 
-        List<Algorithm> algorithms = new LinkedList<>();
+        List<AlgorithmSpec> algorithms = new LinkedList<>();
         Type algoList = new TypeToken<LinkedList<eu.hbp.mip.model.Algorithm>>(){}.getType();
         List<eu.hbp.mip.model.Algorithm> algos = new Gson().fromJson(this.algorithms, algoList);
-        for (eu.hbp.mip.model.Algorithm a: algos
-             ) {
-            algorithms.add(new Algorithm(a.getCode(), a.getName(), TypesConvert.algoParamsToHashMap(a.getParameters())));
+        for (eu.hbp.mip.model.Algorithm a: algos) {
+            algorithms.add(new AlgorithmSpec(a.getCode(), TypesConvert.algoParamsToScala(a.getParameters())));
         }
 
-        List<Validation> validations = new LinkedList<>();
+        List<ValidationSpec> validations = new LinkedList<>();
         Type validList = new TypeToken<LinkedList<eu.hbp.mip.model.ExperimentValidator>>(){}.getType();
         List<eu.hbp.mip.model.ExperimentValidator> valids = new Gson().fromJson(this.validations, validList);
-        for (ExperimentValidator v: valids
-                ) {
-            validations.add(new Validation(v.getCode(), v.getName(), TypesConvert.algoParamsToHashMap(v.getParameters())));
+        for (ExperimentValidator v: valids) {
+            validations.add(new ValidationSpec(v.getCode(), TypesConvert.algoParamsToScala(v.getParameters())));
         }
 
-        scala.collection.immutable.List<VariableId> variablesSeq = JavaConverters.asScalaIteratorConverter(
-                TypesConvert.variablesToVariableIds(model.getQuery().getVariables()).iterator()).asScala().toList();
-        scala.collection.immutable.List<VariableId> covariablesSeq = JavaConverters.asScalaIteratorConverter(
-                TypesConvert.variablesToVariableIds(model.getQuery().getCovariables()).iterator()).asScala().toList();
-        scala.collection.immutable.List<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter(
-                TypesConvert.variablesToVariableIds(model.getQuery().getGrouping()).iterator()).asScala().toList();
-        scala.collection.immutable.List<Algorithm> algorithmsSeq = JavaConverters.asScalaIteratorConverter(
-                algorithms.iterator()).asScala().toSeq().toList();
-        scala.collection.immutable.List<Validation> validationsSeq = JavaConverters.asScalaIteratorConverter(
-                validations.iterator()).asScala().toSeq().toList();
+        scala.collection.immutable.List<VariableId> variablesSeq =
+                TypesConvert.variablesToVariableIds(model.getQuery().getVariables());
+        scala.collection.immutable.List<VariableId> covariablesSeq =
+                TypesConvert.variablesToVariableIds(model.getQuery().getCovariables());
+        scala.collection.immutable.List<VariableId> groupingSeq =
+                TypesConvert.variablesToVariableIds(model.getQuery().getGrouping());
+        scala.collection.immutable.List<AlgorithmSpec> algorithmsSeq = JavaConversions.asScalaBuffer(algorithms).toList();
+        scala.collection.immutable.List<ValidationSpec> validationsSeq = JavaConversions.asScalaBuffer(validations).toList();
 
         String filters = model.getQuery().getFilters();
 
diff --git a/src/main/java/eu/hbp/mip/model/GeneralStats.java b/src/main/java/eu/hbp/mip/model/GeneralStats.java
index 8953828d4..939ca27de 100644
--- a/src/main/java/eu/hbp/mip/model/GeneralStats.java
+++ b/src/main/java/eu/hbp/mip/model/GeneralStats.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 03.02.16.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Group.java b/src/main/java/eu/hbp/mip/model/Group.java
index 2b8c02bc0..3cf2a0706 100644
--- a/src/main/java/eu/hbp/mip/model/Group.java
+++ b/src/main/java/eu/hbp/mip/model/Group.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/MiningQuery.java b/src/main/java/eu/hbp/mip/model/MiningQuery.java
index d440a876c..41a9cf74c 100644
--- a/src/main/java/eu/hbp/mip/model/MiningQuery.java
+++ b/src/main/java/eu/hbp/mip/model/MiningQuery.java
@@ -3,8 +3,6 @@ package eu.hbp.mip.model;
 import com.google.gson.Gson;
 import eu.hbp.mip.woken.messages.external.VariableId;
 import eu.hbp.mip.utils.TypesConvert;
-import scala.collection.JavaConverters;
-import scala.collection.Seq;
 
 import java.util.LinkedList;
 import java.util.List;
@@ -75,15 +73,12 @@ public class MiningQuery {
 
     public eu.hbp.mip.woken.messages.external.MiningQuery prepareQuery() {
 
-        eu.hbp.mip.woken.messages.external.Algorithm scalaAlgorithm = new eu.hbp.mip.woken.messages.external.Algorithm(
-                algorithm.getCode(), algorithm.getName(), TypesConvert.algoParamsToHashMap(algorithm.getParameters()));
+        eu.hbp.mip.woken.messages.external.AlgorithmSpec scalaAlgorithm = new eu.hbp.mip.woken.messages.external.AlgorithmSpec(
+                algorithm.getCode(), TypesConvert.algoParamsToScala(algorithm.getParameters()));
 
-        scala.collection.immutable.List<VariableId> variablesSeq = JavaConverters.asScalaIteratorConverter(
-                TypesConvert.variablesToVariableIds(variables).iterator()).asScala().toList();
-        scala.collection.immutable.List<VariableId> covariablesSeq = JavaConverters.asScalaIteratorConverter(
-                TypesConvert.variablesToVariableIds(covariables).iterator()).asScala().toList();
-        scala.collection.immutable.List<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter(
-                TypesConvert.variablesToVariableIds(grouping).iterator()).asScala().toList();
+        scala.collection.immutable.List<VariableId> variablesSeq = TypesConvert.variablesToVariableIds(variables);
+        scala.collection.immutable.List<VariableId> covariablesSeq = TypesConvert.variablesToVariableIds(covariables);
+        scala.collection.immutable.List<VariableId> groupingSeq = TypesConvert.variablesToVariableIds(grouping);
 
         return new eu.hbp.mip.woken.messages.external.MiningQuery(
                 variablesSeq, covariablesSeq, groupingSeq, filters, scalaAlgorithm);
diff --git a/src/main/java/eu/hbp/mip/model/Query.java b/src/main/java/eu/hbp/mip/model/Query.java
index e0a075828..fd1229428 100644
--- a/src/main/java/eu/hbp/mip/model/Query.java
+++ b/src/main/java/eu/hbp/mip/model/Query.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Tag.java b/src/main/java/eu/hbp/mip/model/Tag.java
index e09f86fc2..3e1fbccbc 100644
--- a/src/main/java/eu/hbp/mip/model/Tag.java
+++ b/src/main/java/eu/hbp/mip/model/Tag.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/User.java b/src/main/java/eu/hbp/mip/model/User.java
index 11b6b8fd4..c0c845876 100644
--- a/src/main/java/eu/hbp/mip/model/User.java
+++ b/src/main/java/eu/hbp/mip/model/User.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Value.java b/src/main/java/eu/hbp/mip/model/Value.java
index 17ca49d52..784452e59 100644
--- a/src/main/java/eu/hbp/mip/model/Value.java
+++ b/src/main/java/eu/hbp/mip/model/Value.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Variable.java b/src/main/java/eu/hbp/mip/model/Variable.java
index 8fc4d2dd9..0947cdd7d 100644
--- a/src/main/java/eu/hbp/mip/model/Variable.java
+++ b/src/main/java/eu/hbp/mip/model/Variable.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 04.12.15.
  */
 
diff --git a/src/main/java/eu/hbp/mip/model/Vote.java b/src/main/java/eu/hbp/mip/model/Vote.java
index 8c7953784..fcd52e485 100644
--- a/src/main/java/eu/hbp/mip/model/Vote.java
+++ b/src/main/java/eu/hbp/mip/model/Vote.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Created by mirco on 24.05.16.
  */
 
diff --git a/src/main/java/eu/hbp/mip/utils/TypesConvert.java b/src/main/java/eu/hbp/mip/utils/TypesConvert.java
index 403248348..42cc99520 100644
--- a/src/main/java/eu/hbp/mip/utils/TypesConvert.java
+++ b/src/main/java/eu/hbp/mip/utils/TypesConvert.java
@@ -1,34 +1,31 @@
 package eu.hbp.mip.utils;
 
+import eu.hbp.mip.woken.messages.external.CodeValue;
 import eu.hbp.mip.woken.messages.external.VariableId;
 import eu.hbp.mip.model.AlgorithmParam;
 import eu.hbp.mip.model.Variable;
-import scala.collection.immutable.HashMap;
+import scala.collection.JavaConversions;
 
 import java.util.LinkedList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Created by mirco on 06.01.17.
  */
 public class TypesConvert {
 
-    public static List<VariableId> variablesToVariableIds(List<Variable> vars) {
+    public static scala.collection.immutable.List<VariableId> variablesToVariableIds(List<Variable> vars) {
         List<VariableId> varIds = new LinkedList<>();
-        for (Variable v: vars
-                ) {
+        for (Variable v: vars) {
             varIds.add(new VariableId(v.getCode()));
         }
-        return varIds;
+        return JavaConversions.asScalaBuffer(varIds).toList();
     }
 
-    public static HashMap<String, String> algoParamsToHashMap(List<AlgorithmParam> aps) {
-        HashMap<String, String> params = new HashMap<>();
-        for (AlgorithmParam ap: aps
-                ) {
-            params = params.updated(ap.getCode(), ap.getValue());
-        }
-        return params;
+    public static scala.collection.immutable.List<CodeValue> algoParamsToScala(List<AlgorithmParam> aps) {
+        List<CodeValue> cvs = aps.stream().map(p -> new CodeValue(p.getCode(), p.getValue())).collect(Collectors.toList());
+        return JavaConversions.asScalaBuffer(cvs).toList();
     }
 
 }
-- 
GitLab