public ProgressEvent retrieveResourceTags()

in common/src/main/java/software/amazon/kms/common/KeyHandlerHelper.java [218:252]


    public ProgressEvent<M, C> retrieveResourceTags(
        final AmazonWebServicesClientProxy proxy,
        final ProxyClient<KmsClient> proxyClient,
        final M model,
        final C callbackContext,
        final boolean updateResourceModel
    ) {
        ProgressEvent<M, C> progress;
        do {
            // Pagination to make sure that all the tags are retrieved
            progress = proxy
                .initiate("kms::list-tag-key:" + callbackContext.getTagMarker(), proxyClient,
                    model, callbackContext)
                .translateToServiceRequest(m -> keyTranslator
                    .listResourceTagsRequest(m, callbackContext.getTagMarker()))
                .makeServiceCall(keyApiHelper::listResourceTags)
                .done(
                    (listResourceTagsRequest, listResourceTagsResponse, proxyInvocation,
                     resourceModel, context) -> {
                        final Set<Tag> existingTags =
                            Optional.ofNullable(context.getExistingTags())
                                .orElse(new HashSet<>());
                        existingTags.addAll(new HashSet<>(listResourceTagsResponse.tags()));
                        context.setExistingTags(existingTags);
                        context.setTagMarker(listResourceTagsResponse.nextMarker());

                        if (updateResourceModel) {
                            keyTranslator.setTags(model, callbackContext.getExistingTags());
                        }

                        return ProgressEvent.progress(resourceModel, context);
                    });
        } while (callbackContext.getTagMarker() != null);
        return progress;
    }