in aws-iotfleethub-application/src/main/java/software/amazon/iotfleethub/application/ListHandler.java [25:63]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
ListApplicationsRequest listRequest = Translator.translateToListRequest(request);
ListApplicationsResponse listResponse;
try {
listResponse = proxy.injectCredentialsAndInvokeV2(listRequest, iotFleetHubClient::listApplications);
} catch (RuntimeException e) {
HandlerErrorCode err = Translator.translateExceptionToErrorCode(e, logger);
return ProgressEvent.failed(request.getDesiredResourceState(), callbackContext, err, e.getMessage());
}
String nextToken = listResponse.nextToken();
// Date attributes need to be converted to int for CFN Model. Dates are in epoch seconds and within int range.
List<ResourceModel> models = listResponse.applicationSummaries().stream()
.map(applicationSummary -> ResourceModel.builder()
.applicationId(applicationSummary.applicationId())
.applicationName(applicationSummary.applicationName())
.applicationDescription(applicationSummary.applicationDescription())
.applicationUrl(applicationSummary.applicationUrl())
.applicationCreationDate(applicationSummary.applicationCreationDate().intValue())
.applicationLastUpdateDate(applicationSummary.applicationLastUpdateDate().intValue())
.applicationState(applicationSummary.applicationStateAsString())
.build())
.collect(Collectors.toList());
logger.log(String.format("Listing Applications for Account %s", request.getAwsAccountId()));
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModels(models)
.nextToken(nextToken)
.status(OperationStatus.SUCCESS)
.build();
}