protected ProgressEvent handleRequest()

in aws-kendra-index/src/main/java/software/amazon/kendra/index/UpdateHandler.java [69:99]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final CallbackContext callbackContext,
            final ProxyClient<KendraClient> proxyClient,
            final Logger logger) {

        this.logger = logger;

        final ResourceModel model = request.getDesiredResourceState();

        verifyNonUpdatableFields(model, request.getPreviousResourceState());

        return ProgressEvent.progress(model, callbackContext)
                // First validate the resource actually exists per the contract requirements
                // https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-test-contract.html
                .then(progress ->
                        proxy.initiate("AWS-Kendra-Index::ValidateResourceExists", proxyClient, model, callbackContext)
                                .translateToServiceRequest(resourceModel -> Translator.translateToReadRequest(model))
                                .makeServiceCall(this::validateResourceExists)
                                .progress())
                .then(progress ->
                        proxy.initiate("AWS-Kendra-Index::Update", proxyClient, model, callbackContext)
                                .translateToServiceRequest(resourceModel -> translateToUpdateRequest(model, request.getPreviousResourceState()))
                                .backoffDelay(delay)
                                .makeServiceCall(this::updateIndex)
                                .stabilize(this::stabilize)
                                .progress())
                .then(progress -> updateTags(proxyClient, progress, request))
                .then(progress -> new ReadHandler(indexArnBuilder).handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }