private ProgressEvent deleteDeliveryStreamAndUpdateProgress()

in deliverystream/src/main/java/com/amazonaws/kinesisfirehose/deliverystream/DeleteHandler.java [50:85]


    private ProgressEvent<ResourceModel, CallbackContext> deleteDeliveryStreamAndUpdateProgress(final FirehoseAPIWrapper firehoseAPIWrapper,
                                                                                                final ResourceModel model,
                                                                                                final CallbackContext callbackContext,
                                                                                                final Logger logger) {
        val deliveryStreamStatus = callbackContext.getDeliveryStreamStatus();
        logger.log("deliveryStreamStatus = " + deliveryStreamStatus);

        if (callbackContext.getStabilizationRetriesRemaining() == 0) {
            throw new RuntimeException(TIMED_OUT_MESSAGE);
        }

        int stabilizationRetriesRemaining = NUMBER_OF_STATUS_POLL_RETRIES;
        final boolean allowForceDelete = true;
        if (deliveryStreamStatus == null) {
            try {
                firehoseAPIWrapper.deleteDeliveryStream(model.getDeliveryStreamName(), allowForceDelete);
            } catch (final Exception e) {
                logger.log(String.format("deleteDeliveryStream failed with exception %s", e.getMessage()));
                return ProgressEvent.defaultFailureHandler(e, ExceptionMapper.mapToHandlerErrorCode(e, HandlerType.DELETE));
            }
        } else {
            stabilizationRetriesRemaining = callbackContext.getStabilizationRetriesRemaining() - 1;
        }

        val currentDeliveryStreamStatus = getDeliveryStreamStatus(firehoseAPIWrapper, model);
        if (currentDeliveryStreamStatus.equals(DELIVERY_STREAM_DELETED)) {
            return ProgressEvent.defaultSuccessHandler(null);
        } else {
            return ProgressEvent.defaultInProgressHandler(CallbackContext.builder()
                            .deliveryStreamStatus(currentDeliveryStreamStatus)
                            .stabilizationRetriesRemaining(stabilizationRetriesRemaining)
                            .build(),
                    (int) Duration.ofSeconds(CALLBACK_DELAY_IN_SECONDS).getSeconds(),
                    model);
        }
    }