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