in aws-codeartifact-repository/src/main/java/software/amazon/codeartifact/repository/UpdateHandler.java [71:121]
private ProgressEvent<ResourceModel,CallbackContext> updateTags(
final AmazonWebServicesClientProxy proxy,
final ProxyClient<CodeartifactClient> proxyClient,
final ProgressEvent<ResourceModel, CallbackContext> progress,
ResourceModel desiredModel,
final ResourceHandlerRequest<ResourceModel> request
) {
String repositoryName = desiredModel.getRepositoryName();
String domainName = desiredModel.getDomainName();
// TODO(jonjara): move this to shared module
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);
String domainOwner = desiredModel.getDomainOwner() == null ?
request.getAwsAccountId() :
desiredModel.getDomainOwner();
try {
// Deletes tags only if tagsToRemove is not empty.
if (!CollectionUtils.isNullOrEmpty(tagsToRemove)) {
UntagResourceRequest untagRequest
= Translator.untagResourceRequest(request, tagsToRemove, repositoryName, domainName, domainOwner);
proxy.injectCredentialsAndInvokeV2(untagRequest, proxyClient.client()::untagResource);
}
} catch (AwsServiceException e) {
Translator.throwCfnException(e, Constants.UNTAG_RESOURCE, repositoryName);
}
try {
// Adds tags only if tagsToAdd is not empty.
if (!CollectionUtils.isNullOrEmpty(tagsToAdd)) {
TagResourceRequest tagRequest
= Translator.tagResourceRequest(request, tagsToAdd, repositoryName, domainName, domainOwner);
proxy.injectCredentialsAndInvokeV2(tagRequest, proxyClient.client()::tagResource);
}
} catch (AwsServiceException e) {
Translator.throwCfnException(e, Constants.TAG_RESOURCE, repositoryName);
}
return ProgressEvent.progress(progress.getResourceModel(), progress.getCallbackContext());
}