in datacatalog/src/main/java/software/amazon/athena/datacatalog/ReadHandler.java [25:66]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
ProxyClient<AthenaClient> athenaProxyClient,
final Logger logger) {
return proxy.initiate("athena::getDataCatalog", athenaProxyClient, request.getDesiredResourceState(), callbackContext)
.translateToServiceRequest(Translator::getDataCatalogRequest)
.makeServiceCall(this::getDataCatalog)
.done((getDataCatalogRequest, getDataCatalogResponse, proxyInvocation, resourceModel, context) -> {
// get tags
String arn = getDatacatalogArn(request, resourceModel.getName());
ListTagsForResourceRequest listTagsRequest = ListTagsForResourceRequest.builder()
.resourceARN(arn)
.maxResults(100)
.build();
String nextToken;
List<software.amazon.awssdk.services.athena.model.Tag> tags = Lists.newArrayList();
do {
ListTagsForResourceResponse listTagsResponse = athenaProxyClient
.injectCredentialsAndInvokeV2(
listTagsRequest,
athenaProxyClient.client()::listTagsForResource);
tags.addAll(listTagsResponse.tags());
nextToken = listTagsResponse.nextToken();
if (nextToken != null) {
listTagsRequest = listTagsRequest.toBuilder().nextToken(nextToken).build();
}
} while (nextToken != null);
DataCatalog d = getDataCatalogResponse.dataCatalog();
return ProgressEvent.defaultSuccessHandler(ResourceModel.builder()
.name(d.name())
.description(d.description())
.type(d.type().toString())
.parameters(d.parameters())
.tags(convertToResourceModelTags(tags))
.build());
});
}