protected ProgressEvent handleRequest()

in aws-codeartifact-repository/src/main/java/software/amazon/codeartifact/repository/UpdateHandler.java [33:69]


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

        this.logger = logger;

        final ResourceModel desiredModel = request.getDesiredResourceState();
        final ResourceModel prevModel = request.getPreviousResourceState();

        if (ComparisonUtils.willUpdateCreateOnlyProperty(desiredModel, prevModel)) {
            // CreateOnly fields cannot be updated
            throw new CfnNotUpdatableException(ResourceModel.TYPE_NAME, desiredModel.getArn());
        }

        ProgressEvent<ResourceModel, CallbackContext> updateRepositoryConnectionsEvent;
        if (ComparisonUtils.willAddUpstreams(desiredModel, prevModel)) {
            // If adding upstreams, first remove externalConnections in updateExternalConnections(), then add upstreams
            // to avoid adding an upstream before removing an external connection
            updateRepositoryConnectionsEvent = ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
                .then(progress -> updateExternalConnections(request, callbackContext, proxyClient, logger))
                .then(progress -> updateRepository(proxy, desiredModel, prevModel, progress, callbackContext, proxyClient, logger));
        } else {
            // If removing upstreams, do it in updateRepository() before adding external connections in
            // updateExternalConnections(). This is in the case that we are replacing upstreams with external
            // connections to avoid adding an external connection before the upstream is removed
            updateRepositoryConnectionsEvent =  ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
                .then(progress -> updateRepository(proxy, desiredModel, prevModel, progress, callbackContext, proxyClient, logger))
                .then(progress -> updateExternalConnections(request, callbackContext, proxyClient, logger));
        }
        return updateRepositoryConnectionsEvent
            .then(progress -> updateRepositoryPermissionsPolicy(proxy, progress, callbackContext, request, proxyClient, logger))
            .then(progress -> updateTags(proxy, proxyClient, progress, desiredModel, request))
            .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }