in aws-ecr-repository/src/main/java/software/amazon/ecr/repository/UpdateHandler.java [114:128]
private void handleTagging(final Map<String, String> tags, final String arn) {
final Set<Tag> newTags = tags == null ? Collections.emptySet() : new HashSet<>(Translator.translateTagsToSdk(tags));
final Set<Tag> existingTags = new HashSet<>(proxy.injectCredentialsAndInvokeV2(Translator.listTagsForResourceRequest(arn), client::listTagsForResource).tags());
final List<String> tagsToRemove = existingTags.stream()
.filter(tag -> !newTags.contains(tag))
.map(tag -> tag.key())
.collect(Collectors.toList());
final List<Tag> tagsToAdd = newTags.stream()
.filter(tag -> !existingTags.contains(tag))
.collect(Collectors.toList());
if (!CollectionUtils.isNullOrEmpty(tagsToRemove)) proxy.injectCredentialsAndInvokeV2(Translator.untagResourceRequest(tagsToRemove, arn), client::untagResource);
if (!CollectionUtils.isNullOrEmpty(tagsToAdd)) proxy.injectCredentialsAndInvokeV2(Translator.tagResourceRequest(tagsToAdd, arn), client::tagResource);
}