in aws-sns-subscription/src/main/java/software/amazon/sns/subscription/DeleteHandler.java [12:41]
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();
return ProgressEvent.progress(model, callbackContext)
.then(progress -> checkTopicExists(proxy, proxyClient, model, progress, logger))
.then(progress -> checkSubscriptionExists(proxy, proxyClient, model, progress, logger))
.then(process -> proxy.initiate("AWS-SNS-Subscription::Check-Subscription-Not-Pending", proxyClient, model, callbackContext)
.translateToServiceRequest(Translator::translateToReadRequest)
.makeServiceCall((getSubscriptionAttributesRequest, client) -> {
if (!checkSubscriptionNotPending(model.getSubscriptionArn(), proxyClient, logger))
throw new CfnInvalidRequestException(new Exception(String.format("subscription %s cannot be deleted if pending confirmation", model.getSubscriptionArn())));
return true;
})
.progress())
.then(process -> proxy.initiate("AWS-SNS-Subscription::Unsubscribe", proxyClient, model, callbackContext)
.translateToServiceRequest(Translator::translateToDeleteRequest)
.makeServiceCall(this::deleteSubscription)
.done(awsResponse -> ProgressEvent.<ResourceModel, CallbackContext>builder()
.status(OperationStatus.SUCCESS)
.build()));
}