خرید بک لینک

Vote count: 0

Please see below code.

I use AsyncRestTemplate to make resttemplate asynchronously.

This method should wait all asyncresttemplate processes till done, And It will retu reviewContent.

Problem is callback methods are not working properly. So I can't take proper retu value of optionName and membershipGradeCode and reviewType.

Could someone explain what am I missing now?

public ReviewContent getRepresentativeReviewContent(Long dealNo, Long categoryNo, String setId) {

    Optional<Map<String, Object>> review = Optional.ofNullable(boardApi.getRepresentativeReviewContent(dealNo));

    if (review.isPresent()) {

        Long memberNo = Long.valueOf(review.get().get("memberNo").toString());

        ReviewContent reviewContent  = new ReviewContent();

        ListenableFuture<ResponseEntity<Map>> optionInfo = dealApi.asyncGetDealOption(Long.valueOf(review.get().get("optionNo").toString()));
        optionInfo.addCallback(success -> {
                    try {
                        reviewContent.setOptionName((String) ((Map<String, Object>) success.getBody().get("data")).get("dealTitle"));
                    } catch (Exception e) {
                        reviewContent.setOptionName(null);
                    }
                }, failure -> LOGGER.error("asyncGetDealOption", failure.getStackTrace()));

        ListenableFuture<ResponseEntity<Map>> gradeInfoOfThisMember = mktApi.asyncGetMembershipGradeOfThisMember(memberNo);
        gradeInfoOfThisMember.addCallback(success -> {
                    try {
                        reviewContent.setMembershipGradeCode((Integer) ((Map<String, Object>) success.getBody().get("data")).get("grade"));
                    } catch (Exception e) {
                        reviewContent.setMembershipGradeCode(0);
                    }
                        },
                        failure -> {
                            reviewContent.setMembershipGradeCode(0);
                            LOGGER.error("asyncGetMembershipGradeOfThisMember", failure.getStackTrace());
                        });

        ListenableFuture<ResponseEntity<ReviewType>> reviewTypeByCategoryNo = boardApi.asyncGetReviewTypeByCategoryNo(categoryNo, setId);
        reviewTypeByCategoryNo.addCallback(success -> {
                    try {
                        reviewContent.setReviewType(success.getBody());
                    } catch (Exception e) {
                        reviewContent.setReviewType(null);
                    }
                },
                failure -> {
                    reviewContent.setReviewType(null);
                    LOGGER.error("asyncGetReviewTypeByCategoryNo", failure.getStackTrace());
                });

        reviewContent.setReviewCount((Integer) review.get().get("reviewCount"));
        reviewContent.setReviewAvgScore((Double) review.get().get("reviewAvgScore"));
        reviewContent.setContents((String) review.get().get("contents"));
        reviewContent.setCreateDt((String) review.get().get("createdDt"));
        reviewContent.setUpdateDt((String) review.get().get("updatedDt"));
        reviewContent.setMemberSrl(memberNo);
        reviewContent.setTitle((String) review.get().get("title"));
        reviewContent.setAccountSrl(Long.valueOf(review.get().get("accountNo").toString()));
        reviewContent.setMemberId((String) review.get().get("memberId"));
        reviewContent.setAccountSrl(Long.valueOf(review.get().get("accountNo").toString()));

        boolean isApiExecutionDone = false;
        while (!isApiExecutionDone) {
            if (gradeInfoOfThisMember.isDone() && optionInfo.isDone() && reviewTypeByCategoryNo.isDone()) {
                isApiExecutionDone = true;
            }
        }

        retu reviewContent;
    }

    retu new ReviewContent();
}

asked 1 min ago

- - , .
.

برچسب: نویسنده: استخدام کار تاريخ: شنبه 26 تير 1395 ساعت: 16:18

صفحه بندی