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

software.amazon.awssdk.services.wafv2.model.OverrideAction 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.wafv2.model;

import java.io.Serializable;
import java.util.Arrays;
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.Consumer;
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.LocationTrait;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 * 

* The action to use in the place of the action that results from the rule group evaluation. Set the override action to * none to leave the result of the rule group alone. Set it to count to override the result to count only. *

*

* You can only use this for rule statements that reference a rule group, like RuleGroupReferenceStatement * and ManagedRuleGroupStatement. *

* *

* This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want the * rules in the rule group to only count matches, do not use this and instead use the rule action override option, with * Count action, in your rule group reference statement settings. *

*
*/ @Generated("software.amazon.awssdk:codegen") public final class OverrideAction implements SdkPojo, Serializable, ToCopyableBuilder { private static final SdkField COUNT_FIELD = SdkField. builder(MarshallingType.SDK_POJO) .memberName("Count").getter(getter(OverrideAction::count)).setter(setter(Builder::count)) .constructor(CountAction::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Count").build()).build(); private static final SdkField NONE_FIELD = SdkField. builder(MarshallingType.SDK_POJO) .memberName("None").getter(getter(OverrideAction::none)).setter(setter(Builder::none)) .constructor(NoneAction::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("None").build()).build(); private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(COUNT_FIELD, NONE_FIELD)); private static final long serialVersionUID = 1L; private final CountAction count; private final NoneAction none; private OverrideAction(BuilderImpl builder) { this.count = builder.count; this.none = builder.none; } /** *

* Override the rule group evaluation result to count only. *

* *

* This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want * the rules in the rule group to only count matches, do not use this and instead use the rule action override * option, with Count action, in your rule group reference statement settings. *

*
* * @return Override the rule group evaluation result to count only.

*

* This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If * you want the rules in the rule group to only count matches, do not use this and instead use the rule * action override option, with Count action, in your rule group reference statement settings. *

*/ public final CountAction count() { return count; } /** *

* Don't override the rule group evaluation result. This is the most common setting. *

* * @return Don't override the rule group evaluation result. This is the most common setting. */ public final NoneAction none() { return none; } @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(count()); hashCode = 31 * hashCode + Objects.hashCode(none()); 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 OverrideAction)) { return false; } OverrideAction other = (OverrideAction) obj; return Objects.equals(count(), other.count()) && Objects.equals(none(), other.none()); } /** * 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("OverrideAction").add("Count", count()).add("None", none()).build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "Count": return Optional.ofNullable(clazz.cast(count())); case "None": return Optional.ofNullable(clazz.cast(none())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((OverrideAction) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends SdkPojo, CopyableBuilder { /** *

* Override the rule group evaluation result to count only. *

* *

* This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you * want the rules in the rule group to only count matches, do not use this and instead use the rule action * override option, with Count action, in your rule group reference statement settings. *

*
* * @param count * Override the rule group evaluation result to count only.

*

* This option is usually set to none. It does not affect how the rules in the rule group are evaluated. * If you want the rules in the rule group to only count matches, do not use this and instead use the * rule action override option, with Count action, in your rule group reference statement * settings. *

* @return Returns a reference to this object so that method calls can be chained together. */ Builder count(CountAction count); /** *

* Override the rule group evaluation result to count only. *

* *

* This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you * want the rules in the rule group to only count matches, do not use this and instead use the rule action * override option, with Count action, in your rule group reference statement settings. *

*
This is a convenience method that creates an instance of the {@link CountAction.Builder} avoiding the * need to create one manually via {@link CountAction#builder()}. * *

* When the {@link Consumer} completes, {@link CountAction.Builder#build()} is called immediately and its result * is passed to {@link #count(CountAction)}. * * @param count * a consumer that will call methods on {@link CountAction.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #count(CountAction) */ default Builder count(Consumer count) { return count(CountAction.builder().applyMutation(count).build()); } /** *

* Don't override the rule group evaluation result. This is the most common setting. *

* * @param none * Don't override the rule group evaluation result. This is the most common setting. * @return Returns a reference to this object so that method calls can be chained together. */ Builder none(NoneAction none); /** *

* Don't override the rule group evaluation result. This is the most common setting. *

* This is a convenience method that creates an instance of the {@link NoneAction.Builder} avoiding the need to * create one manually via {@link NoneAction#builder()}. * *

* When the {@link Consumer} completes, {@link NoneAction.Builder#build()} is called immediately and its result * is passed to {@link #none(NoneAction)}. * * @param none * a consumer that will call methods on {@link NoneAction.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #none(NoneAction) */ default Builder none(Consumer none) { return none(NoneAction.builder().applyMutation(none).build()); } } static final class BuilderImpl implements Builder { private CountAction count; private NoneAction none; private BuilderImpl() { } private BuilderImpl(OverrideAction model) { count(model.count); none(model.none); } public final CountAction.Builder getCount() { return count != null ? count.toBuilder() : null; } public final void setCount(CountAction.BuilderImpl count) { this.count = count != null ? count.build() : null; } @Override public final Builder count(CountAction count) { this.count = count; return this; } public final NoneAction.Builder getNone() { return none != null ? none.toBuilder() : null; } public final void setNone(NoneAction.BuilderImpl none) { this.none = none != null ? none.build() : null; } @Override public final Builder none(NoneAction none) { this.none = none; return this; } @Override public OverrideAction build() { return new OverrideAction(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy