public static ResourceModel buildModel()

in aws-ecr-repository/src/main/java/software/amazon/ecr/repository/ReadHandler.java [68:138]


    public static ResourceModel buildModel(final AmazonWebServicesClientProxy proxy, final ProxyClient<EcrClient> proxyClient, final Repository repo, final Logger logger) {
        final String arn = repo.repositoryArn();
        final String repositoryUri = repo.repositoryUri();
        final String repositoryName = repo.repositoryName();
        final String registryId = repo.registryId();
        final EcrClient client = proxyClient.client();

        Map<String, Object> repositoryPolicyText = null;
        LifecyclePolicy lifecyclePolicy = null;
        Set<Tag> tags = null;

        try {
            final GetRepositoryPolicyResponse getRepositoryPolicyResponse = proxy.injectCredentialsAndInvokeV2(Translator.getRepositoryPolicyRequest(repositoryName, registryId), client::getRepositoryPolicy);
            repositoryPolicyText = deserializePolicyText(getRepositoryPolicyResponse.policyText());
        } catch (RepositoryPolicyNotFoundException e) {
            // RepositoryPolicyText is not required so it might not exist
        } catch (EcrException e) {
            // This is a short term fix for GetAtt backwards compatibility
            if (!e.awsErrorDetails().errorCode().equals(ACCESS_DENIED_ERROR_CODE)) {
                throw new CfnGeneralServiceException(e.getMessage(), e);
            }
            logger.log(String.format("AccessDenied error: %s for Repository: %s", e.getMessage(), repo.toString()));
        }

        try {
            final GetLifecyclePolicyResponse getLifecyclePolicyResponse = proxy.injectCredentialsAndInvokeV2(Translator.getLifecyclePolicyRequest(repositoryName, registryId), client::getLifecyclePolicy);
            lifecyclePolicy = LifecyclePolicy.builder()
                    .registryId(getLifecyclePolicyResponse.registryId())
                    .lifecyclePolicyText(getLifecyclePolicyResponse.lifecyclePolicyText())
                    .build();
        } catch (LifecyclePolicyNotFoundException e) {
            // LifecyclePolicy is not required so it might not exist
        } catch (EcrException e) {
            if (!e.awsErrorDetails().errorCode().equals(ACCESS_DENIED_ERROR_CODE)) {
                throw new CfnGeneralServiceException(e.getMessage(), e);
            }
            logger.log(String.format("AccessDenied error: %s for Repository: %s", e.getMessage(), repo.toString()));
        }

        try {
            final ListTagsForResourceResponse listTagsResponse = proxy.injectCredentialsAndInvokeV2(Translator.listTagsForResourceRequest(arn), client::listTagsForResource);
            tags = Translator.translateTagsFromSdk(listTagsResponse.tags());
        } catch (EcrException e) {
            if (!e.awsErrorDetails().errorCode().equals(ACCESS_DENIED_ERROR_CODE)) {
                throw new CfnGeneralServiceException(e.getMessage(), e);
            }
            logger.log(String.format("AccessDenied error: %s for Repository: %s", e.getMessage(), repo.toString()));
        }

        EncryptionConfiguration encryptionConfiguration = null;
        if (repo.encryptionConfiguration() != null) {
            encryptionConfiguration = EncryptionConfiguration.builder()
                    .encryptionType(repo.encryptionConfiguration().encryptionTypeAsString())
                    .build();
            if (repo.encryptionConfiguration().kmsKey() != null) {
                encryptionConfiguration.setKmsKey(repo.encryptionConfiguration().kmsKey());
            }
        }

        return ResourceModel.builder()
                .repositoryName(repositoryName)
                .lifecyclePolicy(lifecyclePolicy)
                .repositoryPolicyText(repositoryPolicyText)
                .tags(tags)
                .arn(arn)
                .repositoryUri(repositoryUri)
                .imageScanningConfiguration(ImageScanningConfiguration.builder().scanOnPush(repo.imageScanningConfiguration().scanOnPush()).build())
                .imageTagMutability(repo.imageTagMutability().toString())
                .encryptionConfiguration(encryptionConfiguration)
                .build();
    }