/* * Copyright 2012-2017 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.cloudfront.model; import java.io.Serializable; import javax.annotation.Generated; /** * <p> * A complex type that describes the Amazon S3 bucket or the HTTP server (for example, a web server) from which * CloudFront gets your files. You must create at least one origin. * </p> * <p> * For the current limit on the number of origins that you can create for a distribution, see <a * href="http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_cloudfront">Amazon CloudFront * Limits</a> in the <i>AWS General Reference</i>. * </p> * * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/Origin" target="_top">AWS API * Documentation</a> */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class Origin implements Serializable, Cloneable { /** * <p> * A unique identifier for the origin. The value of <code>Id</code> must be unique within the distribution. * </p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another cache * behavior, you indicate the origin to which you want the cache behavior to route requests by specifying the value * of the <code>Id</code> element for that origin. When a request matches the path pattern for that cache behavior, * CloudFront routes the request to the specified origin. For more information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> */ private String id; /** * <p> * <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for * this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>. * </p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the <code>s3-accelerate</code> * endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get objects for * this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or * underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> * </ul> */ private String domainName; /** * <p> * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 bucket or * your custom origin. When you include the <code>OriginPath</code> element, specify the directory name, beginning * with a <code>/</code>. CloudFront appends the directory name to the value of <code>DomainName</code>, for * example, <code>example.com/production</code>. Do not include a <code>/</code> at the end of the directory name. * </p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon S3 for * <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to Amazon S3 * for <code>myawsbucket/production/acme/index.html</code>. * </p> */ private String originPath; /** * <p> * A complex type that contains names and values for the custom headers that you want. * </p> */ private CustomHeaders customHeaders; /** * <p> * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the * <code>CustomOriginConfig</code> element instead. * </p> */ private S3OriginConfig s3OriginConfig; /** * <p> * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the * <code>S3OriginConfig</code> element instead. * </p> */ private CustomOriginConfig customOriginConfig; /** * <p> * A unique identifier for the origin. The value of <code>Id</code> must be unique within the distribution. * </p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another cache * behavior, you indicate the origin to which you want the cache behavior to route requests by specifying the value * of the <code>Id</code> element for that origin. When a request matches the path pattern for that cache behavior, * CloudFront routes the request to the specified origin. For more information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> * * @param id * A unique identifier for the origin. The value of <code>Id</code> must be unique within the * distribution.</p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another * cache behavior, you indicate the origin to which you want the cache behavior to route requests by * specifying the value of the <code>Id</code> element for that origin. When a request matches the path * pattern for that cache behavior, CloudFront routes the request to the specified origin. For more * information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. */ public void setId(String id) { this.id = id; } /** * <p> * A unique identifier for the origin. The value of <code>Id</code> must be unique within the distribution. * </p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another cache * behavior, you indicate the origin to which you want the cache behavior to route requests by specifying the value * of the <code>Id</code> element for that origin. When a request matches the path pattern for that cache behavior, * CloudFront routes the request to the specified origin. For more information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> * * @return A unique identifier for the origin. The value of <code>Id</code> must be unique within the * distribution.</p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another * cache behavior, you indicate the origin to which you want the cache behavior to route requests by * specifying the value of the <code>Id</code> element for that origin. When a request matches the path * pattern for that cache behavior, CloudFront routes the request to the specified origin. For more * information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. */ public String getId() { return this.id; } /** * <p> * A unique identifier for the origin. The value of <code>Id</code> must be unique within the distribution. * </p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another cache * behavior, you indicate the origin to which you want the cache behavior to route requests by specifying the value * of the <code>Id</code> element for that origin. When a request matches the path pattern for that cache behavior, * CloudFront routes the request to the specified origin. For more information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> * * @param id * A unique identifier for the origin. The value of <code>Id</code> must be unique within the * distribution.</p> * <p> * When you specify the value of <code>TargetOriginId</code> for the default cache behavior or for another * cache behavior, you indicate the origin to which you want the cache behavior to route requests by * specifying the value of the <code>Id</code> element for that origin. When a request matches the path * pattern for that cache behavior, CloudFront routes the request to the specified origin. For more * information, see <a href= * "http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior" * >Cache Behavior Settings</a> in the <i>Amazon CloudFront Developer Guide</i>. * @return Returns a reference to this object so that method calls can be chained together. */ public Origin withId(String id) { setId(id); return this; } /** * <p> * <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for * this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>. * </p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the <code>s3-accelerate</code> * endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get objects for * this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or * underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> * </ul> * * @param domainName * <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get * objects for this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>.</p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the * <code>s3-accelerate</code> endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get * objects for this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or * underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> */ public void setDomainName(String domainName) { this.domainName = domainName; } /** * <p> * <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for * this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>. * </p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the <code>s3-accelerate</code> * endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get objects for * this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or * underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> * </ul> * * @return <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get * objects for this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>.</p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the * <code>s3-accelerate</code> endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get * objects for this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), * or underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> */ public String getDomainName() { return this.domainName; } /** * <p> * <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for * this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>. * </p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the <code>s3-accelerate</code> * endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get objects for * this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or * underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> * </ul> * * @param domainName * <b>Amazon S3 origins</b>: The DNS name of the Amazon S3 bucket from which you want CloudFront to get * objects for this origin, for example, <code>myawsbucket.s3.amazonaws.com</code>.</p> * <p> * Constraints for Amazon S3 origins: * </p> * <ul> * <li> * <p> * If you configured Amazon S3 Transfer Acceleration for your bucket, do not specify the * <code>s3-accelerate</code> endpoint for <code>DomainName</code>. * </p> * </li> * <li> * <p> * The bucket name must be between 3 and 63 characters long (inclusive). * </p> * </li> * <li> * <p> * The bucket name must contain only lowercase characters, numbers, periods, underscores, and dashes. * </p> * </li> * <li> * <p> * The bucket name must not contain adjacent periods. * </p> * </li> * </ul> * <p> * <b>Custom Origins</b>: The DNS domain name for the HTTP server from which you want CloudFront to get * objects for this origin, for example, <code>www.example.com</code>. * </p> * <p> * Constraints for custom origins: * </p> * <ul> * <li> * <p> * <code>DomainName</code> must be a valid DNS name that contains only a-z, A-Z, 0-9, dot (.), hyphen (-), or * underscore (_) characters. * </p> * </li> * <li> * <p> * The name cannot exceed 128 characters. * </p> * </li> * @return Returns a reference to this object so that method calls can be chained together. */ public Origin withDomainName(String domainName) { setDomainName(domainName); return this; } /** * <p> * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 bucket or * your custom origin. When you include the <code>OriginPath</code> element, specify the directory name, beginning * with a <code>/</code>. CloudFront appends the directory name to the value of <code>DomainName</code>, for * example, <code>example.com/production</code>. Do not include a <code>/</code> at the end of the directory name. * </p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon S3 for * <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to Amazon S3 * for <code>myawsbucket/production/acme/index.html</code>. * </p> * * @param originPath * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 * bucket or your custom origin. When you include the <code>OriginPath</code> element, specify the directory * name, beginning with a <code>/</code>. CloudFront appends the directory name to the value of * <code>DomainName</code>, for example, <code>example.com/production</code>. Do not include a <code>/</code> * at the end of the directory name.</p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon * S3 for <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to * Amazon S3 for <code>myawsbucket/production/acme/index.html</code>. */ public void setOriginPath(String originPath) { this.originPath = originPath; } /** * <p> * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 bucket or * your custom origin. When you include the <code>OriginPath</code> element, specify the directory name, beginning * with a <code>/</code>. CloudFront appends the directory name to the value of <code>DomainName</code>, for * example, <code>example.com/production</code>. Do not include a <code>/</code> at the end of the directory name. * </p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon S3 for * <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to Amazon S3 * for <code>myawsbucket/production/acme/index.html</code>. * </p> * * @return An optional element that causes CloudFront to request your content from a directory in your Amazon S3 * bucket or your custom origin. When you include the <code>OriginPath</code> element, specify the directory * name, beginning with a <code>/</code>. CloudFront appends the directory name to the value of * <code>DomainName</code>, for example, <code>example.com/production</code>. Do not include a * <code>/</code> at the end of the directory name.</p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon * S3 for <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to * Amazon S3 for <code>myawsbucket/production/acme/index.html</code>. */ public String getOriginPath() { return this.originPath; } /** * <p> * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 bucket or * your custom origin. When you include the <code>OriginPath</code> element, specify the directory name, beginning * with a <code>/</code>. CloudFront appends the directory name to the value of <code>DomainName</code>, for * example, <code>example.com/production</code>. Do not include a <code>/</code> at the end of the directory name. * </p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon S3 for * <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to Amazon S3 * for <code>myawsbucket/production/acme/index.html</code>. * </p> * * @param originPath * An optional element that causes CloudFront to request your content from a directory in your Amazon S3 * bucket or your custom origin. When you include the <code>OriginPath</code> element, specify the directory * name, beginning with a <code>/</code>. CloudFront appends the directory name to the value of * <code>DomainName</code>, for example, <code>example.com/production</code>. Do not include a <code>/</code> * at the end of the directory name.</p> * <p> * For example, suppose you've specified the following values for your distribution: * </p> * <ul> * <li> * <p> * <code>DomainName</code>: An Amazon S3 bucket named <code>myawsbucket</code>. * </p> * </li> * <li> * <p> * <code>OriginPath</code>: <code>/production</code> * </p> * </li> * <li> * <p> * <code>CNAME</code>: <code>example.com</code> * </p> * </li> * </ul> * <p> * When a user enters <code>example.com/index.html</code> in a browser, CloudFront sends a request to Amazon * S3 for <code>myawsbucket/production/index.html</code>. * </p> * <p> * When a user enters <code>example.com/acme/index.html</code> in a browser, CloudFront sends a request to * Amazon S3 for <code>myawsbucket/production/acme/index.html</code>. * @return Returns a reference to this object so that method calls can be chained together. */ public Origin withOriginPath(String originPath) { setOriginPath(originPath); return this; } /** * <p> * A complex type that contains names and values for the custom headers that you want. * </p> * * @param customHeaders * A complex type that contains names and values for the custom headers that you want. */ public void setCustomHeaders(CustomHeaders customHeaders) { this.customHeaders = customHeaders; } /** * <p> * A complex type that contains names and values for the custom headers that you want. * </p> * * @return A complex type that contains names and values for the custom headers that you want. */ public CustomHeaders getCustomHeaders() { return this.customHeaders; } /** * <p> * A complex type that contains names and values for the custom headers that you want. * </p> * * @param customHeaders * A complex type that contains names and values for the custom headers that you want. * @return Returns a reference to this object so that method calls can be chained together. */ public Origin withCustomHeaders(CustomHeaders customHeaders) { setCustomHeaders(customHeaders); return this; } /** * <p> * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the * <code>CustomOriginConfig</code> element instead. * </p> * * @param s3OriginConfig * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use * the <code>CustomOriginConfig</code> element instead. */ public void setS3OriginConfig(S3OriginConfig s3OriginConfig) { this.s3OriginConfig = s3OriginConfig; } /** * <p> * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the * <code>CustomOriginConfig</code> element instead. * </p> * * @return A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, * use the <code>CustomOriginConfig</code> element instead. */ public S3OriginConfig getS3OriginConfig() { return this.s3OriginConfig; } /** * <p> * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the * <code>CustomOriginConfig</code> element instead. * </p> * * @param s3OriginConfig * A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use * the <code>CustomOriginConfig</code> element instead. * @return Returns a reference to this object so that method calls can be chained together. */ public Origin withS3OriginConfig(S3OriginConfig s3OriginConfig) { setS3OriginConfig(s3OriginConfig); return this; } /** * <p> * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the * <code>S3OriginConfig</code> element instead. * </p> * * @param customOriginConfig * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use * the <code>S3OriginConfig</code> element instead. */ public void setCustomOriginConfig(CustomOriginConfig customOriginConfig) { this.customOriginConfig = customOriginConfig; } /** * <p> * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the * <code>S3OriginConfig</code> element instead. * </p> * * @return A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use * the <code>S3OriginConfig</code> element instead. */ public CustomOriginConfig getCustomOriginConfig() { return this.customOriginConfig; } /** * <p> * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the * <code>S3OriginConfig</code> element instead. * </p> * * @param customOriginConfig * A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use * the <code>S3OriginConfig</code> element instead. * @return Returns a reference to this object so that method calls can be chained together. */ public Origin withCustomOriginConfig(CustomOriginConfig customOriginConfig) { setCustomOriginConfig(customOriginConfig); return this; } /** * Returns a string representation of this object; useful for testing and debugging. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getId() != null) sb.append("Id: ").append(getId()).append(","); if (getDomainName() != null) sb.append("DomainName: ").append(getDomainName()).append(","); if (getOriginPath() != null) sb.append("OriginPath: ").append(getOriginPath()).append(","); if (getCustomHeaders() != null) sb.append("CustomHeaders: ").append(getCustomHeaders()).append(","); if (getS3OriginConfig() != null) sb.append("S3OriginConfig: ").append(getS3OriginConfig()).append(","); if (getCustomOriginConfig() != null) sb.append("CustomOriginConfig: ").append(getCustomOriginConfig()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof Origin == false) return false; Origin other = (Origin) obj; if (other.getId() == null ^ this.getId() == null) return false; if (other.getId() != null && other.getId().equals(this.getId()) == false) return false; if (other.getDomainName() == null ^ this.getDomainName() == null) return false; if (other.getDomainName() != null && other.getDomainName().equals(this.getDomainName()) == false) return false; if (other.getOriginPath() == null ^ this.getOriginPath() == null) return false; if (other.getOriginPath() != null && other.getOriginPath().equals(this.getOriginPath()) == false) return false; if (other.getCustomHeaders() == null ^ this.getCustomHeaders() == null) return false; if (other.getCustomHeaders() != null && other.getCustomHeaders().equals(this.getCustomHeaders()) == false) return false; if (other.getS3OriginConfig() == null ^ this.getS3OriginConfig() == null) return false; if (other.getS3OriginConfig() != null && other.getS3OriginConfig().equals(this.getS3OriginConfig()) == false) return false; if (other.getCustomOriginConfig() == null ^ this.getCustomOriginConfig() == null) return false; if (other.getCustomOriginConfig() != null && other.getCustomOriginConfig().equals(this.getCustomOriginConfig()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getId() == null) ? 0 : getId().hashCode()); hashCode = prime * hashCode + ((getDomainName() == null) ? 0 : getDomainName().hashCode()); hashCode = prime * hashCode + ((getOriginPath() == null) ? 0 : getOriginPath().hashCode()); hashCode = prime * hashCode + ((getCustomHeaders() == null) ? 0 : getCustomHeaders().hashCode()); hashCode = prime * hashCode + ((getS3OriginConfig() == null) ? 0 : getS3OriginConfig().hashCode()); hashCode = prime * hashCode + ((getCustomOriginConfig() == null) ? 0 : getCustomOriginConfig().hashCode()); return hashCode; } @Override public Origin clone() { try { return (Origin) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } }