public ProgressEvent handleRequest()

in statemachine/src/main/java/com/amazonaws/stepfunctions/cloudformation/statemachine/CreateHandler.java [23:68]


    public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final CallbackContext callbackContext,
            final Logger logger) {

        logger.log("INFO StateMachine CreateHandler with clientRequestToken: " + request.getClientRequestToken());

        final ResourceModel model = request.getDesiredResourceState();

        MetricsRecorder metricsRecorder = new MetricsRecorder(HandlerOperationType.CREATE);
        metricsRecorder.setMetricsFromResourceModel(model);

        try {
            AWSStepFunctions sfnClient = ClientBuilder.getClient();

            List<Tag> tags = TaggingHelper.consolidateTags(request);

            processStateMachineName(request, model);
            validateDefinitionCount(model);
            processDefinition(proxy, model, metricsRecorder);

            CreateStateMachineRequest createStateMachineRequest = buildCreateStateMachineRequestFromModel(model, tags);

            CreateStateMachineResult createStateMachineResult = proxy.injectCredentialsAndInvoke(createStateMachineRequest, sfnClient::createStateMachine);

            updateModelFromResult(model, createStateMachineResult);
            // The model's name is only required if the handler operation is successful.
            model.setName(model.getStateMachineName());

            ProgressEvent<ResourceModel, CallbackContext> progressEvent = ProgressEvent.<ResourceModel, CallbackContext>builder()
                    .resourceModel(model)
                    .status(OperationStatus.SUCCESS)
                    .build();

            metricsRecorder.setOperationSuccessful(true);

            return progressEvent;
        } catch (Exception e) {
            logger.log("ERROR Creating StateMachine, caused by " + e.toString());

            return handleDefaultError(request, e, metricsRecorder);
        } finally {
            logger.log(metricsRecorder.generateMetricsString());
        }
    }