Skip to content
Snippets Groups Projects
Commit 493c8e36 authored by Ludovic Claude's avatar Ludovic Claude
Browse files

Upgrade to Akka 2.5 and Woken-messages 2.1.5

parent de9c49e2
No related branches found
No related tags found
No related merge requests found
Showing
with 67 additions and 94 deletions
...@@ -47,9 +47,9 @@ ...@@ -47,9 +47,9 @@
<spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version> <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> <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version>
<aspectjweaver.version>1.8.9</aspectjweaver.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> <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> <spring-context.version>4.3.4.RELEASE</spring-context.version>
<protobuf-java.version>3.1.0</protobuf-java.version> <protobuf-java.version>3.1.0</protobuf-java.version>
</properties> </properties>
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
package eu.hbp.mip.akka; package eu.hbp.mip.akka;
import akka.actor.UntypedActor; import akka.actor.AbstractActor;
import eu.hbp.mip.woken.messages.external.QueryError;
import eu.hbp.mip.woken.messages.external.QueryResult; import eu.hbp.mip.woken.messages.external.QueryResult;
import eu.hbp.mip.model.Experiment; import eu.hbp.mip.model.Experiment;
import eu.hbp.mip.repositories.ExperimentRepository; import eu.hbp.mip.repositories.ExperimentRepository;
...@@ -20,56 +19,39 @@ import java.util.UUID; ...@@ -20,56 +19,39 @@ import java.util.UUID;
@Component @Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class ExperimentActor extends UntypedActor { public class ExperimentActor extends AbstractActor {
@Autowired @Autowired
private ExperimentRepository experimentRepository; private ExperimentRepository experimentRepository;
private static final Logger LOGGER = Logger.getLogger(ExperimentActor.class); 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 private void handleQueryResult(QueryResult queryResult) {
public void onReceive(Object message) {
LOGGER.info("ActorExperiment - onReceive method has been called"); LOGGER.info("ActorExperiment - onReceive method has been called");
UUID uuid = UUID.fromString(this.getSelf().path().name()); UUID uuid = UUID.fromString(this.getSelf().path().name());
LOGGER.info("\n\nExperimentActor received response from woken for UUID: \n"+uuid.toString()); LOGGER.info("\n\nExperimentActor received response from woken for UUID: \n" + uuid.toString());
if (message instanceof QueryResult) { Experiment experiment = experimentRepository.findOne(uuid);
QueryResult queryResult = (QueryResult) message; if (experiment == null) {
Experiment experiment = experimentRepository.findOne(uuid); LOGGER.error("Experiment with UUID=" + uuid + " not found in DB");
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)");
getContext().stop(getSelf()); getContext().stop(getSelf());
} } else {
if (queryResult.error().nonEmpty()) {
else if (message instanceof QueryError) { experiment.setHasServerError(true);
QueryError queryError = (QueryError) message; experiment.setResult(queryResult.error().get());
LOGGER.warn("received query error"); } else {
Experiment experiment = experimentRepository.findOne(uuid); experiment.setResult(queryResult.data().get());
if(experiment == null)
{
LOGGER.error("Experiment with UUID="+uuid+" not found in DB");
getContext().stop(getSelf());
return;
} }
experiment.setHasServerError(true); experiment.setFinished(Date.from(queryResult.timestamp().toInstant()));
experiment.setResult(queryError.message());
experimentRepository.save(experiment);
experiment.setFinished(new Date());
experimentRepository.save(experiment); experimentRepository.save(experiment);
LOGGER.info("Experiment "+ uuid +" updated (finished)"); LOGGER.info("Experiment " + uuid + " updated (finished)");
getContext().stop(getSelf()); getContext().stop(getSelf());
} }
else {
unhandled(message);
}
} }
} }
...@@ -6,7 +6,7 @@ import akka.actor.Extension; ...@@ -6,7 +6,7 @@ import akka.actor.Extension;
import akka.actor.Props; import akka.actor.Props;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
/** /*
* Created by mirco on 24.10.16. * Created by mirco on 24.10.16.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
...@@ -12,8 +12,6 @@ import com.google.gson.JsonObject; ...@@ -12,8 +12,6 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import eu.hbp.mip.akka.SpringExtension; import eu.hbp.mip.akka.SpringExtension;
import eu.hbp.mip.configuration.SecurityConfiguration; 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.Experiment;
import eu.hbp.mip.model.ExperimentQuery; import eu.hbp.mip.model.ExperimentQuery;
import eu.hbp.mip.model.User; import eu.hbp.mip.model.User;
...@@ -21,6 +19,8 @@ import eu.hbp.mip.repositories.ExperimentRepository; ...@@ -21,6 +19,8 @@ import eu.hbp.mip.repositories.ExperimentRepository;
import eu.hbp.mip.repositories.ModelRepository; import eu.hbp.mip.repositories.ModelRepository;
import eu.hbp.mip.utils.HTTPUtil; import eu.hbp.mip.utils.HTTPUtil;
import eu.hbp.mip.utils.JSONUtil; 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.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
...@@ -46,6 +46,7 @@ import java.util.List; ...@@ -46,6 +46,7 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
/** /**
* Created by habfast on 21/04/16. * Created by habfast on 21/04/16.
*/ */
...@@ -222,10 +223,10 @@ public class ExperimentApi { ...@@ -222,10 +223,10 @@ public class ExperimentApi {
ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath); ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath);
Timeout timeout = new Timeout(Duration.create(5, "seconds")); Timeout timeout = new Timeout(Duration.create(5, "seconds"));
Future<Object> future = Patterns.ask(wokenActor, new MethodsQuery(), timeout); Future<Object> future = Patterns.ask(wokenActor, MethodsQuery$.MODULE$, timeout);
Methods result; MethodsResponse result;
try { try {
result = (Methods) Await.result(future, timeout.duration()); result = (MethodsResponse) Await.result(future, timeout.duration());
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Cannot receive methods list from woken !"); LOGGER.error("Cannot receive methods list from woken !");
LOGGER.trace(e.getMessage()); LOGGER.trace(e.getMessage());
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
/** /*
* Created by mirco on 18.01.16. * Created by mirco on 18.01.16.
*/ */
...@@ -62,7 +62,7 @@ public class RequestsApi { ...@@ -62,7 +62,7 @@ public class RequestsApi {
List<String> variables = extractVarCodes(q, "variables"); List<String> variables = extractVarCodes(q, "variables");
List<String> groupings = extractVarCodes(q, "grouping"); List<String> groupings = extractVarCodes(q, "grouping");
List<String> covariables = extractVarCodes(q, "covariables"); List<String> covariables = extractVarCodes(q, "covariables");
String filters = extractFilters(q, "filters"); String filters = extractFilters(q);
List<String> allVars = new LinkedList<>(); List<String> allVars = new LinkedList<>();
allVars.addAll(variables); allVars.addAll(variables);
...@@ -89,8 +89,8 @@ public class RequestsApi { ...@@ -89,8 +89,8 @@ public class RequestsApi {
return codes; return codes;
} }
private String extractFilters(JsonObject q, String field) { private String extractFilters(JsonObject q) {
return q.getAsJsonPrimitive(field).getAsString(); return q.getAsJsonPrimitive("filters").getAsString();
} }
private String generateDSCode(Query query) { private String generateDSCode(Query query) {
......
/** /*
* Created by mirco on 18.01.16. * Created by mirco on 18.01.16.
*/ */
......
/** /*
* Created by mirco on 14.01.16. * Created by mirco on 14.01.16.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
...@@ -6,12 +6,11 @@ import com.google.gson.JsonObject; ...@@ -6,12 +6,11 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import com.google.gson.reflect.TypeToken; 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.ExperimentQuery;
import eu.hbp.mip.woken.messages.external.*; import eu.hbp.mip.woken.messages.external.*;
import eu.hbp.mip.utils.TypesConvert; import eu.hbp.mip.utils.TypesConvert;
import org.hibernate.annotations.Cascade; import org.hibernate.annotations.Cascade;
import scala.collection.JavaConverters; import scala.collection.JavaConversions;
import javax.persistence.*; import javax.persistence.*;
import java.lang.reflect.Type; import java.lang.reflect.Type;
...@@ -91,32 +90,28 @@ public class Experiment { ...@@ -91,32 +90,28 @@ public class Experiment {
if (model == null || model.getQuery() == null) if (model == null || model.getQuery() == null)
return new ExperimentQuery(null, null, null, null, null, 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(); Type algoList = new TypeToken<LinkedList<eu.hbp.mip.model.Algorithm>>(){}.getType();
List<eu.hbp.mip.model.Algorithm> algos = new Gson().fromJson(this.algorithms, algoList); List<eu.hbp.mip.model.Algorithm> algos = new Gson().fromJson(this.algorithms, algoList);
for (eu.hbp.mip.model.Algorithm a: algos for (eu.hbp.mip.model.Algorithm a: algos) {
) { algorithms.add(new AlgorithmSpec(a.getCode(), TypesConvert.algoParamsToScala(a.getParameters())));
algorithms.add(new Algorithm(a.getCode(), a.getName(), TypesConvert.algoParamsToHashMap(a.getParameters())));
} }
List<Validation> validations = new LinkedList<>(); List<ValidationSpec> validations = new LinkedList<>();
Type validList = new TypeToken<LinkedList<eu.hbp.mip.model.ExperimentValidator>>(){}.getType(); Type validList = new TypeToken<LinkedList<eu.hbp.mip.model.ExperimentValidator>>(){}.getType();
List<eu.hbp.mip.model.ExperimentValidator> valids = new Gson().fromJson(this.validations, validList); List<eu.hbp.mip.model.ExperimentValidator> valids = new Gson().fromJson(this.validations, validList);
for (ExperimentValidator v: valids for (ExperimentValidator v: valids) {
) { validations.add(new ValidationSpec(v.getCode(), TypesConvert.algoParamsToScala(v.getParameters())));
validations.add(new Validation(v.getCode(), v.getName(), TypesConvert.algoParamsToHashMap(v.getParameters())));
} }
scala.collection.immutable.List<VariableId> variablesSeq = JavaConverters.asScalaIteratorConverter( scala.collection.immutable.List<VariableId> variablesSeq =
TypesConvert.variablesToVariableIds(model.getQuery().getVariables()).iterator()).asScala().toList(); TypesConvert.variablesToVariableIds(model.getQuery().getVariables());
scala.collection.immutable.List<VariableId> covariablesSeq = JavaConverters.asScalaIteratorConverter( scala.collection.immutable.List<VariableId> covariablesSeq =
TypesConvert.variablesToVariableIds(model.getQuery().getCovariables()).iterator()).asScala().toList(); TypesConvert.variablesToVariableIds(model.getQuery().getCovariables());
scala.collection.immutable.List<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter( scala.collection.immutable.List<VariableId> groupingSeq =
TypesConvert.variablesToVariableIds(model.getQuery().getGrouping()).iterator()).asScala().toList(); TypesConvert.variablesToVariableIds(model.getQuery().getGrouping());
scala.collection.immutable.List<Algorithm> algorithmsSeq = JavaConverters.asScalaIteratorConverter( scala.collection.immutable.List<AlgorithmSpec> algorithmsSeq = JavaConversions.asScalaBuffer(algorithms).toList();
algorithms.iterator()).asScala().toSeq().toList(); scala.collection.immutable.List<ValidationSpec> validationsSeq = JavaConversions.asScalaBuffer(validations).toList();
scala.collection.immutable.List<Validation> validationsSeq = JavaConverters.asScalaIteratorConverter(
validations.iterator()).asScala().toSeq().toList();
String filters = model.getQuery().getFilters(); String filters = model.getQuery().getFilters();
......
/** /*
* Created by mirco on 03.02.16. * Created by mirco on 03.02.16.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
...@@ -3,8 +3,6 @@ package eu.hbp.mip.model; ...@@ -3,8 +3,6 @@ package eu.hbp.mip.model;
import com.google.gson.Gson; import com.google.gson.Gson;
import eu.hbp.mip.woken.messages.external.VariableId; import eu.hbp.mip.woken.messages.external.VariableId;
import eu.hbp.mip.utils.TypesConvert; import eu.hbp.mip.utils.TypesConvert;
import scala.collection.JavaConverters;
import scala.collection.Seq;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
...@@ -75,15 +73,12 @@ public class MiningQuery { ...@@ -75,15 +73,12 @@ public class MiningQuery {
public eu.hbp.mip.woken.messages.external.MiningQuery prepareQuery() { 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( eu.hbp.mip.woken.messages.external.AlgorithmSpec scalaAlgorithm = new eu.hbp.mip.woken.messages.external.AlgorithmSpec(
algorithm.getCode(), algorithm.getName(), TypesConvert.algoParamsToHashMap(algorithm.getParameters())); algorithm.getCode(), TypesConvert.algoParamsToScala(algorithm.getParameters()));
scala.collection.immutable.List<VariableId> variablesSeq = JavaConverters.asScalaIteratorConverter( scala.collection.immutable.List<VariableId> variablesSeq = TypesConvert.variablesToVariableIds(variables);
TypesConvert.variablesToVariableIds(variables).iterator()).asScala().toList(); scala.collection.immutable.List<VariableId> covariablesSeq = TypesConvert.variablesToVariableIds(covariables);
scala.collection.immutable.List<VariableId> covariablesSeq = JavaConverters.asScalaIteratorConverter( scala.collection.immutable.List<VariableId> groupingSeq = TypesConvert.variablesToVariableIds(grouping);
TypesConvert.variablesToVariableIds(covariables).iterator()).asScala().toList();
scala.collection.immutable.List<VariableId> groupingSeq = JavaConverters.asScalaIteratorConverter(
TypesConvert.variablesToVariableIds(grouping).iterator()).asScala().toList();
return new eu.hbp.mip.woken.messages.external.MiningQuery( return new eu.hbp.mip.woken.messages.external.MiningQuery(
variablesSeq, covariablesSeq, groupingSeq, filters, scalaAlgorithm); variablesSeq, covariablesSeq, groupingSeq, filters, scalaAlgorithm);
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
/** /*
* Created by mirco on 04.12.15. * Created by mirco on 04.12.15.
*/ */
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment