public ProgressEvent handleRequest()

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