public ProgressEvent handleRequest()

in aws-logs-loggroup/src/main/java/software/amazon/logs/loggroup/ReadHandler.java [18:73]


    public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final Logger logger) {

        final ResourceModel model = request.getDesiredResourceState();

        if (model == null || model.getLogGroupName() == null) {
            throwNotFoundException(model);
        }

        DescribeLogGroupsResponse response = null;
        LogGroup matchingLogGroup = null;
        String nextToken = null;
        // Keep paginating until requested log group is found
        do {
            try {
                response = proxy.injectCredentialsAndInvokeV2(Translator.translateToReadRequest(model, nextToken),
                        ClientBuilder.getClient()::describeLogGroups);
            } catch (final ResourceNotFoundException e) {
                throwNotFoundException(model);
            }

            matchingLogGroup = Translator.getMatchingLogGroup(response, model.getLogGroupName());

            // If log group found, break out of loop
            if (matchingLogGroup != null) {
                break;
            }

            nextToken = response.nextToken();
        } while (nextToken != null);

        // If paginated all log groups, still cannot find it
        if (matchingLogGroup == null) {
            throwNotFoundException(model);
        }

        ListTagsLogGroupResponse tagsResponse = null;
        try {
            tagsResponse = proxy.injectCredentialsAndInvokeV2(Translator.translateToListTagsLogGroupRequest(model.getLogGroupName()),
                    ClientBuilder.getClient()::listTagsLogGroup);
        } catch (final CloudWatchLogsException e) {
            if (Translator.ACCESS_DENIED_ERROR_CODE.equals(e.awsErrorDetails().errorCode())) {
                // fail silently, if there is no permission to list tags
                logger.log(e.getMessage());
            } else {
                throw e;
            }
        }

        ResourceModel modelFromReadResult = Translator.translateForReadResponse(matchingLogGroup, tagsResponse);

        return ProgressEvent.defaultSuccessHandler(modelFromReadResult);
    }