public ProgressEvent handleRequest()

in aws-cloudformation-resourcedefaultversion/src/main/java/software/amazon/cloudformation/resourcedefaultversion/CreateHandler.java [18:52]


    public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final CallbackContext callbackContext,
            final ProxyClient<CloudFormationClient> proxyClient,
            final Logger logger) {
        final ResourceModel resourceModel = request.getDesiredResourceState();
        if (StringUtils.isNullOrEmpty(callbackContext.getArn())) {
            String generatedArn = createArn(request);
            callbackContext.setArn(generatedArn);
            resourceModel.setArn(generatedArn);
            return ProgressEvent.progress(resourceModel, callbackContext);
        }
        return ProgressEvent.progress(resourceModel, callbackContext)
                .then(progress -> {
                    final ResourceModel model = progress.getResourceModel();
                    logger.log(String.format("Creating [TypeVersionArn: %s | Type: %s | Version: %s]",
                            model.getTypeVersionArn(), model.getTypeName(), model.getVersionId()));
                    return proxy.initiate("resourceDefaultVersion::Create", proxyClient, model, progress.getCallbackContext())
                            .translateToServiceRequest(Translator::translateToUpdateRequest)
                            .makeServiceCall((setTypeDefaultVersionRequest, client) -> proxyClient.injectCredentialsAndInvokeV2(setTypeDefaultVersionRequest, proxyClient.client()::setTypeDefaultVersion))
                            .handleError((setTypeDefaultVersionRequest, exception, clientProxy, resourcemodel, context) -> {
                                if(exception instanceof TypeNotFoundException) {
                                    logger.log(String.format("Failed to set the default version of the resource [%s] as it cannot be found %s", model.getArn(), Arrays.toString(exception.getStackTrace())));
                                    throw new CfnNotFoundException(exception);
                                }
                                else {
                                    logger.log(String.format("Failed to set the default version of the resource [%s] and the exception is [%s]", model.getArn(), Arrays.toString(exception.getStackTrace())));
                                    throw exception;
                                }
                            })
                            .progress();
                })
                .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }