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