in aws-codeartifact-domain/src/main/java/software/amazon/codeartifact/domain/UpdateHandler.java [53:93]
private ProgressEvent<ResourceModel,CallbackContext> updateTags(
final AmazonWebServicesClientProxy proxy,
final ProxyClient<CodeartifactClient> proxyClient,
final ProgressEvent<ResourceModel, CallbackContext> progress,
String domainName,
final ResourceHandlerRequest<ResourceModel> request
) {
Map<String, String> desiredResourceTags = request.getDesiredResourceTags();
Map<String, String> previousResourceTags = request.getPreviousResourceTags();
final Set<Tag> desiredSdkTags = new HashSet<>(Translator.translateTagsToSdk(desiredResourceTags));
final Set<Tag> previousSdkTags = new HashSet<>(Translator.translateTagsToSdk(previousResourceTags));
final Set<Tag> setTagsToRemove = Sets.difference(previousSdkTags, desiredSdkTags);
final Set<Tag> setTagsToAdd = Sets.difference(desiredSdkTags, previousSdkTags);
final List<Tag> tagsToRemove = new ArrayList<>(setTagsToRemove);
final List<Tag> tagsToAdd = new ArrayList<>(setTagsToAdd);
try {
// Deletes tags only if tagsToRemove is not empty.
if (!CollectionUtils.isNullOrEmpty(tagsToRemove)) {
UntagResourceRequest untagRequest = Translator.untagResourceRequest(request, tagsToRemove, domainName);
proxy.injectCredentialsAndInvokeV2(untagRequest, proxyClient.client()::untagResource);
}
} catch (AwsServiceException e) {
Translator.throwCfnException(e, Constants.UNTAG_RESOURCE, domainName);
}
try {
// Adds tags only if tagsToAdd is not empty.
if (!CollectionUtils.isNullOrEmpty(tagsToAdd)) {
TagResourceRequest tagRequest = Translator.tagResourceRequest(request, tagsToAdd, domainName);
proxy.injectCredentialsAndInvokeV2(tagRequest, proxyClient.client()::tagResource);
}
} catch (AwsServiceException e) {
Translator.throwCfnException(e, Constants.TAG_RESOURCE, domainName);
}
return ProgressEvent.progress(progress.getResourceModel(), progress.getCallbackContext());
}