in aws-ssmincidents-responseplan/src/main/java/software/amazon/ssmincidents/responseplan/UpdateHandler.java [105:128]
private ProgressEvent<ResourceModel, CallbackContext> updateTags(ProxyClient<SsmIncidentsClient> proxyClient, ProgressEvent<ResourceModel, CallbackContext> progress, ResourceHandlerRequest<ResourceModel> request) {
String responsePlanArn = request.getDesiredResourceState().getArn();
Set<Tag> desiredTags = Optional.ofNullable(request.getDesiredResourceState().getTags()).orElse(new HashSet<>());
Set<Tag> previousTags = Optional.ofNullable(request.getPreviousResourceState()).map(x -> x.getTags()).orElse(new HashSet<>());
Map<String, String> tagsToAdd = Translator.toApiTag(Sets.difference(desiredTags, previousTags));
if (!tagsToAdd.isEmpty()) {
try {
proxyClient.injectCredentialsAndInvokeV2(TagResourceRequest.builder().resourceArn(responsePlanArn).tags(tagsToAdd).build(), proxyClient.client()::tagResource);
} catch (ValidationException e) {
throw Translator.handleException(e);
}
}
Map<String, String> tagsToRemove = Translator.toApiTag(Sets.difference(previousTags, desiredTags));
if (!tagsToRemove.isEmpty()) {
try {
proxyClient.injectCredentialsAndInvokeV2(UntagResourceRequest.builder().resourceArn(responsePlanArn).tagKeys(tagsToRemove.keySet()).build(), proxyClient.client()::untagResource);
} catch (ValidationException e) {
throw Translator.handleException(e);
}
}
return ProgressEvent.progress(request.getDesiredResourceState(), progress.getCallbackContext());
}