public ProgressEvent handleRequest()

in aws-iot-jobtemplate/src/main/java/software/amazon/iot/jobtemplate/CreateHandler.java [51:114]


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

        final ResourceModel model = request.getDesiredResourceState();

        AbortConfig abortConfig = getAbortConfig(model);
        JobExecutionsRolloutConfig rolloutConfig = getJobExecutionsRolloutConfig(model);
        PresignedUrlConfig presignedUrlConfig = getPresignedUrlConfig(model);
        TimeoutConfig timeoutConfig = getTimeoutConfig(model);
        List<Tag> tags = getTags(model);


        final CreateJobTemplateRequest createJobTemplateRequest = CreateJobTemplateRequest.builder()
                .jobTemplateId(model.getJobTemplateId())
                .abortConfig(abortConfig)
                .description(model.getDescription())
                .document(model.getDocument())
                .documentSource(model.getDocumentSource())
                .jobArn(model.getJobArn())
                .jobExecutionsRolloutConfig(rolloutConfig)
                .presignedUrlConfig(presignedUrlConfig)
                .timeoutConfig(timeoutConfig)
                .tags(tags)
                .build();

        try {
            CreateJobTemplateResponse response = proxy.injectCredentialsAndInvokeV2(createJobTemplateRequest, iotClient::createJobTemplate);
            logger.log(String.format("%s [%s] created successfully", ResourceModel.TYPE_NAME, model.getJobTemplateId()));

            return ProgressEvent.defaultSuccessHandler(ResourceModel.builder()
                    .arn(response.jobTemplateArn())
                    .jobTemplateId(response.jobTemplateId())
                    .abortConfig(model.getAbortConfig())
                    .description(model.getDescription())
                    .document(model.getDocument())
                    .documentSource(model.getDocumentSource())
                    .jobExecutionsRolloutConfig(model.getJobExecutionsRolloutConfig())
                    .presignedUrlConfig(model.getPresignedUrlConfig())
                    .timeoutConfig(model.getTimeoutConfig())
                    .build());

        } catch (final ConflictException e){
            throw new CfnAlreadyExistsException(ResourceModel.TYPE_NAME, model.getJobTemplateId());
        } catch (final ResourceNotFoundException e) {
            throw new CfnNotFoundException(ResourceModel.TYPE_NAME, model.getJobArn());
        } catch (final InvalidRequestException e) {
            throw new CfnInvalidRequestException(e.getMessage(), e);
        } catch (final LimitExceededException e) {
            throw new CfnServiceLimitExceededException(ResourceModel.TYPE_NAME, e.getMessage());
        } catch (final InternalFailureException e) {
            throw new CfnServiceInternalErrorException(OPERATION, e);
        } catch (final ThrottlingException e) {
            throw new CfnThrottlingException(OPERATION, e);
        } catch (final ServiceUnavailableException e) {
            throw new CfnGeneralServiceException(OPERATION, e);
        } catch (final UnauthorizedException e) {
            throw new CfnAccessDeniedException(OPERATION, e);
        } catch (final Exception e) {
            throw new CfnInternalFailureException(e);
        }
    }