public ProgressEvent execute()

in aws-applicationinsights-application/src/main/java/software/amazon/applicationinsights/application/StepWorkflow/BaseStepWorkflow.java [41:102]


    public ProgressEvent<ResourceModel, CallbackContext> execute() {
        Step currentStep = Step.fromStepName(callbackContext.getCurrentStep());
        String processingItem = callbackContext.getProcessingItem();
        if (processingItem == null) {
            // pick next item to process
            String nextItemToProcess = pickNextItemToProcess(callbackContext);
            if (nextItemToProcess == null) {
                // current step finishes, start next step
                return nextStepInitProgressEvent;
            } else {

                try {
                    startProcessNextItem(nextItemToProcess, model, proxy, applicationInsightsClient, logger);
                } catch (Exception ex) {
                    logger.log(String.format("startProcessNextItem failed with exception %s", ex.getMessage()));
                    return ProgressEvent.defaultFailureHandler(ex, ExceptionMapper.mapToHandlerErrorCode(ex));
                }

                List<String> unProcessedItems = callbackContext.getUnprocessedItems();
                unProcessedItems.remove(nextItemToProcess);
                return ProgressEvent.defaultInProgressHandler(
                        CallbackContext.builder()
                                .currentStep(currentStep.name())
                                .stabilizationRetriesRemaining(callbackContext.getStabilizationRetriesRemaining())
                                .processingItem(nextItemToProcess)
                                .unprocessedItems(unProcessedItems)
                                .build(),
                        currentStep.getCallBackWaitSeconds(),
                        model);
            }
        } else {
            boolean currentItemProcessFinished;
            try {
                currentItemProcessFinished = isCurrentItemProcessFinished(processingItem, model, proxy, applicationInsightsClient, logger);
            } catch (Exception ex) {
                logger.log(String.format("isCurrentItemProcessFinished failed with exception %s", ex.getMessage()));
                return ProgressEvent.defaultFailureHandler(ex, ExceptionMapper.mapToHandlerErrorCode(ex));
            }

            if (currentItemProcessFinished) {
                return ProgressEvent.defaultInProgressHandler(
                        CallbackContext.builder()
                                .currentStep(currentStep.name())
                                .stabilizationRetriesRemaining(callbackContext.getStabilizationRetriesRemaining())
                                .processingItem(null)
                                .unprocessedItems(callbackContext.getUnprocessedItems())
                                .build(),
                        TRANSITION_CALLBACK_DELAY_SECONDS,
                        model);
            } else {
                return ProgressEvent.defaultInProgressHandler(
                        CallbackContext.builder()
                                .currentStep(currentStep.name())
                                .stabilizationRetriesRemaining(callbackContext.getStabilizationRetriesRemaining() - 1)
                                .processingItem(processingItem)
                                .unprocessedItems(callbackContext.getUnprocessedItems())
                                .build(),
                        currentStep.getCallBackWaitSeconds(),
                        model);
            }
        }
    }