public ProgressEvent handleRequest()

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