protected ProgressEvent handleRequest()

in aws-sns-topic/src/main/java/software/amazon/sns/topic/CreateHandler.java [15:46]


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

        this.logger = logger;

        final ResourceModel model = request.getDesiredResourceState();
        final Map<String, String> desiredResourceTags = request.getDesiredResourceTags();

        if (StringUtils.isNotEmpty(model.getTopicArn())) {
            return ProgressEvent.failed(model, callbackContext, HandlerErrorCode.InvalidRequest, "TopicArn is a read-only property.");
        }

        if (StringUtils.isBlank(model.getTopicName())) {
            String randomTopicName = IdentifierUtils.generateResourceIdentifier(request.getLogicalResourceIdentifier(), request.getClientRequestToken(), TOPIC_NAME_MAX_LENGTH);
            if (Boolean.TRUE.equals(model.getFifoTopic())) {
                randomTopicName = IdentifierUtils.generateResourceIdentifier(request.getLogicalResourceIdentifier(), request.getClientRequestToken(), TOPIC_NAME_MAX_LENGTH - FIFO_TOPIC_EXTENSION.length());
                randomTopicName += FIFO_TOPIC_EXTENSION;
            }
            model.setTopicName(randomTopicName.toLowerCase());
        }

        return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
                .then(progress -> checkForPreCreateResourceExistence(request, proxyClient, progress))
                .then(progress -> createTopicWithTags(proxy, model, desiredResourceTags, callbackContext, proxyClient))
                .then(progress -> retryCreateTopicWithoutTags(proxy, model, callbackContext, proxyClient))
                .then(progress -> addSubscription(proxy, proxyClient, progress, model.getSubscription(), logger))
                .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }