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