protected ProgressEvent handleRequest()

in aws-route53recoverycontrol-routingcontrol/src/main/java/software/amazon/route53recoverycontrol/routingcontrol/UpdateHandler.java [22:50]


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

        this.logger = logger;

        final ResourceModel currentModel = request.getDesiredResourceState();
        final ResourceModel previousModel = request.getPreviousResourceState();

        if (currentModel.getRoutingControlArn() == null ) { throw new CfnNotFoundException(ResourceModel.TYPE_NAME, currentModel.getControlPanelArn()); }
        // Ensure not updating ReadOnly properties
        if (previousModel != null) {
            if (!currentModel.getRoutingControlArn().equals(previousModel.getRoutingControlArn())) {
                throw new CfnNotUpdatableException(ResourceModel.TYPE_NAME, request.getDesiredResourceState().getRoutingControlArn());
            }
        }

        return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
            .then(progress ->
                proxy.initiate("AWS-Route53RecoveryControl-RoutingControl::Update::first", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                    .translateToServiceRequest(Translator::translateToUpdateRequest)
                    .makeServiceCall(this::updateRoutingControl)
                    .stabilize((awsRequest, awsResponse, client, model, context) -> isStabilized(awsResponse, client, model))
                    .progress())
            .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }