Slide 43
Slide 43 text
Jakub Marchwicki <@kubem>
@GetMapping("/loans/{loanId}")
public CompletableFuture loanDetails(@PathVariable("loanId") UUID loanId) {
return supplyAsync(() -> loansClient.getLoanDetails(loanId), executor)
.thenApply(l -> {
Member memberDetails = membersClient.getMemberDetails(l.getMemberId());
return Tuple.of(l, memberDetails);
})
.thenCombine(supplyAsync(() -> riskClient.getRiskAssessmentDetails(loanId), executor),
(loanDetailsMember, riskInformation) -> LoanInformation
.fromLoanDetails(loanDetailsMember.getLeft())
.requestId(UUID.randomUUID())
.member(loanDetailsMember.getRight())
.riskAssessment(riskInformation)
.build());
}