All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.shield.model.AttackProperty 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.shield.model;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
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.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;

/**
 * 

* Details of a Shield event. This is provided as part of an AttackDetail. *

*/ @Generated("software.amazon.awssdk:codegen") public final class AttackProperty implements SdkPojo, Serializable, ToCopyableBuilder { private static final SdkField ATTACK_LAYER_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("AttackLayer").getter(getter(AttackProperty::attackLayerAsString)).setter(setter(Builder::attackLayer)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AttackLayer").build()).build(); private static final SdkField ATTACK_PROPERTY_IDENTIFIER_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("AttackPropertyIdentifier").getter(getter(AttackProperty::attackPropertyIdentifierAsString)) .setter(setter(Builder::attackPropertyIdentifier)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AttackPropertyIdentifier").build()) .build(); private static final SdkField> TOP_CONTRIBUTORS_FIELD = SdkField .> builder(MarshallingType.LIST) .memberName("TopContributors") .getter(getter(AttackProperty::topContributors)) .setter(setter(Builder::topContributors)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("TopContributors").build(), ListTrait .builder() .memberLocationName(null) .memberFieldInfo( SdkField. builder(MarshallingType.SDK_POJO) .constructor(Contributor::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD) .locationName("member").build()).build()).build()).build(); private static final SdkField UNIT_FIELD = SdkField. builder(MarshallingType.STRING).memberName("Unit") .getter(getter(AttackProperty::unitAsString)).setter(setter(Builder::unit)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Unit").build()).build(); private static final SdkField TOTAL_FIELD = SdkField. builder(MarshallingType.LONG).memberName("Total") .getter(getter(AttackProperty::total)).setter(setter(Builder::total)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Total").build()).build(); private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(ATTACK_LAYER_FIELD, ATTACK_PROPERTY_IDENTIFIER_FIELD, TOP_CONTRIBUTORS_FIELD, UNIT_FIELD, TOTAL_FIELD)); private static final Map> SDK_NAME_TO_FIELD = Collections .unmodifiableMap(new HashMap>() { { put("AttackLayer", ATTACK_LAYER_FIELD); put("AttackPropertyIdentifier", ATTACK_PROPERTY_IDENTIFIER_FIELD); put("TopContributors", TOP_CONTRIBUTORS_FIELD); put("Unit", UNIT_FIELD); put("Total", TOTAL_FIELD); } }); private static final long serialVersionUID = 1L; private final String attackLayer; private final String attackPropertyIdentifier; private final List topContributors; private final String unit; private final Long total; private AttackProperty(BuilderImpl builder) { this.attackLayer = builder.attackLayer; this.attackPropertyIdentifier = builder.attackPropertyIdentifier; this.topContributors = builder.topContributors; this.unit = builder.unit; this.total = builder.total; } /** *

* The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events and * APPLICATION indicates layer 7 events. *

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in Amazon * CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #attackLayer} will * return {@link AttackLayer#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #attackLayerAsString}. *

* * @return The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events and * APPLICATION indicates layer 7 events.

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in Amazon * CloudWatch metrics. For more information, see Shield metrics and alarms in the WAF Developer Guide. * @see AttackLayer */ public final AttackLayer attackLayer() { return AttackLayer.fromValue(attackLayer); } /** *

* The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events and * APPLICATION indicates layer 7 events. *

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in Amazon * CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #attackLayer} will * return {@link AttackLayer#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #attackLayerAsString}. *

* * @return The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events and * APPLICATION indicates layer 7 events.

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in Amazon * CloudWatch metrics. For more information, see Shield metrics and alarms in the WAF Developer Guide. * @see AttackLayer */ public final String attackLayerAsString() { return attackLayer; } /** *

* Defines the Shield event property information that is provided. The WORDPRESS_PINGBACK_REFLECTOR and * WORDPRESS_PINGBACK_SOURCE values are valid only for WordPress reflective pingback events. *

*

* If the service returns an enum value that is not available in the current SDK version, * {@link #attackPropertyIdentifier} will return {@link AttackPropertyIdentifier#UNKNOWN_TO_SDK_VERSION}. The raw * value returned by the service is available from {@link #attackPropertyIdentifierAsString}. *

* * @return Defines the Shield event property information that is provided. The * WORDPRESS_PINGBACK_REFLECTOR and WORDPRESS_PINGBACK_SOURCE values are valid * only for WordPress reflective pingback events. * @see AttackPropertyIdentifier */ public final AttackPropertyIdentifier attackPropertyIdentifier() { return AttackPropertyIdentifier.fromValue(attackPropertyIdentifier); } /** *

* Defines the Shield event property information that is provided. The WORDPRESS_PINGBACK_REFLECTOR and * WORDPRESS_PINGBACK_SOURCE values are valid only for WordPress reflective pingback events. *

*

* If the service returns an enum value that is not available in the current SDK version, * {@link #attackPropertyIdentifier} will return {@link AttackPropertyIdentifier#UNKNOWN_TO_SDK_VERSION}. The raw * value returned by the service is available from {@link #attackPropertyIdentifierAsString}. *

* * @return Defines the Shield event property information that is provided. The * WORDPRESS_PINGBACK_REFLECTOR and WORDPRESS_PINGBACK_SOURCE values are valid * only for WordPress reflective pingback events. * @see AttackPropertyIdentifier */ public final String attackPropertyIdentifierAsString() { return attackPropertyIdentifier; } /** * For responses, this returns true if the service returned a value for the TopContributors 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 hasTopContributors() { return topContributors != null && !(topContributors instanceof SdkAutoConstructList); } /** *

* Contributor objects for the top five contributors to a Shield event. A contributor is a source of traffic that * Shield Advanced identifies as responsible for some or all of an event. *

*

* 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 #hasTopContributors} method. *

* * @return Contributor objects for the top five contributors to a Shield event. A contributor is a source of traffic * that Shield Advanced identifies as responsible for some or all of an event. */ public final List topContributors() { return topContributors; } /** *

* The unit used for the Contributor Value property. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #unit} will return * {@link Unit#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #unitAsString}. *

* * @return The unit used for the Contributor Value property. * @see Unit */ public final Unit unit() { return Unit.fromValue(unit); } /** *

* The unit used for the Contributor Value property. *

*

* If the service returns an enum value that is not available in the current SDK version, {@link #unit} will return * {@link Unit#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #unitAsString}. *

* * @return The unit used for the Contributor Value property. * @see Unit */ public final String unitAsString() { return unit; } /** *

* The total contributions made to this Shield event by all contributors. *

* * @return The total contributions made to this Shield event by all contributors. */ public final Long total() { return total; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public final int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(attackLayerAsString()); hashCode = 31 * hashCode + Objects.hashCode(attackPropertyIdentifierAsString()); hashCode = 31 * hashCode + Objects.hashCode(hasTopContributors() ? topContributors() : null); hashCode = 31 * hashCode + Objects.hashCode(unitAsString()); hashCode = 31 * hashCode + Objects.hashCode(total()); 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 AttackProperty)) { return false; } AttackProperty other = (AttackProperty) obj; return Objects.equals(attackLayerAsString(), other.attackLayerAsString()) && Objects.equals(attackPropertyIdentifierAsString(), other.attackPropertyIdentifierAsString()) && hasTopContributors() == other.hasTopContributors() && Objects.equals(topContributors(), other.topContributors()) && Objects.equals(unitAsString(), other.unitAsString()) && Objects.equals(total(), other.total()); } /** * 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("AttackProperty").add("AttackLayer", attackLayerAsString()) .add("AttackPropertyIdentifier", attackPropertyIdentifierAsString()) .add("TopContributors", hasTopContributors() ? topContributors() : null).add("Unit", unitAsString()) .add("Total", total()).build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "AttackLayer": return Optional.ofNullable(clazz.cast(attackLayerAsString())); case "AttackPropertyIdentifier": return Optional.ofNullable(clazz.cast(attackPropertyIdentifierAsString())); case "TopContributors": return Optional.ofNullable(clazz.cast(topContributors())); case "Unit": return Optional.ofNullable(clazz.cast(unitAsString())); case "Total": return Optional.ofNullable(clazz.cast(total())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } @Override public final Map> sdkFieldNameToField() { return SDK_NAME_TO_FIELD; } private static Function getter(Function g) { return obj -> g.apply((AttackProperty) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends SdkPojo, CopyableBuilder { /** *

* The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events and * APPLICATION indicates layer 7 events. *

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in Amazon * CloudWatch metrics. For more information, see Shield metrics and alarms in the WAF Developer Guide. *

* * @param attackLayer * The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events * and APPLICATION indicates layer 7 events.

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in * Amazon CloudWatch metrics. For more information, see Shield metrics and alarms in the WAF Developer Guide. * @see AttackLayer * @return Returns a reference to this object so that method calls can be chained together. * @see AttackLayer */ Builder attackLayer(String attackLayer); /** *

* The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events and * APPLICATION indicates layer 7 events. *

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in Amazon * CloudWatch metrics. For more information, see Shield metrics and alarms in the WAF Developer Guide. *

* * @param attackLayer * The type of Shield event that was observed. NETWORK indicates layer 3 and layer 4 events * and APPLICATION indicates layer 7 events.

*

* For infrastructure layer events (L3 and L4 events), you can view metrics for top contributors in * Amazon CloudWatch metrics. For more information, see Shield metrics and alarms in the WAF Developer Guide. * @see AttackLayer * @return Returns a reference to this object so that method calls can be chained together. * @see AttackLayer */ Builder attackLayer(AttackLayer attackLayer); /** *

* Defines the Shield event property information that is provided. The WORDPRESS_PINGBACK_REFLECTOR * and WORDPRESS_PINGBACK_SOURCE values are valid only for WordPress reflective pingback events. *

* * @param attackPropertyIdentifier * Defines the Shield event property information that is provided. The * WORDPRESS_PINGBACK_REFLECTOR and WORDPRESS_PINGBACK_SOURCE values are valid * only for WordPress reflective pingback events. * @see AttackPropertyIdentifier * @return Returns a reference to this object so that method calls can be chained together. * @see AttackPropertyIdentifier */ Builder attackPropertyIdentifier(String attackPropertyIdentifier); /** *

* Defines the Shield event property information that is provided. The WORDPRESS_PINGBACK_REFLECTOR * and WORDPRESS_PINGBACK_SOURCE values are valid only for WordPress reflective pingback events. *

* * @param attackPropertyIdentifier * Defines the Shield event property information that is provided. The * WORDPRESS_PINGBACK_REFLECTOR and WORDPRESS_PINGBACK_SOURCE values are valid * only for WordPress reflective pingback events. * @see AttackPropertyIdentifier * @return Returns a reference to this object so that method calls can be chained together. * @see AttackPropertyIdentifier */ Builder attackPropertyIdentifier(AttackPropertyIdentifier attackPropertyIdentifier); /** *

* Contributor objects for the top five contributors to a Shield event. A contributor is a source of traffic * that Shield Advanced identifies as responsible for some or all of an event. *

* * @param topContributors * Contributor objects for the top five contributors to a Shield event. A contributor is a source of * traffic that Shield Advanced identifies as responsible for some or all of an event. * @return Returns a reference to this object so that method calls can be chained together. */ Builder topContributors(Collection topContributors); /** *

* Contributor objects for the top five contributors to a Shield event. A contributor is a source of traffic * that Shield Advanced identifies as responsible for some or all of an event. *

* * @param topContributors * Contributor objects for the top five contributors to a Shield event. A contributor is a source of * traffic that Shield Advanced identifies as responsible for some or all of an event. * @return Returns a reference to this object so that method calls can be chained together. */ Builder topContributors(Contributor... topContributors); /** *

* Contributor objects for the top five contributors to a Shield event. A contributor is a source of traffic * that Shield Advanced identifies as responsible for some or all of an event. *

* This is a convenience method that creates an instance of the * {@link software.amazon.awssdk.services.shield.model.Contributor.Builder} avoiding the need to create one * manually via {@link software.amazon.awssdk.services.shield.model.Contributor#builder()}. * *

* When the {@link Consumer} completes, * {@link software.amazon.awssdk.services.shield.model.Contributor.Builder#build()} is called immediately and * its result is passed to {@link #topContributors(List)}. * * @param topContributors * a consumer that will call methods on * {@link software.amazon.awssdk.services.shield.model.Contributor.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #topContributors(java.util.Collection) */ Builder topContributors(Consumer... topContributors); /** *

* The unit used for the Contributor Value property. *

* * @param unit * The unit used for the Contributor Value property. * @see Unit * @return Returns a reference to this object so that method calls can be chained together. * @see Unit */ Builder unit(String unit); /** *

* The unit used for the Contributor Value property. *

* * @param unit * The unit used for the Contributor Value property. * @see Unit * @return Returns a reference to this object so that method calls can be chained together. * @see Unit */ Builder unit(Unit unit); /** *

* The total contributions made to this Shield event by all contributors. *

* * @param total * The total contributions made to this Shield event by all contributors. * @return Returns a reference to this object so that method calls can be chained together. */ Builder total(Long total); } static final class BuilderImpl implements Builder { private String attackLayer; private String attackPropertyIdentifier; private List topContributors = DefaultSdkAutoConstructList.getInstance(); private String unit; private Long total; private BuilderImpl() { } private BuilderImpl(AttackProperty model) { attackLayer(model.attackLayer); attackPropertyIdentifier(model.attackPropertyIdentifier); topContributors(model.topContributors); unit(model.unit); total(model.total); } public final String getAttackLayer() { return attackLayer; } public final void setAttackLayer(String attackLayer) { this.attackLayer = attackLayer; } @Override public final Builder attackLayer(String attackLayer) { this.attackLayer = attackLayer; return this; } @Override public final Builder attackLayer(AttackLayer attackLayer) { this.attackLayer(attackLayer == null ? null : attackLayer.toString()); return this; } public final String getAttackPropertyIdentifier() { return attackPropertyIdentifier; } public final void setAttackPropertyIdentifier(String attackPropertyIdentifier) { this.attackPropertyIdentifier = attackPropertyIdentifier; } @Override public final Builder attackPropertyIdentifier(String attackPropertyIdentifier) { this.attackPropertyIdentifier = attackPropertyIdentifier; return this; } @Override public final Builder attackPropertyIdentifier(AttackPropertyIdentifier attackPropertyIdentifier) { this.attackPropertyIdentifier(attackPropertyIdentifier == null ? null : attackPropertyIdentifier.toString()); return this; } public final List getTopContributors() { List result = TopContributorsCopier.copyToBuilder(this.topContributors); if (result instanceof SdkAutoConstructList) { return null; } return result; } public final void setTopContributors(Collection topContributors) { this.topContributors = TopContributorsCopier.copyFromBuilder(topContributors); } @Override public final Builder topContributors(Collection topContributors) { this.topContributors = TopContributorsCopier.copy(topContributors); return this; } @Override @SafeVarargs public final Builder topContributors(Contributor... topContributors) { topContributors(Arrays.asList(topContributors)); return this; } @Override @SafeVarargs public final Builder topContributors(Consumer... topContributors) { topContributors(Stream.of(topContributors).map(c -> Contributor.builder().applyMutation(c).build()) .collect(Collectors.toList())); return this; } public final String getUnit() { return unit; } public final void setUnit(String unit) { this.unit = unit; } @Override public final Builder unit(String unit) { this.unit = unit; return this; } @Override public final Builder unit(Unit unit) { this.unit(unit == null ? null : unit.toString()); return this; } public final Long getTotal() { return total; } public final void setTotal(Long total) { this.total = total; } @Override public final Builder total(Long total) { this.total = total; return this; } @Override public AttackProperty build() { return new AttackProperty(this); } @Override public List> sdkFields() { return SDK_FIELDS; } @Override public Map> sdkFieldNameToField() { return SDK_NAME_TO_FIELD; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy