in aws-iotfleethub-application/src/main/java/software/amazon/iotfleethub/application/CreateHandler.java [32:73]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
ResourceModel model = request.getDesiredResourceState();
if (StringUtils.isEmpty(request.getClientRequestToken())) {
logger.log(String.format("ClientToken is required, but a client request token was not provided."));
return ProgressEvent.failed(model, callbackContext, HandlerErrorCode.InvalidRequest, "ClientToken was not provided.");
}
if (Translator.isReadOnlyFieldSet(logger, "ApplicationArn", model.getApplicationArn())
|| Translator.isReadOnlyFieldSet(logger, "ApplicationId", model.getApplicationId())
|| Translator.isReadOnlyFieldSet(logger, "ApplicationUrl", model.getApplicationUrl())
|| Translator.isReadOnlyFieldSet(logger, "ApplicationState", model.getApplicationState())
|| Translator.isReadOnlyFieldSet(logger, "SsoClientId", model.getSsoClientId())
|| Translator.isReadOnlyFieldSet(logger, "ErrorMessage", model.getErrorMessage())) {
return ProgressEvent.failed(model, callbackContext, HandlerErrorCode.InvalidRequest,
"Can only set ApplicationName, RoleArn, ApplicationDescription (optional), and Tags (optional) in CreateApplication call.");
}
CreateApplicationRequest createRequest = Translator.translateToCreateRequest(request, model, logger);
CreateApplicationResponse createResponse;
try {
createResponse = proxy.injectCredentialsAndInvokeV2(createRequest, iotFleetHubClient::createApplication);
} catch (RuntimeException e) {
HandlerErrorCode err = Translator.translateExceptionToErrorCode(e, logger);
return ProgressEvent.failed(model, callbackContext, err, e.getMessage());
}
model.setApplicationArn(createResponse.applicationArn());
model.setApplicationId(createResponse.applicationId());
logger.log(String.format("Created Application with Arn %s and Id %s",
createResponse.applicationArn(), createResponse.applicationId()));
return ProgressEvent.defaultSuccessHandler(model);
}