All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.ecr.model.CreateRepositoryCreationTemplateRequest Maven / Gradle / Ivy

Go to download

The AWS Java SDK for the Amazon EC2 Container Registry holds the client classes that are used for communicating with the Amazon EC2 Container Registry Service

There is a newer version: 2.29.39
Show newest version
/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.ecr.model;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 */
@Generated("software.amazon.awssdk:codegen")
public final class CreateRepositoryCreationTemplateRequest extends EcrRequest implements
        ToCopyableBuilder {
    private static final SdkField PREFIX_FIELD = SdkField. builder(MarshallingType.STRING).memberName("prefix")
            .getter(getter(CreateRepositoryCreationTemplateRequest::prefix)).setter(setter(Builder::prefix))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("prefix").build()).build();

    private static final SdkField DESCRIPTION_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("description").getter(getter(CreateRepositoryCreationTemplateRequest::description))
            .setter(setter(Builder::description))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("description").build()).build();

    private static final SdkField ENCRYPTION_CONFIGURATION_FIELD = SdkField
            . builder(MarshallingType.SDK_POJO)
            .memberName("encryptionConfiguration")
            .getter(getter(CreateRepositoryCreationTemplateRequest::encryptionConfiguration))
            .setter(setter(Builder::encryptionConfiguration))
            .constructor(EncryptionConfigurationForRepositoryCreationTemplate::builder)
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("encryptionConfiguration").build())
            .build();

    private static final SdkField> RESOURCE_TAGS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .memberName("resourceTags")
            .getter(getter(CreateRepositoryCreationTemplateRequest::resourceTags))
            .setter(setter(Builder::resourceTags))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("resourceTags").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.SDK_POJO)
                                            .constructor(Tag::builder)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField IMAGE_TAG_MUTABILITY_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("imageTagMutability").getter(getter(CreateRepositoryCreationTemplateRequest::imageTagMutabilityAsString))
            .setter(setter(Builder::imageTagMutability))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("imageTagMutability").build())
            .build();

    private static final SdkField REPOSITORY_POLICY_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("repositoryPolicy").getter(getter(CreateRepositoryCreationTemplateRequest::repositoryPolicy))
            .setter(setter(Builder::repositoryPolicy))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("repositoryPolicy").build()).build();

    private static final SdkField LIFECYCLE_POLICY_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("lifecyclePolicy").getter(getter(CreateRepositoryCreationTemplateRequest::lifecyclePolicy))
            .setter(setter(Builder::lifecyclePolicy))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("lifecyclePolicy").build()).build();

    private static final SdkField> APPLIED_FOR_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .memberName("appliedFor")
            .getter(getter(CreateRepositoryCreationTemplateRequest::appliedForAsStrings))
            .setter(setter(Builder::appliedForWithStrings))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("appliedFor").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.STRING)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField CUSTOM_ROLE_ARN_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("customRoleArn").getter(getter(CreateRepositoryCreationTemplateRequest::customRoleArn))
            .setter(setter(Builder::customRoleArn))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("customRoleArn").build()).build();

    private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(PREFIX_FIELD,
            DESCRIPTION_FIELD, ENCRYPTION_CONFIGURATION_FIELD, RESOURCE_TAGS_FIELD, IMAGE_TAG_MUTABILITY_FIELD,
            REPOSITORY_POLICY_FIELD, LIFECYCLE_POLICY_FIELD, APPLIED_FOR_FIELD, CUSTOM_ROLE_ARN_FIELD));

    private final String prefix;

    private final String description;

    private final EncryptionConfigurationForRepositoryCreationTemplate encryptionConfiguration;

    private final List resourceTags;

    private final String imageTagMutability;

    private final String repositoryPolicy;

    private final String lifecyclePolicy;

    private final List appliedFor;

    private final String customRoleArn;

    private CreateRepositoryCreationTemplateRequest(BuilderImpl builder) {
        super(builder);
        this.prefix = builder.prefix;
        this.description = builder.description;
        this.encryptionConfiguration = builder.encryptionConfiguration;
        this.resourceTags = builder.resourceTags;
        this.imageTagMutability = builder.imageTagMutability;
        this.repositoryPolicy = builder.repositoryPolicy;
        this.lifecyclePolicy = builder.lifecyclePolicy;
        this.appliedFor = builder.appliedFor;
        this.customRoleArn = builder.customRoleArn;
    }

    /**
     * 

* The repository namespace prefix to associate with the template. All repositories created using this namespace * prefix will have the settings defined in this template applied. For example, a prefix of prod would * apply to all repositories beginning with prod/. Similarly, a prefix of prod/team would * apply to all repositories beginning with prod/team/. *

*

* To apply a template to all repositories in your registry that don't have an associated creation template, you can * use ROOT as the prefix. *

* *

* There is always an assumed / applied to the end of the prefix. If you specify * ecr-public as the prefix, Amazon ECR treats that as ecr-public/. When using a pull * through cache rule, the repository prefix you specify during rule creation is what you should specify as your * repository creation template prefix as well. *

*
* * @return The repository namespace prefix to associate with the template. All repositories created using this * namespace prefix will have the settings defined in this template applied. For example, a prefix of * prod would apply to all repositories beginning with prod/. Similarly, a prefix * of prod/team would apply to all repositories beginning with prod/team/.

*

* To apply a template to all repositories in your registry that don't have an associated creation template, * you can use ROOT as the prefix. *

* *

* There is always an assumed / applied to the end of the prefix. If you specify * ecr-public as the prefix, Amazon ECR treats that as ecr-public/. When using a * pull through cache rule, the repository prefix you specify during rule creation is what you should * specify as your repository creation template prefix as well. *

*/ public final String prefix() { return prefix; } /** *

* A description for the repository creation template. *

* * @return A description for the repository creation template. */ public final String description() { return description; } /** *

* The encryption configuration to use for repositories created using the template. *

* * @return The encryption configuration to use for repositories created using the template. */ public final EncryptionConfigurationForRepositoryCreationTemplate encryptionConfiguration() { return encryptionConfiguration; } /** * For responses, this returns true if the service returned a value for the ResourceTags property. This DOES NOT * check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). * This is useful because the SDK will never return a null collection or map, but you may need to differentiate * between the service returning nothing (or null) and the service returning an empty collection or map. For * requests, this returns true if a value for the property was specified in the request builder, and false if a * value was not specified. */ public final boolean hasResourceTags() { return resourceTags != null && !(resourceTags instanceof SdkAutoConstructList); } /** *

* The metadata to apply to the repository to help you categorize and organize. Each tag consists of a key and an * optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag * values can have a maximum length of 256 characters. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

*

* This method will never return null. If you would like to know whether the service returned this field (so that * you can differentiate between null and empty), you can use the {@link #hasResourceTags} method. *

* * @return The metadata to apply to the repository to help you categorize and organize. Each tag consists of a key * and an optional value, both of which you define. Tag keys can have a maximum character length of 128 * characters, and tag values can have a maximum length of 256 characters. */ public final List resourceTags() { return resourceTags; } /** *

* The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If IMMUTABLE is * specified, all image tags within the repository will be immutable which will prevent them from being overwritten. *

*

* If the service returns an enum value that is not available in the current SDK version, * {@link #imageTagMutability} will return {@link ImageTagMutability#UNKNOWN_TO_SDK_VERSION}. The raw value returned * by the service is available from {@link #imageTagMutabilityAsString}. *

* * @return The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If * IMMUTABLE is specified, all image tags within the repository will be immutable which will * prevent them from being overwritten. * @see ImageTagMutability */ public final ImageTagMutability imageTagMutability() { return ImageTagMutability.fromValue(imageTagMutability); } /** *

* The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If IMMUTABLE is * specified, all image tags within the repository will be immutable which will prevent them from being overwritten. *

*

* If the service returns an enum value that is not available in the current SDK version, * {@link #imageTagMutability} will return {@link ImageTagMutability#UNKNOWN_TO_SDK_VERSION}. The raw value returned * by the service is available from {@link #imageTagMutabilityAsString}. *

* * @return The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If * IMMUTABLE is specified, all image tags within the repository will be immutable which will * prevent them from being overwritten. * @see ImageTagMutability */ public final String imageTagMutabilityAsString() { return imageTagMutability; } /** *

* The repository policy to apply to repositories created using the template. A repository policy is a permissions * policy associated with a repository to control access permissions. *

* * @return The repository policy to apply to repositories created using the template. A repository policy is a * permissions policy associated with a repository to control access permissions. */ public final String repositoryPolicy() { return repositoryPolicy; } /** *

* The lifecycle policy to use for repositories created using the template. *

* * @return The lifecycle policy to use for repositories created using the template. */ public final String lifecyclePolicy() { return lifecyclePolicy; } /** *

* A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template will * apply towards. The two supported scenarios are PULL_THROUGH_CACHE and REPLICATION *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

*

* This method will never return null. If you would like to know whether the service returned this field (so that * you can differentiate between null and empty), you can use the {@link #hasAppliedFor} method. *

* * @return A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template * will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION */ public final List appliedFor() { return RCTAppliedForListCopier.copyStringToEnum(appliedFor); } /** * For responses, this returns true if the service returned a value for the AppliedFor property. This DOES NOT check * that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). This is * useful because the SDK will never return a null collection or map, but you may need to differentiate between the * service returning nothing (or null) and the service returning an empty collection or map. For requests, this * returns true if a value for the property was specified in the request builder, and false if a value was not * specified. */ public final boolean hasAppliedFor() { return appliedFor != null && !(appliedFor instanceof SdkAutoConstructList); } /** *

* A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template will * apply towards. The two supported scenarios are PULL_THROUGH_CACHE and REPLICATION *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

*

* This method will never return null. If you would like to know whether the service returned this field (so that * you can differentiate between null and empty), you can use the {@link #hasAppliedFor} method. *

* * @return A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template * will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION */ public final List appliedForAsStrings() { return appliedFor; } /** *

* The ARN of the role to be assumed by Amazon ECR. This role must be in the same account as the registry that you * are configuring. *

* * @return The ARN of the role to be assumed by Amazon ECR. This role must be in the same account as the registry * that you are configuring. */ public final String customRoleArn() { return customRoleArn; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public final int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + super.hashCode(); hashCode = 31 * hashCode + Objects.hashCode(prefix()); hashCode = 31 * hashCode + Objects.hashCode(description()); hashCode = 31 * hashCode + Objects.hashCode(encryptionConfiguration()); hashCode = 31 * hashCode + Objects.hashCode(hasResourceTags() ? resourceTags() : null); hashCode = 31 * hashCode + Objects.hashCode(imageTagMutabilityAsString()); hashCode = 31 * hashCode + Objects.hashCode(repositoryPolicy()); hashCode = 31 * hashCode + Objects.hashCode(lifecyclePolicy()); hashCode = 31 * hashCode + Objects.hashCode(hasAppliedFor() ? appliedForAsStrings() : null); hashCode = 31 * hashCode + Objects.hashCode(customRoleArn()); return hashCode; } @Override public final boolean equals(Object obj) { return super.equals(obj) && equalsBySdkFields(obj); } @Override public final boolean equalsBySdkFields(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof CreateRepositoryCreationTemplateRequest)) { return false; } CreateRepositoryCreationTemplateRequest other = (CreateRepositoryCreationTemplateRequest) obj; return Objects.equals(prefix(), other.prefix()) && Objects.equals(description(), other.description()) && Objects.equals(encryptionConfiguration(), other.encryptionConfiguration()) && hasResourceTags() == other.hasResourceTags() && Objects.equals(resourceTags(), other.resourceTags()) && Objects.equals(imageTagMutabilityAsString(), other.imageTagMutabilityAsString()) && Objects.equals(repositoryPolicy(), other.repositoryPolicy()) && Objects.equals(lifecyclePolicy(), other.lifecyclePolicy()) && hasAppliedFor() == other.hasAppliedFor() && Objects.equals(appliedForAsStrings(), other.appliedForAsStrings()) && Objects.equals(customRoleArn(), other.customRoleArn()); } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public final String toString() { return ToString.builder("CreateRepositoryCreationTemplateRequest").add("Prefix", prefix()) .add("Description", description()).add("EncryptionConfiguration", encryptionConfiguration()) .add("ResourceTags", hasResourceTags() ? resourceTags() : null) .add("ImageTagMutability", imageTagMutabilityAsString()).add("RepositoryPolicy", repositoryPolicy()) .add("LifecyclePolicy", lifecyclePolicy()).add("AppliedFor", hasAppliedFor() ? appliedForAsStrings() : null) .add("CustomRoleArn", customRoleArn()).build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "prefix": return Optional.ofNullable(clazz.cast(prefix())); case "description": return Optional.ofNullable(clazz.cast(description())); case "encryptionConfiguration": return Optional.ofNullable(clazz.cast(encryptionConfiguration())); case "resourceTags": return Optional.ofNullable(clazz.cast(resourceTags())); case "imageTagMutability": return Optional.ofNullable(clazz.cast(imageTagMutabilityAsString())); case "repositoryPolicy": return Optional.ofNullable(clazz.cast(repositoryPolicy())); case "lifecyclePolicy": return Optional.ofNullable(clazz.cast(lifecyclePolicy())); case "appliedFor": return Optional.ofNullable(clazz.cast(appliedForAsStrings())); case "customRoleArn": return Optional.ofNullable(clazz.cast(customRoleArn())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((CreateRepositoryCreationTemplateRequest) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends EcrRequest.Builder, SdkPojo, CopyableBuilder { /** *

* The repository namespace prefix to associate with the template. All repositories created using this namespace * prefix will have the settings defined in this template applied. For example, a prefix of prod * would apply to all repositories beginning with prod/. Similarly, a prefix of * prod/team would apply to all repositories beginning with prod/team/. *

*

* To apply a template to all repositories in your registry that don't have an associated creation template, you * can use ROOT as the prefix. *

* *

* There is always an assumed / applied to the end of the prefix. If you specify * ecr-public as the prefix, Amazon ECR treats that as ecr-public/. When using a pull * through cache rule, the repository prefix you specify during rule creation is what you should specify as your * repository creation template prefix as well. *

*
* * @param prefix * The repository namespace prefix to associate with the template. All repositories created using this * namespace prefix will have the settings defined in this template applied. For example, a prefix of * prod would apply to all repositories beginning with prod/. Similarly, a * prefix of prod/team would apply to all repositories beginning with * prod/team/.

*

* To apply a template to all repositories in your registry that don't have an associated creation * template, you can use ROOT as the prefix. *

* *

* There is always an assumed / applied to the end of the prefix. If you specify * ecr-public as the prefix, Amazon ECR treats that as ecr-public/. When using * a pull through cache rule, the repository prefix you specify during rule creation is what you should * specify as your repository creation template prefix as well. *

* @return Returns a reference to this object so that method calls can be chained together. */ Builder prefix(String prefix); /** *

* A description for the repository creation template. *

* * @param description * A description for the repository creation template. * @return Returns a reference to this object so that method calls can be chained together. */ Builder description(String description); /** *

* The encryption configuration to use for repositories created using the template. *

* * @param encryptionConfiguration * The encryption configuration to use for repositories created using the template. * @return Returns a reference to this object so that method calls can be chained together. */ Builder encryptionConfiguration(EncryptionConfigurationForRepositoryCreationTemplate encryptionConfiguration); /** *

* The encryption configuration to use for repositories created using the template. *

* This is a convenience method that creates an instance of the * {@link EncryptionConfigurationForRepositoryCreationTemplate.Builder} avoiding the need to create one manually * via {@link EncryptionConfigurationForRepositoryCreationTemplate#builder()}. * *

* When the {@link Consumer} completes, * {@link EncryptionConfigurationForRepositoryCreationTemplate.Builder#build()} is called immediately and its * result is passed to {@link #encryptionConfiguration(EncryptionConfigurationForRepositoryCreationTemplate)}. * * @param encryptionConfiguration * a consumer that will call methods on * {@link EncryptionConfigurationForRepositoryCreationTemplate.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #encryptionConfiguration(EncryptionConfigurationForRepositoryCreationTemplate) */ default Builder encryptionConfiguration( Consumer encryptionConfiguration) { return encryptionConfiguration(EncryptionConfigurationForRepositoryCreationTemplate.builder() .applyMutation(encryptionConfiguration).build()); } /** *

* The metadata to apply to the repository to help you categorize and organize. Each tag consists of a key and * an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, * and tag values can have a maximum length of 256 characters. *

* * @param resourceTags * The metadata to apply to the repository to help you categorize and organize. Each tag consists of a * key and an optional value, both of which you define. Tag keys can have a maximum character length of * 128 characters, and tag values can have a maximum length of 256 characters. * @return Returns a reference to this object so that method calls can be chained together. */ Builder resourceTags(Collection resourceTags); /** *

* The metadata to apply to the repository to help you categorize and organize. Each tag consists of a key and * an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, * and tag values can have a maximum length of 256 characters. *

* * @param resourceTags * The metadata to apply to the repository to help you categorize and organize. Each tag consists of a * key and an optional value, both of which you define. Tag keys can have a maximum character length of * 128 characters, and tag values can have a maximum length of 256 characters. * @return Returns a reference to this object so that method calls can be chained together. */ Builder resourceTags(Tag... resourceTags); /** *

* The metadata to apply to the repository to help you categorize and organize. Each tag consists of a key and * an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, * and tag values can have a maximum length of 256 characters. *

* This is a convenience method that creates an instance of the * {@link software.amazon.awssdk.services.ecr.model.Tag.Builder} avoiding the need to create one manually via * {@link software.amazon.awssdk.services.ecr.model.Tag#builder()}. * *

* When the {@link Consumer} completes, {@link software.amazon.awssdk.services.ecr.model.Tag.Builder#build()} is * called immediately and its result is passed to {@link #resourceTags(List)}. * * @param resourceTags * a consumer that will call methods on {@link software.amazon.awssdk.services.ecr.model.Tag.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #resourceTags(java.util.Collection) */ Builder resourceTags(Consumer... resourceTags); /** *

* The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If IMMUTABLE is * specified, all image tags within the repository will be immutable which will prevent them from being * overwritten. *

* * @param imageTagMutability * The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If * IMMUTABLE is specified, all image tags within the repository will be immutable which will * prevent them from being overwritten. * @see ImageTagMutability * @return Returns a reference to this object so that method calls can be chained together. * @see ImageTagMutability */ Builder imageTagMutability(String imageTagMutability); /** *

* The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If IMMUTABLE is * specified, all image tags within the repository will be immutable which will prevent them from being * overwritten. *

* * @param imageTagMutability * The tag mutability setting for the repository. If this parameter is omitted, the default setting of * MUTABLE will be used which will allow image tags to be overwritten. If * IMMUTABLE is specified, all image tags within the repository will be immutable which will * prevent them from being overwritten. * @see ImageTagMutability * @return Returns a reference to this object so that method calls can be chained together. * @see ImageTagMutability */ Builder imageTagMutability(ImageTagMutability imageTagMutability); /** *

* The repository policy to apply to repositories created using the template. A repository policy is a * permissions policy associated with a repository to control access permissions. *

* * @param repositoryPolicy * The repository policy to apply to repositories created using the template. A repository policy is a * permissions policy associated with a repository to control access permissions. * @return Returns a reference to this object so that method calls can be chained together. */ Builder repositoryPolicy(String repositoryPolicy); /** *

* The lifecycle policy to use for repositories created using the template. *

* * @param lifecyclePolicy * The lifecycle policy to use for repositories created using the template. * @return Returns a reference to this object so that method calls can be chained together. */ Builder lifecyclePolicy(String lifecyclePolicy); /** *

* A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template * will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION *

* * @param appliedFor * A list of enumerable strings representing the Amazon ECR repository creation scenarios that this * template will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION * @return Returns a reference to this object so that method calls can be chained together. */ Builder appliedForWithStrings(Collection appliedFor); /** *

* A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template * will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION *

* * @param appliedFor * A list of enumerable strings representing the Amazon ECR repository creation scenarios that this * template will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION * @return Returns a reference to this object so that method calls can be chained together. */ Builder appliedForWithStrings(String... appliedFor); /** *

* A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template * will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION *

* * @param appliedFor * A list of enumerable strings representing the Amazon ECR repository creation scenarios that this * template will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION * @return Returns a reference to this object so that method calls can be chained together. */ Builder appliedFor(Collection appliedFor); /** *

* A list of enumerable strings representing the Amazon ECR repository creation scenarios that this template * will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION *

* * @param appliedFor * A list of enumerable strings representing the Amazon ECR repository creation scenarios that this * template will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and * REPLICATION * @return Returns a reference to this object so that method calls can be chained together. */ Builder appliedFor(RCTAppliedFor... appliedFor); /** *

* The ARN of the role to be assumed by Amazon ECR. This role must be in the same account as the registry that * you are configuring. *

* * @param customRoleArn * The ARN of the role to be assumed by Amazon ECR. This role must be in the same account as the registry * that you are configuring. * @return Returns a reference to this object so that method calls can be chained together. */ Builder customRoleArn(String customRoleArn); @Override Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration); @Override Builder overrideConfiguration(Consumer builderConsumer); } static final class BuilderImpl extends EcrRequest.BuilderImpl implements Builder { private String prefix; private String description; private EncryptionConfigurationForRepositoryCreationTemplate encryptionConfiguration; private List resourceTags = DefaultSdkAutoConstructList.getInstance(); private String imageTagMutability; private String repositoryPolicy; private String lifecyclePolicy; private List appliedFor = DefaultSdkAutoConstructList.getInstance(); private String customRoleArn; private BuilderImpl() { } private BuilderImpl(CreateRepositoryCreationTemplateRequest model) { super(model); prefix(model.prefix); description(model.description); encryptionConfiguration(model.encryptionConfiguration); resourceTags(model.resourceTags); imageTagMutability(model.imageTagMutability); repositoryPolicy(model.repositoryPolicy); lifecyclePolicy(model.lifecyclePolicy); appliedForWithStrings(model.appliedFor); customRoleArn(model.customRoleArn); } public final String getPrefix() { return prefix; } public final void setPrefix(String prefix) { this.prefix = prefix; } @Override public final Builder prefix(String prefix) { this.prefix = prefix; return this; } public final String getDescription() { return description; } public final void setDescription(String description) { this.description = description; } @Override public final Builder description(String description) { this.description = description; return this; } public final EncryptionConfigurationForRepositoryCreationTemplate.Builder getEncryptionConfiguration() { return encryptionConfiguration != null ? encryptionConfiguration.toBuilder() : null; } public final void setEncryptionConfiguration( EncryptionConfigurationForRepositoryCreationTemplate.BuilderImpl encryptionConfiguration) { this.encryptionConfiguration = encryptionConfiguration != null ? encryptionConfiguration.build() : null; } @Override public final Builder encryptionConfiguration(EncryptionConfigurationForRepositoryCreationTemplate encryptionConfiguration) { this.encryptionConfiguration = encryptionConfiguration; return this; } public final List getResourceTags() { List result = TagListCopier.copyToBuilder(this.resourceTags); if (result instanceof SdkAutoConstructList) { return null; } return result; } public final void setResourceTags(Collection resourceTags) { this.resourceTags = TagListCopier.copyFromBuilder(resourceTags); } @Override public final Builder resourceTags(Collection resourceTags) { this.resourceTags = TagListCopier.copy(resourceTags); return this; } @Override @SafeVarargs public final Builder resourceTags(Tag... resourceTags) { resourceTags(Arrays.asList(resourceTags)); return this; } @Override @SafeVarargs public final Builder resourceTags(Consumer... resourceTags) { resourceTags(Stream.of(resourceTags).map(c -> Tag.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final String getImageTagMutability() { return imageTagMutability; } public final void setImageTagMutability(String imageTagMutability) { this.imageTagMutability = imageTagMutability; } @Override public final Builder imageTagMutability(String imageTagMutability) { this.imageTagMutability = imageTagMutability; return this; } @Override public final Builder imageTagMutability(ImageTagMutability imageTagMutability) { this.imageTagMutability(imageTagMutability == null ? null : imageTagMutability.toString()); return this; } public final String getRepositoryPolicy() { return repositoryPolicy; } public final void setRepositoryPolicy(String repositoryPolicy) { this.repositoryPolicy = repositoryPolicy; } @Override public final Builder repositoryPolicy(String repositoryPolicy) { this.repositoryPolicy = repositoryPolicy; return this; } public final String getLifecyclePolicy() { return lifecyclePolicy; } public final void setLifecyclePolicy(String lifecyclePolicy) { this.lifecyclePolicy = lifecyclePolicy; } @Override public final Builder lifecyclePolicy(String lifecyclePolicy) { this.lifecyclePolicy = lifecyclePolicy; return this; } public final Collection getAppliedFor() { if (appliedFor instanceof SdkAutoConstructList) { return null; } return appliedFor; } public final void setAppliedFor(Collection appliedFor) { this.appliedFor = RCTAppliedForListCopier.copy(appliedFor); } @Override public final Builder appliedForWithStrings(Collection appliedFor) { this.appliedFor = RCTAppliedForListCopier.copy(appliedFor); return this; } @Override @SafeVarargs public final Builder appliedForWithStrings(String... appliedFor) { appliedForWithStrings(Arrays.asList(appliedFor)); return this; } @Override public final Builder appliedFor(Collection appliedFor) { this.appliedFor = RCTAppliedForListCopier.copyEnumToString(appliedFor); return this; } @Override @SafeVarargs public final Builder appliedFor(RCTAppliedFor... appliedFor) { appliedFor(Arrays.asList(appliedFor)); return this; } public final String getCustomRoleArn() { return customRoleArn; } public final void setCustomRoleArn(String customRoleArn) { this.customRoleArn = customRoleArn; } @Override public final Builder customRoleArn(String customRoleArn) { this.customRoleArn = customRoleArn; return this; } @Override public Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration) { super.overrideConfiguration(overrideConfiguration); return this; } @Override public Builder overrideConfiguration(Consumer builderConsumer) { super.overrideConfiguration(builderConsumer); return this; } @Override public CreateRepositoryCreationTemplateRequest build() { return new CreateRepositoryCreationTemplateRequest(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy