Ссылки, с которыми я уже справился и которые мне не помогли:
Я пытаюсь обновить существующее приложение с Play Framework 2.4 до Play Framework 2.5. Для этого необходимо изменить все Promise
на CompletionStage
. Пока все хорошо, но я немного рассортирован по этим строкам:
List<Promise<WSResponse>> promises = new ArrayList<Promise<WSResponse>>();
for (TargetRequest tRequest : targets) {
promises.add(/*get one promise*/);
}
return Promise.sequence(promises).map(new Function<List<WSResponse>, WSResponse>() {
@Override
public WSResponse apply(final List<WSResponse> responses) throws Throwable {
return responses.isEmpty() ? null : responses.get(0);
}
});
Как видите, эти строки переходят от List<Promise<WSResponse>>
к Promise<WSResponse>
, сначала переходя отот List<Promise<WSResponse>>
до Promise<List<WSResponse>>
и затем возвращает либо ноль, если List<WSResponse>
пусто, либо первый из списка, если его нет.
Как мне все это сделать с помощью CompletableStage
Promise
? метод sequence().map()
устарел. Я попробовал некоторые вещи, используя CompletableFuture.allOf()
, toArray()
и stream()
, но ничего окончательного.