protected ProgressEvent handleRequest()

in aws-ecr-repository/src/main/java/software/amazon/ecr/repository/CreateHandler.java [22:81]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final ProxyClient<EcrClient> proxyClient,
        final Logger logger) {

        final ResourceModel model = request.getDesiredResourceState();
        final EcrClient client = proxyClient.client();

        // Auto-generate RepositoryName if not supplied
        if (StringUtils.isNullOrEmpty(model.getRepositoryName())) {
            model.setRepositoryName(
                    IdentifierUtils.generateResourceIdentifier(
                            request.getStackId(),
                            request.getLogicalResourceIdentifier(),
                            request.getClientRequestToken(),
                            MAX_REPO_NAME_LENGTH
                    ).toLowerCase()
            );
        }

        try {
            final CreateRepositoryResponse response = proxy.injectCredentialsAndInvokeV2(
                    Translator.createRepositoryRequest(
                            model,
                            request.getDesiredResourceTags()),
                    client::createRepository);
            model.setArn(response.repository().repositoryArn());
            model.setRepositoryUri(response.repository().repositoryUri());

            logger.log(String.format("%s [%s] Created Successfully", ResourceModel.TYPE_NAME, model.getRepositoryName()));
        } catch (RepositoryAlreadyExistsException e) {
            throw new ResourceAlreadyExistsException(ResourceModel.TYPE_NAME, model.getRepositoryName());
        } catch (KmsException e) {
            return ProgressEvent.<ResourceModel, CallbackContext>builder()
                    .resourceModel(model)
                    .status(OperationStatus.FAILED)
                    .errorCode(HandlerErrorCode.GeneralServiceException)
                    .message(e.getMessage())
                    .build();
        }

        try {
            if (model.getLifecyclePolicy() != null) proxy.injectCredentialsAndInvokeV2(Translator.putLifecyclePolicyRequest(model), client::putLifecyclePolicy);
            if (model.getRepositoryPolicyText() != null) proxy.injectCredentialsAndInvokeV2(Translator.setRepositoryPolicyRequest(model), client::setRepositoryPolicy);
        } catch (AwsServiceException e) {
            return ProgressEvent.<ResourceModel, CallbackContext>builder()
                .resourceModel(model)
                .status(OperationStatus.FAILED)
                .errorCode(HandlerErrorCode.GeneralServiceException)
                .message(e.getMessage())
                .build();
        }

        return ProgressEvent.<ResourceModel, CallbackContext>builder()
                .resourceModel(model)
                .status(OperationStatus.SUCCESS)
                .build();
    }