com.amazonaws.services.amplify.model.Branch Maven / Gradle / Ivy
/*
 * Copyright 2019-2024 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 com.amazonaws.services.amplify.model;
import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.protocol.StructuredPojo;
import com.amazonaws.protocol.ProtocolMarshaller;
/**
 * 
 * The branch for an Amplify app, which maps to a third-party repository branch.
 * 
 * 
 * @see AWS API
 *      Documentation
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class Branch implements Serializable, Cloneable, StructuredPojo {
    /**
     * 
     * The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     * 
     */
    private String branchArn;
    /**
     * 
     * The name for the branch that is part of an Amplify app.
     * 
     */
    private String branchName;
    /**
     * 
     * The description for the branch that is part of an Amplify app.
     * 
     */
    private String description;
    /**
     * 
     * The tag for the branch of an Amplify app.
     * 
     */
    private java.util.Map tags;
    /**
     * 
     * The current stage for the branch that is part of an Amplify app.
     * 
     */
    private String stage;
    /**
     * 
     * The display name for the branch. This is used as the default domain prefix.
     * 
     */
    private String displayName;
    /**
     * 
     * Enables notifications for a branch that is part of an Amplify app.
     * 
     */
    private Boolean enableNotification;
    /**
     * 
     * The creation date and time for a branch that is part of an Amplify app.
     * 
     */
    private java.util.Date createTime;
    /**
     * 
     * The last updated date and time for a branch that is part of an Amplify app.
     * 
     */
    private java.util.Date updateTime;
    /**
     * 
     * The environment variables specific to a branch of an Amplify app.
     * 
     */
    private java.util.Map environmentVariables;
    /**
     * 
     * Enables auto-building on push for a branch of an Amplify app.
     * 
     */
    private Boolean enableAutoBuild;
    /**
     * 
     * The custom domains for a branch of an Amplify app.
     * 
     */
    private java.util.List customDomains;
    /**
     * 
     * The framework for a branch of an Amplify app.
     * 
     */
    private String framework;
    /**
     * 
     * The ID of the active job for a branch of an Amplify app.
     * 
     */
    private String activeJobId;
    /**
     * 
     * The total number of jobs that are part of an Amplify app.
     * 
     */
    private String totalNumberOfJobs;
    /**
     * 
     * Enables basic authorization for a branch of an Amplify app.
     * 
     */
    private Boolean enableBasicAuth;
    /**
     * 
     * Enables performance mode for the branch.
     * 
     * 
     * Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer
     * interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to
     * roll out.
     * 
     */
    private Boolean enablePerformanceMode;
    /**
     * 
     * The thumbnail URL for the branch of an Amplify app.
     * 
     */
    private String thumbnailUrl;
    /**
     * 
     * The basic authorization credentials for a branch of an Amplify app. You must base64-encode the authorization
     * credentials and provide them in the format user:password.
     * 
     */
    private String basicAuthCredentials;
    /**
     * 
     * The build specification (build spec) content for the branch of an Amplify app.
     * 
     */
    private String buildSpec;
    /**
     * 
     * The content Time to Live (TTL) for the website in seconds.
     * 
     */
    private String ttl;
    /**
     * 
     * A list of custom resources that are linked to this branch.
     * 
     */
    private java.util.List associatedResources;
    /**
     * 
     * Enables pull request previews for the branch.
     * 
     */
    private Boolean enablePullRequestPreview;
    /**
     * 
     * The Amplify environment name for the pull request.
     * 
     */
    private String pullRequestEnvironmentName;
    /**
     * 
     * The destination branch if the branch is a pull request branch.
     * 
     */
    private String destinationBranch;
    /**
     * 
     * The source branch if the branch is a pull request branch.
     * 
     */
    private String sourceBranch;
    /**
     * 
     * The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app.
     * 
     * 
     * This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2, you
     * provision the app's backend infrastructure using Typescript code.
     * 
     */
    private String backendEnvironmentArn;
    private Backend backend;
    /**
     * 
     * The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     * 
     * 
     * @param branchArn
     *        The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     */
    public void setBranchArn(String branchArn) {
        this.branchArn = branchArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     * 
     * 
     * @return The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     */
    public String getBranchArn() {
        return this.branchArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     * 
     * 
     * @param branchArn
     *        The Amazon Resource Name (ARN) for a branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withBranchArn(String branchArn) {
        setBranchArn(branchArn);
        return this;
    }
    /**
     * 
     * The name for the branch that is part of an Amplify app.
     * 
     * 
     * @param branchName
     *        The name for the branch that is part of an Amplify app.
     */
    public void setBranchName(String branchName) {
        this.branchName = branchName;
    }
    /**
     * 
     * The name for the branch that is part of an Amplify app.
     * 
     * 
     * @return The name for the branch that is part of an Amplify app.
     */
    public String getBranchName() {
        return this.branchName;
    }
    /**
     * 
     * The name for the branch that is part of an Amplify app.
     * 
     * 
     * @param branchName
     *        The name for the branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withBranchName(String branchName) {
        setBranchName(branchName);
        return this;
    }
    /**
     * 
     * The description for the branch that is part of an Amplify app.
     * 
     * 
     * @param description
     *        The description for the branch that is part of an Amplify app.
     */
    public void setDescription(String description) {
        this.description = description;
    }
    /**
     * 
     * The description for the branch that is part of an Amplify app.
     * 
     * 
     * @return The description for the branch that is part of an Amplify app.
     */
    public String getDescription() {
        return this.description;
    }
    /**
     * 
     * The description for the branch that is part of an Amplify app.
     * 
     * 
     * @param description
     *        The description for the branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withDescription(String description) {
        setDescription(description);
        return this;
    }
    /**
     * 
     * The tag for the branch of an Amplify app.
     * 
     * 
     * @return The tag for the branch of an Amplify app.
     */
    public java.util.Map getTags() {
        return tags;
    }
    /**
     * 
     * The tag for the branch of an Amplify app.
     * 
     * 
     * @param tags
     *        The tag for the branch of an Amplify app.
     */
    public void setTags(java.util.Map tags) {
        this.tags = tags;
    }
    /**
     * 
     * The tag for the branch of an Amplify app.
     * 
     * 
     * @param tags
     *        The tag for the branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withTags(java.util.Map tags) {
        setTags(tags);
        return this;
    }
    /**
     * Add a single Tags entry
     *
     * @see Branch#withTags
     * @returns a reference to this object so that method calls can be chained together.
     */
    public Branch addTagsEntry(String key, String value) {
        if (null == this.tags) {
            this.tags = new java.util.HashMap();
        }
        if (this.tags.containsKey(key))
            throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
        this.tags.put(key, value);
        return this;
    }
    /**
     * Removes all the entries added into Tags.
     *
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch clearTagsEntries() {
        this.tags = null;
        return this;
    }
    /**
     * 
     * The current stage for the branch that is part of an Amplify app.
     * 
     * 
     * @param stage
     *        The current stage for the branch that is part of an Amplify app.
     * @see Stage
     */
    public void setStage(String stage) {
        this.stage = stage;
    }
    /**
     * 
     * The current stage for the branch that is part of an Amplify app.
     * 
     * 
     * @return The current stage for the branch that is part of an Amplify app.
     * @see Stage
     */
    public String getStage() {
        return this.stage;
    }
    /**
     * 
     * The current stage for the branch that is part of an Amplify app.
     * 
     * 
     * @param stage
     *        The current stage for the branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see Stage
     */
    public Branch withStage(String stage) {
        setStage(stage);
        return this;
    }
    /**
     * 
     * The current stage for the branch that is part of an Amplify app.
     * 
     * 
     * @param stage
     *        The current stage for the branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see Stage
     */
    public Branch withStage(Stage stage) {
        this.stage = stage.toString();
        return this;
    }
    /**
     * 
     * The display name for the branch. This is used as the default domain prefix.
     * 
     * 
     * @param displayName
     *        The display name for the branch. This is used as the default domain prefix.
     */
    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }
    /**
     * 
     * The display name for the branch. This is used as the default domain prefix.
     * 
     * 
     * @return The display name for the branch. This is used as the default domain prefix.
     */
    public String getDisplayName() {
        return this.displayName;
    }
    /**
     * 
     * The display name for the branch. This is used as the default domain prefix.
     * 
     * 
     * @param displayName
     *        The display name for the branch. This is used as the default domain prefix.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withDisplayName(String displayName) {
        setDisplayName(displayName);
        return this;
    }
    /**
     * 
     * Enables notifications for a branch that is part of an Amplify app.
     * 
     * 
     * @param enableNotification
     *        Enables notifications for a branch that is part of an Amplify app.
     */
    public void setEnableNotification(Boolean enableNotification) {
        this.enableNotification = enableNotification;
    }
    /**
     * 
     * Enables notifications for a branch that is part of an Amplify app.
     * 
     * 
     * @return Enables notifications for a branch that is part of an Amplify app.
     */
    public Boolean getEnableNotification() {
        return this.enableNotification;
    }
    /**
     * 
     * Enables notifications for a branch that is part of an Amplify app.
     * 
     * 
     * @param enableNotification
     *        Enables notifications for a branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withEnableNotification(Boolean enableNotification) {
        setEnableNotification(enableNotification);
        return this;
    }
    /**
     * 
     * Enables notifications for a branch that is part of an Amplify app.
     * 
     * 
     * @return Enables notifications for a branch that is part of an Amplify app.
     */
    public Boolean isEnableNotification() {
        return this.enableNotification;
    }
    /**
     * 
     * The creation date and time for a branch that is part of an Amplify app.
     * 
     * 
     * @param createTime
     *        The creation date and time for a branch that is part of an Amplify app.
     */
    public void setCreateTime(java.util.Date createTime) {
        this.createTime = createTime;
    }
    /**
     * 
     * The creation date and time for a branch that is part of an Amplify app.
     * 
     * 
     * @return The creation date and time for a branch that is part of an Amplify app.
     */
    public java.util.Date getCreateTime() {
        return this.createTime;
    }
    /**
     * 
     * The creation date and time for a branch that is part of an Amplify app.
     * 
     * 
     * @param createTime
     *        The creation date and time for a branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withCreateTime(java.util.Date createTime) {
        setCreateTime(createTime);
        return this;
    }
    /**
     * 
     * The last updated date and time for a branch that is part of an Amplify app.
     * 
     * 
     * @param updateTime
     *        The last updated date and time for a branch that is part of an Amplify app.
     */
    public void setUpdateTime(java.util.Date updateTime) {
        this.updateTime = updateTime;
    }
    /**
     * 
     * The last updated date and time for a branch that is part of an Amplify app.
     * 
     * 
     * @return The last updated date and time for a branch that is part of an Amplify app.
     */
    public java.util.Date getUpdateTime() {
        return this.updateTime;
    }
    /**
     * 
     * The last updated date and time for a branch that is part of an Amplify app.
     * 
     * 
     * @param updateTime
     *        The last updated date and time for a branch that is part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withUpdateTime(java.util.Date updateTime) {
        setUpdateTime(updateTime);
        return this;
    }
    /**
     * 
     * The environment variables specific to a branch of an Amplify app.
     * 
     * 
     * @return The environment variables specific to a branch of an Amplify app.
     */
    public java.util.Map getEnvironmentVariables() {
        return environmentVariables;
    }
    /**
     * 
     * The environment variables specific to a branch of an Amplify app.
     * 
     * 
     * @param environmentVariables
     *        The environment variables specific to a branch of an Amplify app.
     */
    public void setEnvironmentVariables(java.util.Map environmentVariables) {
        this.environmentVariables = environmentVariables;
    }
    /**
     * 
     * The environment variables specific to a branch of an Amplify app.
     * 
     * 
     * @param environmentVariables
     *        The environment variables specific to a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withEnvironmentVariables(java.util.Map environmentVariables) {
        setEnvironmentVariables(environmentVariables);
        return this;
    }
    /**
     * Add a single EnvironmentVariables entry
     *
     * @see Branch#withEnvironmentVariables
     * @returns a reference to this object so that method calls can be chained together.
     */
    public Branch addEnvironmentVariablesEntry(String key, String value) {
        if (null == this.environmentVariables) {
            this.environmentVariables = new java.util.HashMap();
        }
        if (this.environmentVariables.containsKey(key))
            throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
        this.environmentVariables.put(key, value);
        return this;
    }
    /**
     * Removes all the entries added into EnvironmentVariables.
     *
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch clearEnvironmentVariablesEntries() {
        this.environmentVariables = null;
        return this;
    }
    /**
     * 
     * Enables auto-building on push for a branch of an Amplify app.
     * 
     * 
     * @param enableAutoBuild
     *        Enables auto-building on push for a branch of an Amplify app.
     */
    public void setEnableAutoBuild(Boolean enableAutoBuild) {
        this.enableAutoBuild = enableAutoBuild;
    }
    /**
     * 
     * Enables auto-building on push for a branch of an Amplify app.
     * 
     * 
     * @return Enables auto-building on push for a branch of an Amplify app.
     */
    public Boolean getEnableAutoBuild() {
        return this.enableAutoBuild;
    }
    /**
     * 
     * Enables auto-building on push for a branch of an Amplify app.
     * 
     * 
     * @param enableAutoBuild
     *        Enables auto-building on push for a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withEnableAutoBuild(Boolean enableAutoBuild) {
        setEnableAutoBuild(enableAutoBuild);
        return this;
    }
    /**
     * 
     * Enables auto-building on push for a branch of an Amplify app.
     * 
     * 
     * @return Enables auto-building on push for a branch of an Amplify app.
     */
    public Boolean isEnableAutoBuild() {
        return this.enableAutoBuild;
    }
    /**
     * 
     * The custom domains for a branch of an Amplify app.
     * 
     * 
     * @return The custom domains for a branch of an Amplify app.
     */
    public java.util.List getCustomDomains() {
        return customDomains;
    }
    /**
     * 
     * The custom domains for a branch of an Amplify app.
     * 
     * 
     * @param customDomains
     *        The custom domains for a branch of an Amplify app.
     */
    public void setCustomDomains(java.util.Collection customDomains) {
        if (customDomains == null) {
            this.customDomains = null;
            return;
        }
        this.customDomains = new java.util.ArrayList(customDomains);
    }
    /**
     * 
     * The custom domains for a branch of an Amplify app.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setCustomDomains(java.util.Collection)} or {@link #withCustomDomains(java.util.Collection)} if you want
     * to override the existing values.
     * 
     * 
     * @param customDomains
     *        The custom domains for a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withCustomDomains(String... customDomains) {
        if (this.customDomains == null) {
            setCustomDomains(new java.util.ArrayList(customDomains.length));
        }
        for (String ele : customDomains) {
            this.customDomains.add(ele);
        }
        return this;
    }
    /**
     * 
     * The custom domains for a branch of an Amplify app.
     * 
     * 
     * @param customDomains
     *        The custom domains for a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withCustomDomains(java.util.Collection customDomains) {
        setCustomDomains(customDomains);
        return this;
    }
    /**
     * 
     * The framework for a branch of an Amplify app.
     * 
     * 
     * @param framework
     *        The framework for a branch of an Amplify app.
     */
    public void setFramework(String framework) {
        this.framework = framework;
    }
    /**
     * 
     * The framework for a branch of an Amplify app.
     * 
     * 
     * @return The framework for a branch of an Amplify app.
     */
    public String getFramework() {
        return this.framework;
    }
    /**
     * 
     * The framework for a branch of an Amplify app.
     * 
     * 
     * @param framework
     *        The framework for a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withFramework(String framework) {
        setFramework(framework);
        return this;
    }
    /**
     * 
     * The ID of the active job for a branch of an Amplify app.
     * 
     * 
     * @param activeJobId
     *        The ID of the active job for a branch of an Amplify app.
     */
    public void setActiveJobId(String activeJobId) {
        this.activeJobId = activeJobId;
    }
    /**
     * 
     * The ID of the active job for a branch of an Amplify app.
     * 
     * 
     * @return The ID of the active job for a branch of an Amplify app.
     */
    public String getActiveJobId() {
        return this.activeJobId;
    }
    /**
     * 
     * The ID of the active job for a branch of an Amplify app.
     * 
     * 
     * @param activeJobId
     *        The ID of the active job for a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withActiveJobId(String activeJobId) {
        setActiveJobId(activeJobId);
        return this;
    }
    /**
     * 
     * The total number of jobs that are part of an Amplify app.
     * 
     * 
     * @param totalNumberOfJobs
     *        The total number of jobs that are part of an Amplify app.
     */
    public void setTotalNumberOfJobs(String totalNumberOfJobs) {
        this.totalNumberOfJobs = totalNumberOfJobs;
    }
    /**
     * 
     * The total number of jobs that are part of an Amplify app.
     * 
     * 
     * @return The total number of jobs that are part of an Amplify app.
     */
    public String getTotalNumberOfJobs() {
        return this.totalNumberOfJobs;
    }
    /**
     * 
     * The total number of jobs that are part of an Amplify app.
     * 
     * 
     * @param totalNumberOfJobs
     *        The total number of jobs that are part of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withTotalNumberOfJobs(String totalNumberOfJobs) {
        setTotalNumberOfJobs(totalNumberOfJobs);
        return this;
    }
    /**
     * 
     * Enables basic authorization for a branch of an Amplify app.
     * 
     * 
     * @param enableBasicAuth
     *        Enables basic authorization for a branch of an Amplify app.
     */
    public void setEnableBasicAuth(Boolean enableBasicAuth) {
        this.enableBasicAuth = enableBasicAuth;
    }
    /**
     * 
     * Enables basic authorization for a branch of an Amplify app.
     * 
     * 
     * @return Enables basic authorization for a branch of an Amplify app.
     */
    public Boolean getEnableBasicAuth() {
        return this.enableBasicAuth;
    }
    /**
     * 
     * Enables basic authorization for a branch of an Amplify app.
     * 
     * 
     * @param enableBasicAuth
     *        Enables basic authorization for a branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withEnableBasicAuth(Boolean enableBasicAuth) {
        setEnableBasicAuth(enableBasicAuth);
        return this;
    }
    /**
     * 
     * Enables basic authorization for a branch of an Amplify app.
     * 
     * 
     * @return Enables basic authorization for a branch of an Amplify app.
     */
    public Boolean isEnableBasicAuth() {
        return this.enableBasicAuth;
    }
    /**
     * 
     * Enables performance mode for the branch.
     * 
     * 
     * Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer
     * interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to
     * roll out.
     * 
     * 
     * @param enablePerformanceMode
     *        Enables performance mode for the branch.
     *        
     *        Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a
     *        longer interval. When performance mode is enabled, hosting configuration or code changes can take up to 10
     *        minutes to roll out.
     */
    public void setEnablePerformanceMode(Boolean enablePerformanceMode) {
        this.enablePerformanceMode = enablePerformanceMode;
    }
    /**
     * 
     * Enables performance mode for the branch.
     * 
     * 
     * Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer
     * interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to
     * roll out.
     * 
     * 
     * @return Enables performance mode for the branch.
     *         
     *         Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a
     *         longer interval. When performance mode is enabled, hosting configuration or code changes can take up to
     *         10 minutes to roll out.
     */
    public Boolean getEnablePerformanceMode() {
        return this.enablePerformanceMode;
    }
    /**
     * 
     * Enables performance mode for the branch.
     * 
     * 
     * Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer
     * interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to
     * roll out.
     * 
     * 
     * @param enablePerformanceMode
     *        Enables performance mode for the branch.
     *        
     *        Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a
     *        longer interval. When performance mode is enabled, hosting configuration or code changes can take up to 10
     *        minutes to roll out.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withEnablePerformanceMode(Boolean enablePerformanceMode) {
        setEnablePerformanceMode(enablePerformanceMode);
        return this;
    }
    /**
     * 
     * Enables performance mode for the branch.
     * 
     * 
     * Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer
     * interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to
     * roll out.
     * 
     * 
     * @return Enables performance mode for the branch.
     *         
     *         Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a
     *         longer interval. When performance mode is enabled, hosting configuration or code changes can take up to
     *         10 minutes to roll out.
     */
    public Boolean isEnablePerformanceMode() {
        return this.enablePerformanceMode;
    }
    /**
     * 
     * The thumbnail URL for the branch of an Amplify app.
     * 
     * 
     * @param thumbnailUrl
     *        The thumbnail URL for the branch of an Amplify app.
     */
    public void setThumbnailUrl(String thumbnailUrl) {
        this.thumbnailUrl = thumbnailUrl;
    }
    /**
     * 
     * The thumbnail URL for the branch of an Amplify app.
     * 
     * 
     * @return The thumbnail URL for the branch of an Amplify app.
     */
    public String getThumbnailUrl() {
        return this.thumbnailUrl;
    }
    /**
     * 
     * The thumbnail URL for the branch of an Amplify app.
     * 
     * 
     * @param thumbnailUrl
     *        The thumbnail URL for the branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withThumbnailUrl(String thumbnailUrl) {
        setThumbnailUrl(thumbnailUrl);
        return this;
    }
    /**
     * 
     * The basic authorization credentials for a branch of an Amplify app. You must base64-encode the authorization
     * credentials and provide them in the format user:password.
     * 
     * 
     * @param basicAuthCredentials
     *        The basic authorization credentials for a branch of an Amplify app. You must base64-encode the
     *        authorization credentials and provide them in the format user:password.
     */
    public void setBasicAuthCredentials(String basicAuthCredentials) {
        this.basicAuthCredentials = basicAuthCredentials;
    }
    /**
     * 
     * The basic authorization credentials for a branch of an Amplify app. You must base64-encode the authorization
     * credentials and provide them in the format user:password.
     * 
     * 
     * @return The basic authorization credentials for a branch of an Amplify app. You must base64-encode the
     *         authorization credentials and provide them in the format user:password.
     */
    public String getBasicAuthCredentials() {
        return this.basicAuthCredentials;
    }
    /**
     * 
     * The basic authorization credentials for a branch of an Amplify app. You must base64-encode the authorization
     * credentials and provide them in the format user:password.
     * 
     * 
     * @param basicAuthCredentials
     *        The basic authorization credentials for a branch of an Amplify app. You must base64-encode the
     *        authorization credentials and provide them in the format user:password.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withBasicAuthCredentials(String basicAuthCredentials) {
        setBasicAuthCredentials(basicAuthCredentials);
        return this;
    }
    /**
     * 
     * The build specification (build spec) content for the branch of an Amplify app.
     * 
     * 
     * @param buildSpec
     *        The build specification (build spec) content for the branch of an Amplify app.
     */
    public void setBuildSpec(String buildSpec) {
        this.buildSpec = buildSpec;
    }
    /**
     * 
     * The build specification (build spec) content for the branch of an Amplify app.
     * 
     * 
     * @return The build specification (build spec) content for the branch of an Amplify app.
     */
    public String getBuildSpec() {
        return this.buildSpec;
    }
    /**
     * 
     * The build specification (build spec) content for the branch of an Amplify app.
     * 
     * 
     * @param buildSpec
     *        The build specification (build spec) content for the branch of an Amplify app.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withBuildSpec(String buildSpec) {
        setBuildSpec(buildSpec);
        return this;
    }
    /**
     * 
     * The content Time to Live (TTL) for the website in seconds.
     * 
     * 
     * @param ttl
     *        The content Time to Live (TTL) for the website in seconds.
     */
    public void setTtl(String ttl) {
        this.ttl = ttl;
    }
    /**
     * 
     * The content Time to Live (TTL) for the website in seconds.
     * 
     * 
     * @return The content Time to Live (TTL) for the website in seconds.
     */
    public String getTtl() {
        return this.ttl;
    }
    /**
     * 
     * The content Time to Live (TTL) for the website in seconds.
     * 
     * 
     * @param ttl
     *        The content Time to Live (TTL) for the website in seconds.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withTtl(String ttl) {
        setTtl(ttl);
        return this;
    }
    /**
     * 
     * A list of custom resources that are linked to this branch.
     * 
     * 
     * @return A list of custom resources that are linked to this branch.
     */
    public java.util.List getAssociatedResources() {
        return associatedResources;
    }
    /**
     * 
     * A list of custom resources that are linked to this branch.
     * 
     * 
     * @param associatedResources
     *        A list of custom resources that are linked to this branch.
     */
    public void setAssociatedResources(java.util.Collection associatedResources) {
        if (associatedResources == null) {
            this.associatedResources = null;
            return;
        }
        this.associatedResources = new java.util.ArrayList(associatedResources);
    }
    /**
     * 
     * A list of custom resources that are linked to this branch.
     * 
     * 
     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setAssociatedResources(java.util.Collection)} or {@link #withAssociatedResources(java.util.Collection)}
     * if you want to override the existing values.
     * 
     * 
     * @param associatedResources
     *        A list of custom resources that are linked to this branch.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withAssociatedResources(String... associatedResources) {
        if (this.associatedResources == null) {
            setAssociatedResources(new java.util.ArrayList(associatedResources.length));
        }
        for (String ele : associatedResources) {
            this.associatedResources.add(ele);
        }
        return this;
    }
    /**
     * 
     * A list of custom resources that are linked to this branch.
     * 
     * 
     * @param associatedResources
     *        A list of custom resources that are linked to this branch.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withAssociatedResources(java.util.Collection associatedResources) {
        setAssociatedResources(associatedResources);
        return this;
    }
    /**
     * 
     * Enables pull request previews for the branch.
     * 
     * 
     * @param enablePullRequestPreview
     *        Enables pull request previews for the branch.
     */
    public void setEnablePullRequestPreview(Boolean enablePullRequestPreview) {
        this.enablePullRequestPreview = enablePullRequestPreview;
    }
    /**
     * 
     * Enables pull request previews for the branch.
     * 
     * 
     * @return Enables pull request previews for the branch.
     */
    public Boolean getEnablePullRequestPreview() {
        return this.enablePullRequestPreview;
    }
    /**
     * 
     * Enables pull request previews for the branch.
     * 
     * 
     * @param enablePullRequestPreview
     *        Enables pull request previews for the branch.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withEnablePullRequestPreview(Boolean enablePullRequestPreview) {
        setEnablePullRequestPreview(enablePullRequestPreview);
        return this;
    }
    /**
     * 
     * Enables pull request previews for the branch.
     * 
     * 
     * @return Enables pull request previews for the branch.
     */
    public Boolean isEnablePullRequestPreview() {
        return this.enablePullRequestPreview;
    }
    /**
     * 
     * The Amplify environment name for the pull request.
     * 
     * 
     * @param pullRequestEnvironmentName
     *        The Amplify environment name for the pull request.
     */
    public void setPullRequestEnvironmentName(String pullRequestEnvironmentName) {
        this.pullRequestEnvironmentName = pullRequestEnvironmentName;
    }
    /**
     * 
     * The Amplify environment name for the pull request.
     * 
     * 
     * @return The Amplify environment name for the pull request.
     */
    public String getPullRequestEnvironmentName() {
        return this.pullRequestEnvironmentName;
    }
    /**
     * 
     * The Amplify environment name for the pull request.
     * 
     * 
     * @param pullRequestEnvironmentName
     *        The Amplify environment name for the pull request.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withPullRequestEnvironmentName(String pullRequestEnvironmentName) {
        setPullRequestEnvironmentName(pullRequestEnvironmentName);
        return this;
    }
    /**
     * 
     * The destination branch if the branch is a pull request branch.
     * 
     * 
     * @param destinationBranch
     *        The destination branch if the branch is a pull request branch.
     */
    public void setDestinationBranch(String destinationBranch) {
        this.destinationBranch = destinationBranch;
    }
    /**
     * 
     * The destination branch if the branch is a pull request branch.
     * 
     * 
     * @return The destination branch if the branch is a pull request branch.
     */
    public String getDestinationBranch() {
        return this.destinationBranch;
    }
    /**
     * 
     * The destination branch if the branch is a pull request branch.
     * 
     * 
     * @param destinationBranch
     *        The destination branch if the branch is a pull request branch.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withDestinationBranch(String destinationBranch) {
        setDestinationBranch(destinationBranch);
        return this;
    }
    /**
     * 
     * The source branch if the branch is a pull request branch.
     * 
     * 
     * @param sourceBranch
     *        The source branch if the branch is a pull request branch.
     */
    public void setSourceBranch(String sourceBranch) {
        this.sourceBranch = sourceBranch;
    }
    /**
     * 
     * The source branch if the branch is a pull request branch.
     * 
     * 
     * @return The source branch if the branch is a pull request branch.
     */
    public String getSourceBranch() {
        return this.sourceBranch;
    }
    /**
     * 
     * The source branch if the branch is a pull request branch.
     * 
     * 
     * @param sourceBranch
     *        The source branch if the branch is a pull request branch.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withSourceBranch(String sourceBranch) {
        setSourceBranch(sourceBranch);
        return this;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app.
     * 
     * 
     * This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2, you
     * provision the app's backend infrastructure using Typescript code.
     * 
     * 
     * @param backendEnvironmentArn
     *        The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. 
     *        
     *        This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2,
     *        you provision the app's backend infrastructure using Typescript code.
     */
    public void setBackendEnvironmentArn(String backendEnvironmentArn) {
        this.backendEnvironmentArn = backendEnvironmentArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app.
     * 
     * 
     * This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2, you
     * provision the app's backend infrastructure using Typescript code.
     * 
     * 
     * @return The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. 
     *         
     *         This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2,
     *         you provision the app's backend infrastructure using Typescript code.
     */
    public String getBackendEnvironmentArn() {
        return this.backendEnvironmentArn;
    }
    /**
     * 
     * The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app.
     * 
     * 
     * This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2, you
     * provision the app's backend infrastructure using Typescript code.
     * 
     * 
     * @param backendEnvironmentArn
     *        The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. 
     *        
     *        This property is available to Amplify Gen 1 apps only. When you deploy an application with Amplify Gen 2,
     *        you provision the app's backend infrastructure using Typescript code.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withBackendEnvironmentArn(String backendEnvironmentArn) {
        setBackendEnvironmentArn(backendEnvironmentArn);
        return this;
    }
    /**
     * @param backend
     */
    public void setBackend(Backend backend) {
        this.backend = backend;
    }
    /**
     * @return
     */
    public Backend getBackend() {
        return this.backend;
    }
    /**
     * @param backend
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public Branch withBackend(Backend backend) {
        setBackend(backend);
        return this;
    }
    /**
     * 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.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getBranchArn() != null)
            sb.append("BranchArn: ").append(getBranchArn()).append(",");
        if (getBranchName() != null)
            sb.append("BranchName: ").append(getBranchName()).append(",");
        if (getDescription() != null)
            sb.append("Description: ").append(getDescription()).append(",");
        if (getTags() != null)
            sb.append("Tags: ").append(getTags()).append(",");
        if (getStage() != null)
            sb.append("Stage: ").append(getStage()).append(",");
        if (getDisplayName() != null)
            sb.append("DisplayName: ").append(getDisplayName()).append(",");
        if (getEnableNotification() != null)
            sb.append("EnableNotification: ").append(getEnableNotification()).append(",");
        if (getCreateTime() != null)
            sb.append("CreateTime: ").append(getCreateTime()).append(",");
        if (getUpdateTime() != null)
            sb.append("UpdateTime: ").append(getUpdateTime()).append(",");
        if (getEnvironmentVariables() != null)
            sb.append("EnvironmentVariables: ").append(getEnvironmentVariables()).append(",");
        if (getEnableAutoBuild() != null)
            sb.append("EnableAutoBuild: ").append(getEnableAutoBuild()).append(",");
        if (getCustomDomains() != null)
            sb.append("CustomDomains: ").append(getCustomDomains()).append(",");
        if (getFramework() != null)
            sb.append("Framework: ").append(getFramework()).append(",");
        if (getActiveJobId() != null)
            sb.append("ActiveJobId: ").append(getActiveJobId()).append(",");
        if (getTotalNumberOfJobs() != null)
            sb.append("TotalNumberOfJobs: ").append(getTotalNumberOfJobs()).append(",");
        if (getEnableBasicAuth() != null)
            sb.append("EnableBasicAuth: ").append(getEnableBasicAuth()).append(",");
        if (getEnablePerformanceMode() != null)
            sb.append("EnablePerformanceMode: ").append(getEnablePerformanceMode()).append(",");
        if (getThumbnailUrl() != null)
            sb.append("ThumbnailUrl: ").append(getThumbnailUrl()).append(",");
        if (getBasicAuthCredentials() != null)
            sb.append("BasicAuthCredentials: ").append("***Sensitive Data Redacted***").append(",");
        if (getBuildSpec() != null)
            sb.append("BuildSpec: ").append("***Sensitive Data Redacted***").append(",");
        if (getTtl() != null)
            sb.append("Ttl: ").append(getTtl()).append(",");
        if (getAssociatedResources() != null)
            sb.append("AssociatedResources: ").append(getAssociatedResources()).append(",");
        if (getEnablePullRequestPreview() != null)
            sb.append("EnablePullRequestPreview: ").append(getEnablePullRequestPreview()).append(",");
        if (getPullRequestEnvironmentName() != null)
            sb.append("PullRequestEnvironmentName: ").append(getPullRequestEnvironmentName()).append(",");
        if (getDestinationBranch() != null)
            sb.append("DestinationBranch: ").append(getDestinationBranch()).append(",");
        if (getSourceBranch() != null)
            sb.append("SourceBranch: ").append(getSourceBranch()).append(",");
        if (getBackendEnvironmentArn() != null)
            sb.append("BackendEnvironmentArn: ").append(getBackendEnvironmentArn()).append(",");
        if (getBackend() != null)
            sb.append("Backend: ").append(getBackend());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof Branch == false)
            return false;
        Branch other = (Branch) obj;
        if (other.getBranchArn() == null ^ this.getBranchArn() == null)
            return false;
        if (other.getBranchArn() != null && other.getBranchArn().equals(this.getBranchArn()) == false)
            return false;
        if (other.getBranchName() == null ^ this.getBranchName() == null)
            return false;
        if (other.getBranchName() != null && other.getBranchName().equals(this.getBranchName()) == false)
            return false;
        if (other.getDescription() == null ^ this.getDescription() == null)
            return false;
        if (other.getDescription() != null && other.getDescription().equals(this.getDescription()) == false)
            return false;
        if (other.getTags() == null ^ this.getTags() == null)
            return false;
        if (other.getTags() != null && other.getTags().equals(this.getTags()) == false)
            return false;
        if (other.getStage() == null ^ this.getStage() == null)
            return false;
        if (other.getStage() != null && other.getStage().equals(this.getStage()) == false)
            return false;
        if (other.getDisplayName() == null ^ this.getDisplayName() == null)
            return false;
        if (other.getDisplayName() != null && other.getDisplayName().equals(this.getDisplayName()) == false)
            return false;
        if (other.getEnableNotification() == null ^ this.getEnableNotification() == null)
            return false;
        if (other.getEnableNotification() != null && other.getEnableNotification().equals(this.getEnableNotification()) == false)
            return false;
        if (other.getCreateTime() == null ^ this.getCreateTime() == null)
            return false;
        if (other.getCreateTime() != null && other.getCreateTime().equals(this.getCreateTime()) == false)
            return false;
        if (other.getUpdateTime() == null ^ this.getUpdateTime() == null)
            return false;
        if (other.getUpdateTime() != null && other.getUpdateTime().equals(this.getUpdateTime()) == false)
            return false;
        if (other.getEnvironmentVariables() == null ^ this.getEnvironmentVariables() == null)
            return false;
        if (other.getEnvironmentVariables() != null && other.getEnvironmentVariables().equals(this.getEnvironmentVariables()) == false)
            return false;
        if (other.getEnableAutoBuild() == null ^ this.getEnableAutoBuild() == null)
            return false;
        if (other.getEnableAutoBuild() != null && other.getEnableAutoBuild().equals(this.getEnableAutoBuild()) == false)
            return false;
        if (other.getCustomDomains() == null ^ this.getCustomDomains() == null)
            return false;
        if (other.getCustomDomains() != null && other.getCustomDomains().equals(this.getCustomDomains()) == false)
            return false;
        if (other.getFramework() == null ^ this.getFramework() == null)
            return false;
        if (other.getFramework() != null && other.getFramework().equals(this.getFramework()) == false)
            return false;
        if (other.getActiveJobId() == null ^ this.getActiveJobId() == null)
            return false;
        if (other.getActiveJobId() != null && other.getActiveJobId().equals(this.getActiveJobId()) == false)
            return false;
        if (other.getTotalNumberOfJobs() == null ^ this.getTotalNumberOfJobs() == null)
            return false;
        if (other.getTotalNumberOfJobs() != null && other.getTotalNumberOfJobs().equals(this.getTotalNumberOfJobs()) == false)
            return false;
        if (other.getEnableBasicAuth() == null ^ this.getEnableBasicAuth() == null)
            return false;
        if (other.getEnableBasicAuth() != null && other.getEnableBasicAuth().equals(this.getEnableBasicAuth()) == false)
            return false;
        if (other.getEnablePerformanceMode() == null ^ this.getEnablePerformanceMode() == null)
            return false;
        if (other.getEnablePerformanceMode() != null && other.getEnablePerformanceMode().equals(this.getEnablePerformanceMode()) == false)
            return false;
        if (other.getThumbnailUrl() == null ^ this.getThumbnailUrl() == null)
            return false;
        if (other.getThumbnailUrl() != null && other.getThumbnailUrl().equals(this.getThumbnailUrl()) == false)
            return false;
        if (other.getBasicAuthCredentials() == null ^ this.getBasicAuthCredentials() == null)
            return false;
        if (other.getBasicAuthCredentials() != null && other.getBasicAuthCredentials().equals(this.getBasicAuthCredentials()) == false)
            return false;
        if (other.getBuildSpec() == null ^ this.getBuildSpec() == null)
            return false;
        if (other.getBuildSpec() != null && other.getBuildSpec().equals(this.getBuildSpec()) == false)
            return false;
        if (other.getTtl() == null ^ this.getTtl() == null)
            return false;
        if (other.getTtl() != null && other.getTtl().equals(this.getTtl()) == false)
            return false;
        if (other.getAssociatedResources() == null ^ this.getAssociatedResources() == null)
            return false;
        if (other.getAssociatedResources() != null && other.getAssociatedResources().equals(this.getAssociatedResources()) == false)
            return false;
        if (other.getEnablePullRequestPreview() == null ^ this.getEnablePullRequestPreview() == null)
            return false;
        if (other.getEnablePullRequestPreview() != null && other.getEnablePullRequestPreview().equals(this.getEnablePullRequestPreview()) == false)
            return false;
        if (other.getPullRequestEnvironmentName() == null ^ this.getPullRequestEnvironmentName() == null)
            return false;
        if (other.getPullRequestEnvironmentName() != null && other.getPullRequestEnvironmentName().equals(this.getPullRequestEnvironmentName()) == false)
            return false;
        if (other.getDestinationBranch() == null ^ this.getDestinationBranch() == null)
            return false;
        if (other.getDestinationBranch() != null && other.getDestinationBranch().equals(this.getDestinationBranch()) == false)
            return false;
        if (other.getSourceBranch() == null ^ this.getSourceBranch() == null)
            return false;
        if (other.getSourceBranch() != null && other.getSourceBranch().equals(this.getSourceBranch()) == false)
            return false;
        if (other.getBackendEnvironmentArn() == null ^ this.getBackendEnvironmentArn() == null)
            return false;
        if (other.getBackendEnvironmentArn() != null && other.getBackendEnvironmentArn().equals(this.getBackendEnvironmentArn()) == false)
            return false;
        if (other.getBackend() == null ^ this.getBackend() == null)
            return false;
        if (other.getBackend() != null && other.getBackend().equals(this.getBackend()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode + ((getBranchArn() == null) ? 0 : getBranchArn().hashCode());
        hashCode = prime * hashCode + ((getBranchName() == null) ? 0 : getBranchName().hashCode());
        hashCode = prime * hashCode + ((getDescription() == null) ? 0 : getDescription().hashCode());
        hashCode = prime * hashCode + ((getTags() == null) ? 0 : getTags().hashCode());
        hashCode = prime * hashCode + ((getStage() == null) ? 0 : getStage().hashCode());
        hashCode = prime * hashCode + ((getDisplayName() == null) ? 0 : getDisplayName().hashCode());
        hashCode = prime * hashCode + ((getEnableNotification() == null) ? 0 : getEnableNotification().hashCode());
        hashCode = prime * hashCode + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        hashCode = prime * hashCode + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
        hashCode = prime * hashCode + ((getEnvironmentVariables() == null) ? 0 : getEnvironmentVariables().hashCode());
        hashCode = prime * hashCode + ((getEnableAutoBuild() == null) ? 0 : getEnableAutoBuild().hashCode());
        hashCode = prime * hashCode + ((getCustomDomains() == null) ? 0 : getCustomDomains().hashCode());
        hashCode = prime * hashCode + ((getFramework() == null) ? 0 : getFramework().hashCode());
        hashCode = prime * hashCode + ((getActiveJobId() == null) ? 0 : getActiveJobId().hashCode());
        hashCode = prime * hashCode + ((getTotalNumberOfJobs() == null) ? 0 : getTotalNumberOfJobs().hashCode());
        hashCode = prime * hashCode + ((getEnableBasicAuth() == null) ? 0 : getEnableBasicAuth().hashCode());
        hashCode = prime * hashCode + ((getEnablePerformanceMode() == null) ? 0 : getEnablePerformanceMode().hashCode());
        hashCode = prime * hashCode + ((getThumbnailUrl() == null) ? 0 : getThumbnailUrl().hashCode());
        hashCode = prime * hashCode + ((getBasicAuthCredentials() == null) ? 0 : getBasicAuthCredentials().hashCode());
        hashCode = prime * hashCode + ((getBuildSpec() == null) ? 0 : getBuildSpec().hashCode());
        hashCode = prime * hashCode + ((getTtl() == null) ? 0 : getTtl().hashCode());
        hashCode = prime * hashCode + ((getAssociatedResources() == null) ? 0 : getAssociatedResources().hashCode());
        hashCode = prime * hashCode + ((getEnablePullRequestPreview() == null) ? 0 : getEnablePullRequestPreview().hashCode());
        hashCode = prime * hashCode + ((getPullRequestEnvironmentName() == null) ? 0 : getPullRequestEnvironmentName().hashCode());
        hashCode = prime * hashCode + ((getDestinationBranch() == null) ? 0 : getDestinationBranch().hashCode());
        hashCode = prime * hashCode + ((getSourceBranch() == null) ? 0 : getSourceBranch().hashCode());
        hashCode = prime * hashCode + ((getBackendEnvironmentArn() == null) ? 0 : getBackendEnvironmentArn().hashCode());
        hashCode = prime * hashCode + ((getBackend() == null) ? 0 : getBackend().hashCode());
        return hashCode;
    }
    @Override
    public Branch clone() {
        try {
            return (Branch) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }
    @com.amazonaws.annotation.SdkInternalApi
    @Override
    public void marshall(ProtocolMarshaller protocolMarshaller) {
        com.amazonaws.services.amplify.model.transform.BranchMarshaller.getInstance().marshall(this, protocolMarshaller);
    }
}