All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
software.amazon.awssdk.services.apigateway.model.UsagePlan Maven / Gradle / Ivy
Go to download
The AWS Java SDK for Amazon API Gateway module holds the client classes that are used for communicating
with Amazon API
Gateway
/*
* 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.apigateway.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.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.traits.MapTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructMap;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructMap;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* Represents a usage plan used to specify who can assess associated API stages. Optionally, target request rate and
* quota limits can be set. In some cases clients can exceed the targets that you set. Don’t rely on usage plans to
* control costs. Consider using Amazon Web Services
* Budgets to monitor costs and WAF to manage API requests.
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class UsagePlan implements SdkPojo, Serializable, ToCopyableBuilder {
private static final SdkField ID_FIELD = SdkField. builder(MarshallingType.STRING).memberName("id")
.getter(getter(UsagePlan::id)).setter(setter(Builder::id))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("id").build()).build();
private static final SdkField NAME_FIELD = SdkField. builder(MarshallingType.STRING).memberName("name")
.getter(getter(UsagePlan::name)).setter(setter(Builder::name))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("name").build()).build();
private static final SdkField DESCRIPTION_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("description").getter(getter(UsagePlan::description)).setter(setter(Builder::description))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("description").build()).build();
private static final SdkField> API_STAGES_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("apiStages")
.getter(getter(UsagePlan::apiStages))
.setter(setter(Builder::apiStages))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("apiStages").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(ApiStage::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField THROTTLE_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("throttle").getter(getter(UsagePlan::throttle))
.setter(setter(Builder::throttle)).constructor(ThrottleSettings::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("throttle").build()).build();
private static final SdkField QUOTA_FIELD = SdkField. builder(MarshallingType.SDK_POJO)
.memberName("quota").getter(getter(UsagePlan::quota)).setter(setter(Builder::quota))
.constructor(QuotaSettings::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("quota").build()).build();
private static final SdkField PRODUCT_CODE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("productCode").getter(getter(UsagePlan::productCode)).setter(setter(Builder::productCode))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("productCode").build()).build();
private static final SdkField> TAGS_FIELD = SdkField
.> builder(MarshallingType.MAP)
.memberName("tags")
.getter(getter(UsagePlan::tags))
.setter(setter(Builder::tags))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("tags").build(),
MapTrait.builder()
.keyLocationName("key")
.valueLocationName("value")
.valueFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("value").build()).build()).build()).build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(ID_FIELD, NAME_FIELD,
DESCRIPTION_FIELD, API_STAGES_FIELD, THROTTLE_FIELD, QUOTA_FIELD, PRODUCT_CODE_FIELD, TAGS_FIELD));
private static final long serialVersionUID = 1L;
private final String id;
private final String name;
private final String description;
private final List apiStages;
private final ThrottleSettings throttle;
private final QuotaSettings quota;
private final String productCode;
private final Map tags;
private UsagePlan(BuilderImpl builder) {
this.id = builder.id;
this.name = builder.name;
this.description = builder.description;
this.apiStages = builder.apiStages;
this.throttle = builder.throttle;
this.quota = builder.quota;
this.productCode = builder.productCode;
this.tags = builder.tags;
}
/**
*
* The identifier of a UsagePlan resource.
*
*
* @return The identifier of a UsagePlan resource.
*/
public final String id() {
return id;
}
/**
*
* The name of a usage plan.
*
*
* @return The name of a usage plan.
*/
public final String name() {
return name;
}
/**
*
* The description of a usage plan.
*
*
* @return The description of a usage plan.
*/
public final String description() {
return description;
}
/**
* For responses, this returns true if the service returned a value for the ApiStages property. This DOES NOT check
* that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). This is
* useful because the SDK will never return a null collection or map, but you may need to differentiate between the
* service returning nothing (or null) and the service returning an empty collection or map. For requests, this
* returns true if a value for the property was specified in the request builder, and false if a value was not
* specified.
*/
public final boolean hasApiStages() {
return apiStages != null && !(apiStages instanceof SdkAutoConstructList);
}
/**
*
* The associated API stages of a usage plan.
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasApiStages} method.
*
*
* @return The associated API stages of a usage plan.
*/
public final List apiStages() {
return apiStages;
}
/**
*
* A map containing method level throttling information for API stage in a usage plan.
*
*
* @return A map containing method level throttling information for API stage in a usage plan.
*/
public final ThrottleSettings throttle() {
return throttle;
}
/**
*
* The target maximum number of permitted requests per a given unit time interval.
*
*
* @return The target maximum number of permitted requests per a given unit time interval.
*/
public final QuotaSettings quota() {
return quota;
}
/**
*
* The Amazon Web Services Marketplace product identifier to associate with the usage plan as a SaaS product on the
* Amazon Web Services Marketplace.
*
*
* @return The Amazon Web Services Marketplace product identifier to associate with the usage plan as a SaaS product
* on the Amazon Web Services Marketplace.
*/
public final String productCode() {
return productCode;
}
/**
* For responses, this returns true if the service returned a value for the Tags property. This DOES NOT check that
* the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). This is useful
* because the SDK will never return a null collection or map, but you may need to differentiate between the service
* returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true
* if a value for the property was specified in the request builder, and false if a value was not specified.
*/
public final boolean hasTags() {
return tags != null && !(tags instanceof SdkAutoConstructMap);
}
/**
*
* The collection of tags. Each tag element is associated with a given resource.
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasTags} method.
*
*
* @return The collection of tags. Each tag element is associated with a given resource.
*/
public final Map tags() {
return tags;
}
@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 final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(id());
hashCode = 31 * hashCode + Objects.hashCode(name());
hashCode = 31 * hashCode + Objects.hashCode(description());
hashCode = 31 * hashCode + Objects.hashCode(hasApiStages() ? apiStages() : null);
hashCode = 31 * hashCode + Objects.hashCode(throttle());
hashCode = 31 * hashCode + Objects.hashCode(quota());
hashCode = 31 * hashCode + Objects.hashCode(productCode());
hashCode = 31 * hashCode + Objects.hashCode(hasTags() ? tags() : null);
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof UsagePlan)) {
return false;
}
UsagePlan other = (UsagePlan) obj;
return Objects.equals(id(), other.id()) && Objects.equals(name(), other.name())
&& Objects.equals(description(), other.description()) && hasApiStages() == other.hasApiStages()
&& Objects.equals(apiStages(), other.apiStages()) && Objects.equals(throttle(), other.throttle())
&& Objects.equals(quota(), other.quota()) && Objects.equals(productCode(), other.productCode())
&& hasTags() == other.hasTags() && Objects.equals(tags(), other.tags());
}
/**
* Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
* redacted from this string using a placeholder value.
*/
@Override
public final String toString() {
return ToString.builder("UsagePlan").add("Id", id()).add("Name", name()).add("Description", description())
.add("ApiStages", hasApiStages() ? apiStages() : null).add("Throttle", throttle()).add("Quota", quota())
.add("ProductCode", productCode()).add("Tags", hasTags() ? tags() : null).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "id":
return Optional.ofNullable(clazz.cast(id()));
case "name":
return Optional.ofNullable(clazz.cast(name()));
case "description":
return Optional.ofNullable(clazz.cast(description()));
case "apiStages":
return Optional.ofNullable(clazz.cast(apiStages()));
case "throttle":
return Optional.ofNullable(clazz.cast(throttle()));
case "quota":
return Optional.ofNullable(clazz.cast(quota()));
case "productCode":
return Optional.ofNullable(clazz.cast(productCode()));
case "tags":
return Optional.ofNullable(clazz.cast(tags()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function getter(Function g) {
return obj -> g.apply((UsagePlan) obj);
}
private static BiConsumer setter(BiConsumer s) {
return (obj, val) -> s.accept((Builder) obj, val);
}
public interface Builder extends SdkPojo, CopyableBuilder {
/**
*
* The identifier of a UsagePlan resource.
*
*
* @param id
* The identifier of a UsagePlan resource.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder id(String id);
/**
*
* The name of a usage plan.
*
*
* @param name
* The name of a usage plan.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder name(String name);
/**
*
* The description of a usage plan.
*
*
* @param description
* The description of a usage plan.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder description(String description);
/**
*
* The associated API stages of a usage plan.
*
*
* @param apiStages
* The associated API stages of a usage plan.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder apiStages(Collection apiStages);
/**
*
* The associated API stages of a usage plan.
*
*
* @param apiStages
* The associated API stages of a usage plan.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder apiStages(ApiStage... apiStages);
/**
*
* The associated API stages of a usage plan.
*
* This is a convenience method that creates an instance of the
* {@link software.amazon.awssdk.services.apigateway.model.ApiStage.Builder} avoiding the need to create one
* manually via {@link software.amazon.awssdk.services.apigateway.model.ApiStage#builder()}.
*
*
* When the {@link Consumer} completes,
* {@link software.amazon.awssdk.services.apigateway.model.ApiStage.Builder#build()} is called immediately and
* its result is passed to {@link #apiStages(List)}.
*
* @param apiStages
* a consumer that will call methods on
* {@link software.amazon.awssdk.services.apigateway.model.ApiStage.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #apiStages(java.util.Collection)
*/
Builder apiStages(Consumer... apiStages);
/**
*
* A map containing method level throttling information for API stage in a usage plan.
*
*
* @param throttle
* A map containing method level throttling information for API stage in a usage plan.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder throttle(ThrottleSettings throttle);
/**
*
* A map containing method level throttling information for API stage in a usage plan.
*
* This is a convenience method that creates an instance of the {@link ThrottleSettings.Builder} avoiding the
* need to create one manually via {@link ThrottleSettings#builder()}.
*
*
* When the {@link Consumer} completes, {@link ThrottleSettings.Builder#build()} is called immediately and its
* result is passed to {@link #throttle(ThrottleSettings)}.
*
* @param throttle
* a consumer that will call methods on {@link ThrottleSettings.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #throttle(ThrottleSettings)
*/
default Builder throttle(Consumer throttle) {
return throttle(ThrottleSettings.builder().applyMutation(throttle).build());
}
/**
*
* The target maximum number of permitted requests per a given unit time interval.
*
*
* @param quota
* The target maximum number of permitted requests per a given unit time interval.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder quota(QuotaSettings quota);
/**
*
* The target maximum number of permitted requests per a given unit time interval.
*
* This is a convenience method that creates an instance of the {@link QuotaSettings.Builder} avoiding the need
* to create one manually via {@link QuotaSettings#builder()}.
*
*
* When the {@link Consumer} completes, {@link QuotaSettings.Builder#build()} is called immediately and its
* result is passed to {@link #quota(QuotaSettings)}.
*
* @param quota
* a consumer that will call methods on {@link QuotaSettings.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #quota(QuotaSettings)
*/
default Builder quota(Consumer quota) {
return quota(QuotaSettings.builder().applyMutation(quota).build());
}
/**
*
* The Amazon Web Services Marketplace product identifier to associate with the usage plan as a SaaS product on
* the Amazon Web Services Marketplace.
*
*
* @param productCode
* The Amazon Web Services Marketplace product identifier to associate with the usage plan as a SaaS
* product on the Amazon Web Services Marketplace.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder productCode(String productCode);
/**
*
* The collection of tags. Each tag element is associated with a given resource.
*
*
* @param tags
* The collection of tags. Each tag element is associated with a given resource.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder tags(Map tags);
}
static final class BuilderImpl implements Builder {
private String id;
private String name;
private String description;
private List apiStages = DefaultSdkAutoConstructList.getInstance();
private ThrottleSettings throttle;
private QuotaSettings quota;
private String productCode;
private Map tags = DefaultSdkAutoConstructMap.getInstance();
private BuilderImpl() {
}
private BuilderImpl(UsagePlan model) {
id(model.id);
name(model.name);
description(model.description);
apiStages(model.apiStages);
throttle(model.throttle);
quota(model.quota);
productCode(model.productCode);
tags(model.tags);
}
public final String getId() {
return id;
}
public final void setId(String id) {
this.id = id;
}
@Override
public final Builder id(String id) {
this.id = id;
return this;
}
public final String getName() {
return name;
}
public final void setName(String name) {
this.name = name;
}
@Override
public final Builder name(String name) {
this.name = name;
return this;
}
public final String getDescription() {
return description;
}
public final void setDescription(String description) {
this.description = description;
}
@Override
public final Builder description(String description) {
this.description = description;
return this;
}
public final List getApiStages() {
List result = ListOfApiStageCopier.copyToBuilder(this.apiStages);
if (result instanceof SdkAutoConstructList) {
return null;
}
return result;
}
public final void setApiStages(Collection apiStages) {
this.apiStages = ListOfApiStageCopier.copyFromBuilder(apiStages);
}
@Override
public final Builder apiStages(Collection apiStages) {
this.apiStages = ListOfApiStageCopier.copy(apiStages);
return this;
}
@Override
@SafeVarargs
public final Builder apiStages(ApiStage... apiStages) {
apiStages(Arrays.asList(apiStages));
return this;
}
@Override
@SafeVarargs
public final Builder apiStages(Consumer... apiStages) {
apiStages(Stream.of(apiStages).map(c -> ApiStage.builder().applyMutation(c).build()).collect(Collectors.toList()));
return this;
}
public final ThrottleSettings.Builder getThrottle() {
return throttle != null ? throttle.toBuilder() : null;
}
public final void setThrottle(ThrottleSettings.BuilderImpl throttle) {
this.throttle = throttle != null ? throttle.build() : null;
}
@Override
public final Builder throttle(ThrottleSettings throttle) {
this.throttle = throttle;
return this;
}
public final QuotaSettings.Builder getQuota() {
return quota != null ? quota.toBuilder() : null;
}
public final void setQuota(QuotaSettings.BuilderImpl quota) {
this.quota = quota != null ? quota.build() : null;
}
@Override
public final Builder quota(QuotaSettings quota) {
this.quota = quota;
return this;
}
public final String getProductCode() {
return productCode;
}
public final void setProductCode(String productCode) {
this.productCode = productCode;
}
@Override
public final Builder productCode(String productCode) {
this.productCode = productCode;
return this;
}
public final Map getTags() {
if (tags instanceof SdkAutoConstructMap) {
return null;
}
return tags;
}
public final void setTags(Map tags) {
this.tags = MapOfStringToStringCopier.copy(tags);
}
@Override
public final Builder tags(Map tags) {
this.tags = MapOfStringToStringCopier.copy(tags);
return this;
}
@Override
public UsagePlan build() {
return new UsagePlan(this);
}
@Override
public List> sdkFields() {
return SDK_FIELDS;
}
}
}