Как избежать возврата внутри вызова репозитория, чтобы продолжить зацикливание списка элементов в контроллере инфраструктуры воспроизведения - PullRequest
0 голосов
/ 21 сентября 2018

У меня проблема с одним из моих контроллеров, который берет список из тела, чтобы добавить профессии пользователю.Профессию можно передать как идентификатор или просто имя (если профессия не существует в базе данных), в этом случае я беру название профессии, добавляю его и продолжаю цикл, чтобы добавить остальные.Но когда я использую вызов хранилища, чтобы добавить эту новую профессию по имени, это заставляет меня возвращать Результат, и я пока не хочу возвращать Результат.Я просто хочу продолжить цикл остальных профессий в списке.

Как мне избежать этого возврата?

Вот мой код:

@ContentType(APPLICATION_JSON)
public CompletionStage<Result> setProfessions() {


    // More code here...

    // Here start looping items in json 
    // that can contains "id_profession" or "name_profession"
    jsonToPersonList.forEach(profession -> {
        boolean needNewProfession = false;
        if (profession.getIdProfession() == null && profession.getIdSector() != null && profession.getNameProfession() != null) {
        //we have to create non-official profession
            needNewProfession = true;
        }
        if (needNewProfession) {
            Profession aux = new Profession();
            aux.setIdSector(profession.getIdSector());
            aux.setName(profession.getNameProfession());
            aux.setOfficial(false);
            return professionRepository.add(aux).thenApplyAsync(p -> p, executionContext.current()).thenComposeAsync(newProfession -> {
                if (newProfession != null) {
                    profession.setNameProfession(null);
                    profession.setIdProfession(newProfession.getId());
                    return professionRepository.addSectorToProfession(newProfession.getId(), profession.getIdSector()).thenApplyAsync(p -> p, executionContext.current()).thenComposeAsync(prof -> {
                        if (prof != null) {
                            profession.setIdUser(Long.parseLong(id));
                            return //This is the return that is forcing me, but I need to escape
                        } else {
                            return CompletableFuture.completedFuture(internalServerError(JsonUtil.responseFromJsonNode(false, null, UNEXPECTED_SERVER_ERROR)));
                        }
                    }, executionContext.current());
                } else {
                    return CompletableFuture.completedFuture(internalServerError(JsonUtil.responseFromJsonNode(false, null, UNEXPECTED_SERVER_ERROR)));
                }
            }, executionContext.current());
        }else{
        profession.setIdUser(Long.parseLong(id));
        }
    });
    return professionRepository.setProfessions(jsonToPersonList).thenApplyAsync(stream -> {


        //More code here...
...