in technology/kubernetes/demo-app/src/main/java/org/acme/demoapp/rest/DemoDataResource.java [99:130]
public CompletionStage<Void> handleMessage(Message<String> solverResponseMessage) {
return CompletableFuture.runAsync(() -> {
SolverResponse solverResponse;
try {
solverResponse = objectMapper.readValue(solverResponseMessage.getPayload(), SolverResponse.class);
} catch (JsonProcessingException e) {
throw new IllegalStateException("Unable to serialize the " + SolverResponse.class.getName()
+ " (" + solverResponseMessage.getPayload() + ") from JSON.", e);
}
final long problemId = solverResponse.getProblemId();
TimeTable timeTable = timeTableRepository.load(problemId);
if (timeTable == null) {
IllegalStateException exception = new IllegalStateException("A timetable (" + problemId
+ ") cannot be found in the repository.");
solverResponseMessage.nack(exception);
throw exception;
}
solutionManager.update(timeTable);
Dataset dataset = datasets.get(problemId);
if (dataset == null) {
throw new IllegalStateException("Impossible state: Received a notification about a solved dataset ("
+ problemId
+ ") that was never submitted.");
}
solverResponseMessage.ack();
if (timeTable.getScore() != null) {
dataset.setSolved(true);
dataset.setScore(timeTable.getScore().toString());
}
eventResource.sendEvent(problemId);
});
}