package software.amazon.rds.optiongroup; import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.cloudformation.proxy.ProxyClient; import software.amazon.cloudformation.proxy.ResourceHandlerRequest; import software.amazon.rds.common.handler.Commons; import software.amazon.rds.common.handler.HandlerConfig; public class DeleteHandler extends BaseHandlerStd { public DeleteHandler() { this(HandlerConfig.builder() .backoff(BACKOFF_DELAY) .build()); } public DeleteHandler(final HandlerConfig config) { super(config); } protected ProgressEvent handleRequest( final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest request, final CallbackContext callbackContext, final ProxyClient proxyClient, final Logger logger) { return proxy.initiate("rds::delete-option-group", proxyClient, request.getDesiredResourceState(), callbackContext) .translateToServiceRequest(Translator::deleteOptionGroupRequest) .backoffDelay(config.getBackoff()) .makeServiceCall((deleteRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2( deleteRequest, proxyInvocation.client()::deleteOptionGroup )) .handleError((deleteRequest, exception, client, resourceModel, ctx) -> Commons.handleException( ProgressEvent.progress(resourceModel, ctx), exception, DEFAULT_OPTION_GROUP_ERROR_RULE_SET )) .done((deleteRequest, deleteResponse, proxyInvocation, model, context) -> ProgressEvent.defaultSuccessHandler(null)); } }