protected ProgressEvent handleRequest()

in aws-route53recoveryreadiness-recoverygroup/src/main/java/software/amazon/route53recoveryreadiness/recoverygroup/CreateHandler.java [27:71]


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

        this.logger = logger;

        // Make sure the user isn't trying to assign values to readOnly properties
        if (request.getDesiredResourceState().getRecoveryGroupArn() != null) {
            throw new CfnInvalidRequestException(request.getDesiredResourceState().toString());
        }

        return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
                // Check to see if RecoveryGroup already exists
                .then(progress -> {
                            final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("AWS-Route53RecoveryReadiness-RecoveryGroup::Create::PreExistenceCheck", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                                    .translateToServiceRequest(Translator::translateToReadRequest)
                                    .makeServiceCall(this::getRecoveryGroup)
                                    .progress(0);
                            // Set callback delay to 0 so that CloudFormation will execute the next step immediately.
                            progressEvent.setCallbackDelaySeconds(0);
                            return progress;
                        }
                )
                // Then make sure the cells exist
                .then(progress -> {
                    final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("AWS-Route53RecoveryReadiness-RecoveryGroup::Create::CheckForCellExistence", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                            .translateToServiceRequest(Translator::translateToReadRequest)
                            .makeServiceCall((awsRequest, client) -> validateCells(request.getDesiredResourceState(), proxyClient))
                            .progress(0);
                    progressEvent.setCallbackDelaySeconds(0);
                    return progressEvent;
                })
                .then(progress -> {
                    final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("AWS-Route53RecoveryReadiness-RecoveryGroup::Create", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                            .translateToServiceRequest(Translator::translateToCreateRequest)
                            .makeServiceCall(this::createRecoveryGroup)
                            .progress();
                    progressEvent.setCallbackDelaySeconds(0);
                    return progressEvent;
                })
                .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }