private ProgressEvent updateTags()

in aws-codeartifact-domain/src/main/java/software/amazon/codeartifact/domain/UpdateHandler.java [53:93]


    private ProgressEvent<ResourceModel,CallbackContext> updateTags(
        final AmazonWebServicesClientProxy proxy,
        final ProxyClient<CodeartifactClient> proxyClient,
        final ProgressEvent<ResourceModel, CallbackContext> progress,
        String domainName,
        final ResourceHandlerRequest<ResourceModel> request
    ) {
        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);

        try {
            // Deletes tags only if tagsToRemove is not empty.
            if (!CollectionUtils.isNullOrEmpty(tagsToRemove)) {
                UntagResourceRequest untagRequest = Translator.untagResourceRequest(request, tagsToRemove, domainName);
                proxy.injectCredentialsAndInvokeV2(untagRequest, proxyClient.client()::untagResource);
            }
        } catch (AwsServiceException e) {
            Translator.throwCfnException(e, Constants.UNTAG_RESOURCE, domainName);
        }

        try {
            // Adds tags only if tagsToAdd is not empty.
            if (!CollectionUtils.isNullOrEmpty(tagsToAdd)) {
                TagResourceRequest tagRequest = Translator.tagResourceRequest(request, tagsToAdd, domainName);
                proxy.injectCredentialsAndInvokeV2(tagRequest, proxyClient.client()::tagResource);
            }
        } catch (AwsServiceException e) {
            Translator.throwCfnException(e, Constants.TAG_RESOURCE, domainName);
        }

        return ProgressEvent.progress(progress.getResourceModel(), progress.getCallbackContext());
    }