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 @@
<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>
......
/**
/*
* Created by mirco on 04.12.15.
*/
......
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);
}
}
}
......@@ -6,7 +6,7 @@ import akka.actor.Extension;
import akka.actor.Props;
import org.springframework.context.ApplicationContext;
/**
/*
* Created by mirco on 24.10.16.
*/
......
/**
/*
* Created by mirco on 04.12.15.
*/
......
/**
/*
* Created by mirco on 04.12.15.
*/
......
......@@ -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());
......
/**
/*
* Created by mirco on 04.12.15.
*/
......
/**
/*
* 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) {
......
/**
/*
* Created by mirco on 18.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.
*/
......
......@@ -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();
......
/**
/*
* Created by mirco on 03.02.16.
*/
......
/**
/*
* Created by mirco on 04.12.15.
*/
......
......@@ -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);
......
/**
/*
* 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