private ProgressEvent updateTags()

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());
    }