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);
}
}
}