protected ProgressEvent handleRequest()

in aws-sso-assignment/src/main/java/software/amazon/sso/assignment/ReadHandler.java [22:59]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final ProxyClient<SsoAdminClient> proxyClient,
        final Logger logger) {

        this.logger = logger;

        AssignmentProxy assignmentProxy = new AssignmentProxy(proxy, proxyClient, logger);

        ResourceModel model = request.getDesiredResourceState();

        int retryThrottlingAttempts = Integer.valueOf(RETRY_ATTEMPTS);
        int retryISEAttempts = Integer.valueOf(RETRY_ATTEMPTS);
        while (retryISEAttempts > RETRY_ATTEMPTS_ZERO && retryThrottlingAttempts > RETRY_ATTEMPTS_ZERO) {
            try {
                if (!assignmentProxy.checkIfAssignmentAlreadyExist(model.getInstanceArn(), model.getTargetId(), model.getPermissionSetArn(), model.getPrincipalId(), model.getPrincipalType())) {
                    return ProgressEvent.defaultFailureHandler(new CfnNotFoundException(ResourceModel.TYPE_NAME, "Assignment not exists for given entity."), HandlerErrorCode.NotFound);
                }
                logger.log(String.format("%s has successfully been read.", ResourceModel.TYPE_NAME));
                break;
            } catch (ThrottlingException te) {
                retryThrottlingAttempts = decrementAndWait(retryThrottlingAttempts);
                continue;
            } catch (InternalServerException ise) {
                retryISEAttempts = decrementAndWait(retryISEAttempts);
                continue;
            }
        }
        if(retryISEAttempts > RETRY_ATTEMPTS_ZERO && retryThrottlingAttempts > RETRY_ATTEMPTS_ZERO) {
            return ProgressEvent.success(model, callbackContext);
        } else if (retryThrottlingAttempts == RETRY_ATTEMPTS_ZERO) {
            return ProgressEvent.defaultFailureHandler(ThrottlingException.builder().message(THROTTLE_MESSAGE).build(), HandlerErrorCode.Throttling);
        } else {
            return ProgressEvent.defaultFailureHandler(InternalServerException.builder().message(ISE_MESSAGE).build(), HandlerErrorCode.InternalFailure);
        }
    }