I'm trying to add Async to my fetch operation from the db. However, I'm stuck at trying to get the response from CompletableFuture.allOf(). Join return a 'void. Instead how can I return a List<QuestionResponseData> as mentioned in the code. Below is my code
@RequestMapping(method = RequestMethod.POST, path = "/questionsByAssessmentIdAndQuestionNumber")
public List<QuestionResponseData> getQuestionsByIdAndLimit(@RequestBody QuestionOptionRequest questionOptionRequest) {
String assessmentId = questionOptionRequest.getAssessmentId();
QuestionOptionRequest request = QuestionOptionRequest.builder().assessmentId(questionOptionRequest.getAssessmentId()).startingQuestion(1).build();
CompletableFuture<List<QuestionResponseData>> questions = questionService.getQuestions(request);
QuestionOptionRequest request1 = QuestionOptionRequest.builder().assessmentId(assessmentId).startingQuestion(26).build();
CompletableFuture<List<QuestionResponseData>> questions1 = questionService.getQuestions(request1);
QuestionOptionRequest request2 = QuestionOptionRequest.builder().assessmentId(assessmentId).startingQuestion(51).build();
CompletableFuture<List<QuestionResponseData>> questions2 = questionService.getQuestions(request2);
QuestionOptionRequest request3 = QuestionOptionRequest.builder().assessmentId(assessmentId).startingQuestion(76).build();
CompletableFuture<List<QuestionResponseData>> questions3 = questionService.getQuestions(request3);
CompletableFuture.allOf(questions, questions1, questions2, questions3).join();
//return questionService.getQuestions(questionOptionRequest);
}