in aws-panorama-applicationinstance/src/main/java/software/amazon/panorama/applicationinstance/UpdateHandler.java [59:103]
private ProgressEvent<ResourceModel, CallbackContext> updateTags(final ProxyClient<PanoramaClient> proxyClient,
final ProgressEvent<ResourceModel, CallbackContext> progress,
final ResourceHandlerRequest<ResourceModel> request) {
ResourceModel currResourceModel = request.getDesiredResourceState();
ResourceModel prevResourceModel = request.getPreviousResourceState();
CallbackContext callbackContext = progress.getCallbackContext();
Set<Tag> currentTags;
if (currResourceModel.getTags() != null) {
currentTags = currResourceModel.getTags().stream().collect(Collectors.toSet());
} else {
currentTags = new HashSet<>();
}
Set<Tag> existingTags = new HashSet<>();
if (prevResourceModel != null && prevResourceModel.getTags() != null) {
existingTags = prevResourceModel.getTags().stream().collect(Collectors.toSet());
}
final DescribeApplicationInstanceRequest describeApplicationInstanceRequest = Translator.translateToReadRequest(currResourceModel);
DescribeApplicationInstanceResponse describeApplicationInstanceResponse = proxyClient.injectCredentialsAndInvokeV2(describeApplicationInstanceRequest,
proxyClient.client()::describeApplicationInstance);
String arn = describeApplicationInstanceResponse.arn();
final Set<Tag> tagsToAdd = Sets.difference(currentTags, existingTags);
if (!tagsToAdd.isEmpty()) {
TagResourceRequest tagResourceRequest = Translator.translateToTagResourceRequest(tagsToAdd, arn);
try {
proxyClient.injectCredentialsAndInvokeV2(tagResourceRequest, proxyClient.client()::tagResource);
} catch (ValidationException e) {
throw new CfnInvalidRequestException(e.getMessage(), e);
}
}
final Set<Tag> tagsToRemove = Sets.difference(existingTags, currentTags);
if (!tagsToRemove.isEmpty()) {
UntagResourceRequest untagResourceRequest = Translator.translateToUntagResourceRequest(tagsToRemove, arn);
try {
proxyClient.injectCredentialsAndInvokeV2(untagResourceRequest, proxyClient.client()::untagResource);
} catch (ValidationException e) {
throw new CfnInvalidRequestException(e.getMessage(), e);
}
}
return ProgressEvent.progress(currResourceModel, callbackContext);
}