
software.amazon.awssdk.services.ssm.model.TargetLocation Maven / Gradle / Ivy
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.ssm.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Function;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* The combination of AWS Regions and accounts targeted by the current Automation execution.
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class TargetLocation implements SdkPojo, Serializable, ToCopyableBuilder {
private static final SdkField> ACCOUNTS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.getter(getter(TargetLocation::accounts))
.setter(setter(Builder::accounts))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Accounts").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField> REGIONS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.getter(getter(TargetLocation::regions))
.setter(setter(Builder::regions))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Regions").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField TARGET_LOCATION_MAX_CONCURRENCY_FIELD = SdkField
. builder(MarshallingType.STRING)
.getter(getter(TargetLocation::targetLocationMaxConcurrency))
.setter(setter(Builder::targetLocationMaxConcurrency))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("TargetLocationMaxConcurrency")
.build()).build();
private static final SdkField TARGET_LOCATION_MAX_ERRORS_FIELD = SdkField. builder(MarshallingType.STRING)
.getter(getter(TargetLocation::targetLocationMaxErrors)).setter(setter(Builder::targetLocationMaxErrors))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("TargetLocationMaxErrors").build())
.build();
private static final SdkField EXECUTION_ROLE_NAME_FIELD = SdkField. builder(MarshallingType.STRING)
.getter(getter(TargetLocation::executionRoleName)).setter(setter(Builder::executionRoleName))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ExecutionRoleName").build()).build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(ACCOUNTS_FIELD, REGIONS_FIELD,
TARGET_LOCATION_MAX_CONCURRENCY_FIELD, TARGET_LOCATION_MAX_ERRORS_FIELD, EXECUTION_ROLE_NAME_FIELD));
private static final long serialVersionUID = 1L;
private final List accounts;
private final List regions;
private final String targetLocationMaxConcurrency;
private final String targetLocationMaxErrors;
private final String executionRoleName;
private TargetLocation(BuilderImpl builder) {
this.accounts = builder.accounts;
this.regions = builder.regions;
this.targetLocationMaxConcurrency = builder.targetLocationMaxConcurrency;
this.targetLocationMaxErrors = builder.targetLocationMaxErrors;
this.executionRoleName = builder.executionRoleName;
}
/**
* Returns true if the Accounts property was specified by the sender (it may be empty), or false if the sender did
* not specify the value (it will be empty). For responses returned by the SDK, the sender is the AWS service.
*/
public boolean hasAccounts() {
return accounts != null && !(accounts instanceof SdkAutoConstructList);
}
/**
*
* The AWS accounts targeted by the current Automation execution.
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* You can use {@link #hasAccounts()} to see if a value was sent in this field.
*
*
* @return The AWS accounts targeted by the current Automation execution.
*/
public List accounts() {
return accounts;
}
/**
* Returns true if the Regions property was specified by the sender (it may be empty), or false if the sender did
* not specify the value (it will be empty). For responses returned by the SDK, the sender is the AWS service.
*/
public boolean hasRegions() {
return regions != null && !(regions instanceof SdkAutoConstructList);
}
/**
*
* The AWS Regions targeted by the current Automation execution.
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* You can use {@link #hasRegions()} to see if a value was sent in this field.
*
*
* @return The AWS Regions targeted by the current Automation execution.
*/
public List regions() {
return regions;
}
/**
*
* The maximum number of AWS accounts and AWS regions allowed to run the Automation concurrently
*
*
* @return The maximum number of AWS accounts and AWS regions allowed to run the Automation concurrently
*/
public String targetLocationMaxConcurrency() {
return targetLocationMaxConcurrency;
}
/**
*
* The maximum number of errors allowed before the system stops queueing additional Automation executions for the
* currently running Automation.
*
*
* @return The maximum number of errors allowed before the system stops queueing additional Automation executions
* for the currently running Automation.
*/
public String targetLocationMaxErrors() {
return targetLocationMaxErrors;
}
/**
*
* The Automation execution role used by the currently running Automation.
*
*
* @return The Automation execution role used by the currently running Automation.
*/
public String executionRoleName() {
return executionRoleName;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class extends Builder> serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(accounts());
hashCode = 31 * hashCode + Objects.hashCode(regions());
hashCode = 31 * hashCode + Objects.hashCode(targetLocationMaxConcurrency());
hashCode = 31 * hashCode + Objects.hashCode(targetLocationMaxErrors());
hashCode = 31 * hashCode + Objects.hashCode(executionRoleName());
return hashCode;
}
@Override
public boolean equals(Object obj) {
return equalsBySdkFields(obj);
}
@Override
public boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof TargetLocation)) {
return false;
}
TargetLocation other = (TargetLocation) obj;
return Objects.equals(accounts(), other.accounts()) && Objects.equals(regions(), other.regions())
&& Objects.equals(targetLocationMaxConcurrency(), other.targetLocationMaxConcurrency())
&& Objects.equals(targetLocationMaxErrors(), other.targetLocationMaxErrors())
&& Objects.equals(executionRoleName(), other.executionRoleName());
}
/**
* Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
* redacted from this string using a placeholder value.
*/
@Override
public String toString() {
return ToString.builder("TargetLocation").add("Accounts", accounts()).add("Regions", regions())
.add("TargetLocationMaxConcurrency", targetLocationMaxConcurrency())
.add("TargetLocationMaxErrors", targetLocationMaxErrors()).add("ExecutionRoleName", executionRoleName()).build();
}
public Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "Accounts":
return Optional.ofNullable(clazz.cast(accounts()));
case "Regions":
return Optional.ofNullable(clazz.cast(regions()));
case "TargetLocationMaxConcurrency":
return Optional.ofNullable(clazz.cast(targetLocationMaxConcurrency()));
case "TargetLocationMaxErrors":
return Optional.ofNullable(clazz.cast(targetLocationMaxErrors()));
case "ExecutionRoleName":
return Optional.ofNullable(clazz.cast(executionRoleName()));
default:
return Optional.empty();
}
}
@Override
public List> sdkFields() {
return SDK_FIELDS;
}
private static Function