public CompletionStage handleMessage()

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);
        });
    }