protected ProgressEvent handleRequest()

in aws-ssm-parameter/src/main/java/com/amazonaws/ssm/parameter/CreateHandler.java [34:72]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final CallbackContext callbackContext,
            final ProxyClient<SsmClient> proxyClient,
            final Logger logger) {
        this.logger = logger;
        final ResourceModel model = request.getDesiredResourceState();

        // Set model primary ID if absent
        if(model.getName() == null) {
            model.setName(generateParameterName(
                    request.getLogicalResourceIdentifier(),
                    request.getClientRequestToken()
            ));
        }

        if(model.getType().equalsIgnoreCase(ParameterType.SECURE_STRING.toString())) {
            String message = String.format("SSM Parameters of type %s cannot be created using CloudFormation", ParameterType.SECURE_STRING);
            return ProgressEvent.defaultFailureHandler(new TerminalException(message),
                    HandlerErrorCode.InvalidRequest);
        }

        Map<String, String> consolidatedTagList = new HashMap<>();
        if (request.getDesiredResourceTags() != null) {
            consolidatedTagList.putAll(request.getDesiredResourceTags());
        }
        if (request.getSystemTags() != null) {
            consolidatedTagList.putAll(request.getSystemTags());
        }

        return proxy.initiate("aws-ssm-parameter::resource-create", proxyClient, model, callbackContext)
               .translateToServiceRequest((resourceModel) -> Translator.createPutParameterRequest(resourceModel, consolidatedTagList))
               .backoffDelay(getBackOffDelay(model))
               .makeServiceCall(this::createResource)
               .stabilize(BaseHandlerStd::stabilize)
               .progress()
               .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }