/* * Copyright 2018-2023 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.transfer.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *

* The virtual private cloud (VPC) endpoint settings that are configured for your file transfer protocol-enabled server. * With a VPC endpoint, you can restrict access to your server and resources only within your VPC. To control incoming * internet traffic, invoke the UpdateServer API and attach an Elastic IP address to your server's * endpoint. *

* *

* After May 19, 2021, you won't be able to create a server using EndpointType=VPC_ENDPOINT in your Amazon * Web Servicesaccount if your account hasn't already done so before May 19, 2021. If you have already created servers * with EndpointType=VPC_ENDPOINT in your Amazon Web Servicesaccount on or before May 19, 2021, you will * not be affected. After this date, use EndpointType=VPC. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*
* * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class EndpointDetails implements Serializable, Cloneable, StructuredPojo { /** *

* A list of address allocation IDs that are required to attach an Elastic IP address to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC and it is only valid in * the UpdateServer API. *

*
*/ private java.util.List addressAllocationIds; /** *

* A list of subnet IDs that are required to host your server endpoint in your VPC. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
*/ private java.util.List subnetIds; /** *

* The identifier of the VPC endpoint. *

* *

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*
*/ private String vpcEndpointId; /** *

* The VPC identifier of the VPC in which a server's endpoint will be hosted. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
*/ private String vpcId; /** *

* A list of security groups IDs that are available to attach to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API only if * you are changing the EndpointType from PUBLIC or VPC_ENDPOINT to * VPC. To change security groups associated with your server's VPC endpoint after creation, use the * Amazon EC2 ModifyVpcEndpoint * API. *

*
*/ private java.util.List securityGroupIds; /** *

* A list of address allocation IDs that are required to attach an Elastic IP address to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC and it is only valid in * the UpdateServer API. *

*
* * @return A list of address allocation IDs that are required to attach an Elastic IP address to your server's * endpoint.

*

* This property can only be set when EndpointType is set to VPC and it is only * valid in the UpdateServer API. *

*/ public java.util.List getAddressAllocationIds() { return addressAllocationIds; } /** *

* A list of address allocation IDs that are required to attach an Elastic IP address to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC and it is only valid in * the UpdateServer API. *

*
* * @param addressAllocationIds * A list of address allocation IDs that are required to attach an Elastic IP address to your server's * endpoint.

*

* This property can only be set when EndpointType is set to VPC and it is only * valid in the UpdateServer API. *

*/ public void setAddressAllocationIds(java.util.Collection addressAllocationIds) { if (addressAllocationIds == null) { this.addressAllocationIds = null; return; } this.addressAllocationIds = new java.util.ArrayList(addressAllocationIds); } /** *

* A list of address allocation IDs that are required to attach an Elastic IP address to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC and it is only valid in * the UpdateServer API. *

*
*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setAddressAllocationIds(java.util.Collection)} or {@link #withAddressAllocationIds(java.util.Collection)} * if you want to override the existing values. *

* * @param addressAllocationIds * A list of address allocation IDs that are required to attach an Elastic IP address to your server's * endpoint.

*

* This property can only be set when EndpointType is set to VPC and it is only * valid in the UpdateServer API. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withAddressAllocationIds(String... addressAllocationIds) { if (this.addressAllocationIds == null) { setAddressAllocationIds(new java.util.ArrayList(addressAllocationIds.length)); } for (String ele : addressAllocationIds) { this.addressAllocationIds.add(ele); } return this; } /** *

* A list of address allocation IDs that are required to attach an Elastic IP address to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC and it is only valid in * the UpdateServer API. *

*
* * @param addressAllocationIds * A list of address allocation IDs that are required to attach an Elastic IP address to your server's * endpoint.

*

* This property can only be set when EndpointType is set to VPC and it is only * valid in the UpdateServer API. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withAddressAllocationIds(java.util.Collection addressAllocationIds) { setAddressAllocationIds(addressAllocationIds); return this; } /** *

* A list of subnet IDs that are required to host your server endpoint in your VPC. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
* * @return A list of subnet IDs that are required to host your server endpoint in your VPC.

*

* This property can only be set when EndpointType is set to VPC. *

*/ public java.util.List getSubnetIds() { return subnetIds; } /** *

* A list of subnet IDs that are required to host your server endpoint in your VPC. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
* * @param subnetIds * A list of subnet IDs that are required to host your server endpoint in your VPC.

*

* This property can only be set when EndpointType is set to VPC. *

*/ public void setSubnetIds(java.util.Collection subnetIds) { if (subnetIds == null) { this.subnetIds = null; return; } this.subnetIds = new java.util.ArrayList(subnetIds); } /** *

* A list of subnet IDs that are required to host your server endpoint in your VPC. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setSubnetIds(java.util.Collection)} or {@link #withSubnetIds(java.util.Collection)} if you want to * override the existing values. *

* * @param subnetIds * A list of subnet IDs that are required to host your server endpoint in your VPC.

*

* This property can only be set when EndpointType is set to VPC. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withSubnetIds(String... subnetIds) { if (this.subnetIds == null) { setSubnetIds(new java.util.ArrayList(subnetIds.length)); } for (String ele : subnetIds) { this.subnetIds.add(ele); } return this; } /** *

* A list of subnet IDs that are required to host your server endpoint in your VPC. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
* * @param subnetIds * A list of subnet IDs that are required to host your server endpoint in your VPC.

*

* This property can only be set when EndpointType is set to VPC. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withSubnetIds(java.util.Collection subnetIds) { setSubnetIds(subnetIds); return this; } /** *

* The identifier of the VPC endpoint. *

* *

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*
* * @param vpcEndpointId * The identifier of the VPC endpoint.

*

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*/ public void setVpcEndpointId(String vpcEndpointId) { this.vpcEndpointId = vpcEndpointId; } /** *

* The identifier of the VPC endpoint. *

* *

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*
* * @return The identifier of the VPC endpoint.

*

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*/ public String getVpcEndpointId() { return this.vpcEndpointId; } /** *

* The identifier of the VPC endpoint. *

* *

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

*
* * @param vpcEndpointId * The identifier of the VPC endpoint.

*

* This property can only be set when EndpointType is set to VPC_ENDPOINT. *

*

* For more information, see * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withVpcEndpointId(String vpcEndpointId) { setVpcEndpointId(vpcEndpointId); return this; } /** *

* The VPC identifier of the VPC in which a server's endpoint will be hosted. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
* * @param vpcId * The VPC identifier of the VPC in which a server's endpoint will be hosted.

*

* This property can only be set when EndpointType is set to VPC. *

*/ public void setVpcId(String vpcId) { this.vpcId = vpcId; } /** *

* The VPC identifier of the VPC in which a server's endpoint will be hosted. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
* * @return The VPC identifier of the VPC in which a server's endpoint will be hosted.

*

* This property can only be set when EndpointType is set to VPC. *

*/ public String getVpcId() { return this.vpcId; } /** *

* The VPC identifier of the VPC in which a server's endpoint will be hosted. *

* *

* This property can only be set when EndpointType is set to VPC. *

*
* * @param vpcId * The VPC identifier of the VPC in which a server's endpoint will be hosted.

*

* This property can only be set when EndpointType is set to VPC. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withVpcId(String vpcId) { setVpcId(vpcId); return this; } /** *

* A list of security groups IDs that are available to attach to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API only if * you are changing the EndpointType from PUBLIC or VPC_ENDPOINT to * VPC. To change security groups associated with your server's VPC endpoint after creation, use the * Amazon EC2 ModifyVpcEndpoint * API. *

*
* * @return A list of security groups IDs that are available to attach to your server's endpoint.

*

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API * only if you are changing the EndpointType from PUBLIC or * VPC_ENDPOINT to VPC. To change security groups associated with your server's * VPC endpoint after creation, use the Amazon EC2 ModifyVpcEndpoint API. *

*/ public java.util.List getSecurityGroupIds() { return securityGroupIds; } /** *

* A list of security groups IDs that are available to attach to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API only if * you are changing the EndpointType from PUBLIC or VPC_ENDPOINT to * VPC. To change security groups associated with your server's VPC endpoint after creation, use the * Amazon EC2 ModifyVpcEndpoint * API. *

*
* * @param securityGroupIds * A list of security groups IDs that are available to attach to your server's endpoint.

*

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API * only if you are changing the EndpointType from PUBLIC or * VPC_ENDPOINT to VPC. To change security groups associated with your server's VPC * endpoint after creation, use the Amazon EC2 ModifyVpcEndpoint API. *

*/ public void setSecurityGroupIds(java.util.Collection securityGroupIds) { if (securityGroupIds == null) { this.securityGroupIds = null; return; } this.securityGroupIds = new java.util.ArrayList(securityGroupIds); } /** *

* A list of security groups IDs that are available to attach to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API only if * you are changing the EndpointType from PUBLIC or VPC_ENDPOINT to * VPC. To change security groups associated with your server's VPC endpoint after creation, use the * Amazon EC2 ModifyVpcEndpoint * API. *

*
*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setSecurityGroupIds(java.util.Collection)} or {@link #withSecurityGroupIds(java.util.Collection)} if you * want to override the existing values. *

* * @param securityGroupIds * A list of security groups IDs that are available to attach to your server's endpoint.

*

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API * only if you are changing the EndpointType from PUBLIC or * VPC_ENDPOINT to VPC. To change security groups associated with your server's VPC * endpoint after creation, use the Amazon EC2 ModifyVpcEndpoint API. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withSecurityGroupIds(String... securityGroupIds) { if (this.securityGroupIds == null) { setSecurityGroupIds(new java.util.ArrayList(securityGroupIds.length)); } for (String ele : securityGroupIds) { this.securityGroupIds.add(ele); } return this; } /** *

* A list of security groups IDs that are available to attach to your server's endpoint. *

* *

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API only if * you are changing the EndpointType from PUBLIC or VPC_ENDPOINT to * VPC. To change security groups associated with your server's VPC endpoint after creation, use the * Amazon EC2 ModifyVpcEndpoint * API. *

*
* * @param securityGroupIds * A list of security groups IDs that are available to attach to your server's endpoint.

*

* This property can only be set when EndpointType is set to VPC. *

*

* You can edit the SecurityGroupIds property in the UpdateServer API * only if you are changing the EndpointType from PUBLIC or * VPC_ENDPOINT to VPC. To change security groups associated with your server's VPC * endpoint after creation, use the Amazon EC2 ModifyVpcEndpoint API. *

* @return Returns a reference to this object so that method calls can be chained together. */ public EndpointDetails withSecurityGroupIds(java.util.Collection securityGroupIds) { setSecurityGroupIds(securityGroupIds); 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 (getAddressAllocationIds() != null) sb.append("AddressAllocationIds: ").append(getAddressAllocationIds()).append(","); if (getSubnetIds() != null) sb.append("SubnetIds: ").append(getSubnetIds()).append(","); if (getVpcEndpointId() != null) sb.append("VpcEndpointId: ").append(getVpcEndpointId()).append(","); if (getVpcId() != null) sb.append("VpcId: ").append(getVpcId()).append(","); if (getSecurityGroupIds() != null) sb.append("SecurityGroupIds: ").append(getSecurityGroupIds()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof EndpointDetails == false) return false; EndpointDetails other = (EndpointDetails) obj; if (other.getAddressAllocationIds() == null ^ this.getAddressAllocationIds() == null) return false; if (other.getAddressAllocationIds() != null && other.getAddressAllocationIds().equals(this.getAddressAllocationIds()) == false) return false; if (other.getSubnetIds() == null ^ this.getSubnetIds() == null) return false; if (other.getSubnetIds() != null && other.getSubnetIds().equals(this.getSubnetIds()) == false) return false; if (other.getVpcEndpointId() == null ^ this.getVpcEndpointId() == null) return false; if (other.getVpcEndpointId() != null && other.getVpcEndpointId().equals(this.getVpcEndpointId()) == false) return false; if (other.getVpcId() == null ^ this.getVpcId() == null) return false; if (other.getVpcId() != null && other.getVpcId().equals(this.getVpcId()) == false) return false; if (other.getSecurityGroupIds() == null ^ this.getSecurityGroupIds() == null) return false; if (other.getSecurityGroupIds() != null && other.getSecurityGroupIds().equals(this.getSecurityGroupIds()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getAddressAllocationIds() == null) ? 0 : getAddressAllocationIds().hashCode()); hashCode = prime * hashCode + ((getSubnetIds() == null) ? 0 : getSubnetIds().hashCode()); hashCode = prime * hashCode + ((getVpcEndpointId() == null) ? 0 : getVpcEndpointId().hashCode()); hashCode = prime * hashCode + ((getVpcId() == null) ? 0 : getVpcId().hashCode()); hashCode = prime * hashCode + ((getSecurityGroupIds() == null) ? 0 : getSecurityGroupIds().hashCode()); return hashCode; } @Override public EndpointDetails clone() { try { return (EndpointDetails) 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.transfer.model.transform.EndpointDetailsMarshaller.getInstance().marshall(this, protocolMarshaller); } }