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

software.amazon.awssdk.services.waf.regional.DefaultWafRegionalAsyncClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS WAF Service module holds the client classes that are used for communicating with AWS WAF Service

There is a newer version: 2.30.1
Show newest version
/*
 * 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.waf.regional;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.awscore.internal.AwsProtocolMetadata;
import software.amazon.awssdk.awscore.internal.AwsServiceProtocol;
import software.amazon.awssdk.awscore.retry.AwsRetryStrategy;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkPlugin;
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.core.retry.RetryMode;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.retries.api.RetryStrategy;
import software.amazon.awssdk.services.waf.model.AssociateWebAclRequest;
import software.amazon.awssdk.services.waf.model.AssociateWebAclResponse;
import software.amazon.awssdk.services.waf.model.CreateByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateIpSetRequest;
import software.amazon.awssdk.services.waf.model.CreateIpSetResponse;
import software.amazon.awssdk.services.waf.model.CreateRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.CreateRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.CreateRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.CreateRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.CreateRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.CreateRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.CreateRuleRequest;
import software.amazon.awssdk.services.waf.model.CreateRuleResponse;
import software.amazon.awssdk.services.waf.model.CreateSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.CreateSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.CreateSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateWebAclMigrationStackRequest;
import software.amazon.awssdk.services.waf.model.CreateWebAclMigrationStackResponse;
import software.amazon.awssdk.services.waf.model.CreateWebAclRequest;
import software.amazon.awssdk.services.waf.model.CreateWebAclResponse;
import software.amazon.awssdk.services.waf.model.CreateXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteIpSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteIpSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteLoggingConfigurationRequest;
import software.amazon.awssdk.services.waf.model.DeleteLoggingConfigurationResponse;
import software.amazon.awssdk.services.waf.model.DeletePermissionPolicyRequest;
import software.amazon.awssdk.services.waf.model.DeletePermissionPolicyResponse;
import software.amazon.awssdk.services.waf.model.DeleteRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.DeleteRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.DeleteRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.DeleteRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.DeleteRuleRequest;
import software.amazon.awssdk.services.waf.model.DeleteRuleResponse;
import software.amazon.awssdk.services.waf.model.DeleteSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteWebAclRequest;
import software.amazon.awssdk.services.waf.model.DeleteWebAclResponse;
import software.amazon.awssdk.services.waf.model.DeleteXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DisassociateWebAclRequest;
import software.amazon.awssdk.services.waf.model.DisassociateWebAclResponse;
import software.amazon.awssdk.services.waf.model.GetByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetChangeTokenRequest;
import software.amazon.awssdk.services.waf.model.GetChangeTokenResponse;
import software.amazon.awssdk.services.waf.model.GetChangeTokenStatusRequest;
import software.amazon.awssdk.services.waf.model.GetChangeTokenStatusResponse;
import software.amazon.awssdk.services.waf.model.GetGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetIpSetRequest;
import software.amazon.awssdk.services.waf.model.GetIpSetResponse;
import software.amazon.awssdk.services.waf.model.GetLoggingConfigurationRequest;
import software.amazon.awssdk.services.waf.model.GetLoggingConfigurationResponse;
import software.amazon.awssdk.services.waf.model.GetPermissionPolicyRequest;
import software.amazon.awssdk.services.waf.model.GetPermissionPolicyResponse;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleManagedKeysRequest;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleManagedKeysResponse;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.GetRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.GetRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.GetRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.GetRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.GetRuleRequest;
import software.amazon.awssdk.services.waf.model.GetRuleResponse;
import software.amazon.awssdk.services.waf.model.GetSampledRequestsRequest;
import software.amazon.awssdk.services.waf.model.GetSampledRequestsResponse;
import software.amazon.awssdk.services.waf.model.GetSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.GetSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.GetSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetWebAclForResourceRequest;
import software.amazon.awssdk.services.waf.model.GetWebAclForResourceResponse;
import software.amazon.awssdk.services.waf.model.GetWebAclRequest;
import software.amazon.awssdk.services.waf.model.GetWebAclResponse;
import software.amazon.awssdk.services.waf.model.GetXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.ListActivatedRulesInRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.ListActivatedRulesInRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.ListByteMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListByteMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListGeoMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListGeoMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListIpSetsRequest;
import software.amazon.awssdk.services.waf.model.ListIpSetsResponse;
import software.amazon.awssdk.services.waf.model.ListLoggingConfigurationsRequest;
import software.amazon.awssdk.services.waf.model.ListLoggingConfigurationsResponse;
import software.amazon.awssdk.services.waf.model.ListRateBasedRulesRequest;
import software.amazon.awssdk.services.waf.model.ListRateBasedRulesResponse;
import software.amazon.awssdk.services.waf.model.ListRegexMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListRegexMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListRegexPatternSetsRequest;
import software.amazon.awssdk.services.waf.model.ListRegexPatternSetsResponse;
import software.amazon.awssdk.services.waf.model.ListResourcesForWebAclRequest;
import software.amazon.awssdk.services.waf.model.ListResourcesForWebAclResponse;
import software.amazon.awssdk.services.waf.model.ListRuleGroupsRequest;
import software.amazon.awssdk.services.waf.model.ListRuleGroupsResponse;
import software.amazon.awssdk.services.waf.model.ListRulesRequest;
import software.amazon.awssdk.services.waf.model.ListRulesResponse;
import software.amazon.awssdk.services.waf.model.ListSizeConstraintSetsRequest;
import software.amazon.awssdk.services.waf.model.ListSizeConstraintSetsResponse;
import software.amazon.awssdk.services.waf.model.ListSqlInjectionMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListSqlInjectionMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListSubscribedRuleGroupsRequest;
import software.amazon.awssdk.services.waf.model.ListSubscribedRuleGroupsResponse;
import software.amazon.awssdk.services.waf.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.waf.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.waf.model.ListWebAcLsRequest;
import software.amazon.awssdk.services.waf.model.ListWebAcLsResponse;
import software.amazon.awssdk.services.waf.model.ListXssMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListXssMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.PutLoggingConfigurationRequest;
import software.amazon.awssdk.services.waf.model.PutLoggingConfigurationResponse;
import software.amazon.awssdk.services.waf.model.PutPermissionPolicyRequest;
import software.amazon.awssdk.services.waf.model.PutPermissionPolicyResponse;
import software.amazon.awssdk.services.waf.model.TagResourceRequest;
import software.amazon.awssdk.services.waf.model.TagResourceResponse;
import software.amazon.awssdk.services.waf.model.UntagResourceRequest;
import software.amazon.awssdk.services.waf.model.UntagResourceResponse;
import software.amazon.awssdk.services.waf.model.UpdateByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateIpSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateIpSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.UpdateRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.UpdateRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.UpdateRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.UpdateRuleRequest;
import software.amazon.awssdk.services.waf.model.UpdateRuleResponse;
import software.amazon.awssdk.services.waf.model.UpdateSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateWebAclRequest;
import software.amazon.awssdk.services.waf.model.UpdateWebAclResponse;
import software.amazon.awssdk.services.waf.model.UpdateXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.WafBadRequestException;
import software.amazon.awssdk.services.waf.model.WafDisallowedNameException;
import software.amazon.awssdk.services.waf.model.WafEntityMigrationException;
import software.amazon.awssdk.services.waf.model.WafException;
import software.amazon.awssdk.services.waf.model.WafInternalErrorException;
import software.amazon.awssdk.services.waf.model.WafInvalidAccountException;
import software.amazon.awssdk.services.waf.model.WafInvalidOperationException;
import software.amazon.awssdk.services.waf.model.WafInvalidParameterException;
import software.amazon.awssdk.services.waf.model.WafInvalidPermissionPolicyException;
import software.amazon.awssdk.services.waf.model.WafInvalidRegexPatternException;
import software.amazon.awssdk.services.waf.model.WafLimitsExceededException;
import software.amazon.awssdk.services.waf.model.WafNonEmptyEntityException;
import software.amazon.awssdk.services.waf.model.WafNonexistentContainerException;
import software.amazon.awssdk.services.waf.model.WafNonexistentItemException;
import software.amazon.awssdk.services.waf.model.WafReferencedItemException;
import software.amazon.awssdk.services.waf.model.WafServiceLinkedRoleErrorException;
import software.amazon.awssdk.services.waf.model.WafStaleDataException;
import software.amazon.awssdk.services.waf.model.WafSubscriptionNotFoundException;
import software.amazon.awssdk.services.waf.model.WafTagOperationException;
import software.amazon.awssdk.services.waf.model.WafTagOperationInternalErrorException;
import software.amazon.awssdk.services.waf.model.WafUnavailableEntityException;
import software.amazon.awssdk.services.waf.regional.internal.WafRegionalServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.waf.regional.transform.AssociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateWebAclMigrationStackRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateXssMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeletePermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteXssMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DisassociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetChangeTokenRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetChangeTokenStatusRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRateBasedRuleManagedKeysRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetSampledRequestsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetWebAclForResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetXssMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListActivatedRulesInRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListByteMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListGeoMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListIpSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListLoggingConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRateBasedRulesRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRegexMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRegexPatternSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListResourcesForWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRulesRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListSizeConstraintSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListSqlInjectionMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListSubscribedRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListWebAcLsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListXssMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.PutLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.PutPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateXssMatchSetRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;

/**
 * Internal implementation of {@link WafRegionalAsyncClient}.
 *
 * @see WafRegionalAsyncClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultWafRegionalAsyncClient implements WafRegionalAsyncClient {
    private static final Logger log = LoggerFactory.getLogger(DefaultWafRegionalAsyncClient.class);

    private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder()
            .serviceProtocol(AwsServiceProtocol.AWS_JSON).build();

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    protected DefaultWafRegionalAsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    /**
     * 
     * 

* This is AWS WAF Classic Regional documentation. For more information, see AWS WAF Classic in the * developer guide. *

*

* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

*
*

* Associates a web ACL with a resource, either an application load balancer or Amazon API Gateway stage. *

* * @param associateWebAclRequest * @return A Java Future containing the result of the AssociateWebACL operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
    *
  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
  • *
  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
  • *
  • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

    *
      *
    • *

      * You specified an invalid parameter name. *

      *
    • *
    • *

      * You specified an invalid value. *

      *
    • *
    • *

      * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

      *
    • *
    • *

      * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

      *
    • *
    • *

      * You tried to create a RateBasedRule with a RateKey value other than * IP. *

      *
    • *
    • *

      * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

      *
    • *
    • *

      * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

      *
    • *
    • *

      * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

      *
    • *
    • *

      * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

      *
    • *
    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
    • *
    • WafUnavailableEntityException The operation failed because the entity referenced is temporarily * unavailable. Retry your request.
    • *
    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
    • *
    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
    • *
    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
    • *
    * @sample WafRegionalAsyncClient.AssociateWebACL * @see AWS * API Documentation */ @Override public CompletableFuture associateWebACL(AssociateWebAclRequest associateWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(associateWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, associateWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AssociateWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AssociateWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("AssociateWebACL").withProtocolMetadata(protocolMetadata) .withMarshaller(new AssociateWebAclRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(associateWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

    *

    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

    *
    *

    * Creates a ByteMatchSet. You then use UpdateByteMatchSet to identify the part of a web request * that you want AWS WAF to inspect, such as the values of the User-Agent header or the query string. * For example, you can create a ByteMatchSet that matches any requests with User-Agent * headers that contain the string BadBot. You can then configure AWS WAF to reject those requests. *

    *

    * To create and configure a ByteMatchSet, perform the following steps: *

    *
      *
    1. *

      * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateByteMatchSet request. *

      *
    2. *
    3. *

      * Submit a CreateByteMatchSet request. *

      *
    4. *
    5. *

      * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateByteMatchSet request. *

      *
    6. *
    7. *

      * Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect * (for example, the header or the URI) and the value that you want AWS WAF to watch for. *

      *
    8. *
    *

    * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

    * * @param createByteMatchSetRequest * @return A Java Future containing the result of the CreateByteMatchSet operation returned by the service.
    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
      *
    • WafDisallowedNameException The name specified is invalid.
    • *
    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
    • *
    • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
    • *
    • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

      *
        *
      • *

        * You specified an invalid parameter name. *

        *
      • *
      • *

        * You specified an invalid value. *

        *
      • *
      • *

        * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

        *
      • *
      • *

        * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

        *
      • *
      • *

        * You tried to create a RateBasedRule with a RateKey value other than * IP. *

        *
      • *
      • *

        * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

        *
      • *
      • *

        * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

        *
      • *
      • *

        * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

        *
      • *
      • *

        * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

        *
      • *
      • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
      • *
      • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
      • *
      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
      • *
      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
      • *
      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample WafRegionalAsyncClient.CreateByteMatchSet * @see AWS API Documentation */ @Override public CompletableFuture createByteMatchSet(CreateByteMatchSetRequest createByteMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createByteMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createByteMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateByteMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateByteMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateByteMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateByteMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createByteMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

      *

      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

      *
      *

      * Creates an GeoMatchSet, which you use to specify which web requests you want to allow or block based on * the country that the requests originate from. For example, if you're receiving a lot of requests from one or more * countries and you want to block the requests, you can create an GeoMatchSet that contains those * countries and then configure AWS WAF to block the requests. *

      *

      * To create and configure a GeoMatchSet, perform the following steps: *

      *
        *
      1. *

        * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateGeoMatchSet request. *

        *
      2. *
      3. *

        * Submit a CreateGeoMatchSet request. *

        *
      4. *
      5. *

        * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateGeoMatchSet request. *

        *
      6. *
      7. *

        * Submit an UpdateGeoMatchSetSet request to specify the countries that you want AWS WAF to watch for. *

        *
      8. *
      *

      * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

      * * @param createGeoMatchSetRequest * @return A Java Future containing the result of the CreateGeoMatchSet operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
      • *
      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
      • *
      • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
      • *
      • WafDisallowedNameException The name specified is invalid.
      • *
      • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

        *
          *
        • *

          * You specified an invalid parameter name. *

          *
        • *
        • *

          * You specified an invalid value. *

          *
        • *
        • *

          * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

          *
        • *
        • *

          * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

          *
        • *
        • *

          * You tried to create a RateBasedRule with a RateKey value other than * IP. *

          *
        • *
        • *

          * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

          *
        • *
        • *

          * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

          *
        • *
        • *

          * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

          *
        • *
        • *

          * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

          *
        • *
        • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
        • *
        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
        • *
        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
        • *
        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample WafRegionalAsyncClient.CreateGeoMatchSet * @see AWS API Documentation */ @Override public CompletableFuture createGeoMatchSet(CreateGeoMatchSetRequest createGeoMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createGeoMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createGeoMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateGeoMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateGeoMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateGeoMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateGeoMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createGeoMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

        *

        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

        *
        *

        * Creates an IPSet, which you use to specify which web requests that you want to allow or block based on the * IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or * more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can * create an IPSet that contains those IP addresses and then configure AWS WAF to block the requests. *

        *

        * To create and configure an IPSet, perform the following steps: *

        *
          *
        1. *

          * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateIPSet request. *

          *
        2. *
        3. *

          * Submit a CreateIPSet request. *

          *
        4. *
        5. *

          * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateIPSet request. *

          *
        6. *
        7. *

          * Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. *

          *
        8. *
        *

        * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

        * * @param createIpSetRequest * @return A Java Future containing the result of the CreateIPSet operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
        • *
        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
        • *
        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
        • *
        • WafDisallowedNameException The name specified is invalid.
        • *
        • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

          *
            *
          • *

            * You specified an invalid parameter name. *

            *
          • *
          • *

            * You specified an invalid value. *

            *
          • *
          • *

            * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

            *
          • *
          • *

            * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

            *
          • *
          • *

            * You tried to create a RateBasedRule with a RateKey value other than * IP. *

            *
          • *
          • *

            * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

            *
          • *
          • *

            * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

            *
          • *
          • *

            * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

            *
          • *
          • *

            * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

            *
          • *
          • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
          • *
          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
          • *
          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
          • *
          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample WafRegionalAsyncClient.CreateIPSet * @see AWS API * Documentation */ @Override public CompletableFuture createIPSet(CreateIpSetRequest createIpSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createIpSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createIpSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateIPSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateIpSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateIPSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateIpSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createIpSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

          *

          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

          *
          *

          * Creates a RateBasedRule. The RateBasedRule contains a RateLimit, which specifies * the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The * RateBasedRule also contains the IPSet objects, ByteMatchSet objects, and * other predicates that identify the requests that you want to count or block if these requests exceed the * RateLimit. *

          *

          * If you add more than one predicate to a RateBasedRule, a request not only must exceed the * RateLimit, but it also must match all the conditions to be counted or blocked. For example, suppose * you add the following to a RateBasedRule: *

          *
            *
          • *

            * An IPSet that matches the IP address 192.0.2.44/32 *

            *
          • *
          • *

            * A ByteMatchSet that matches BadBot in the User-Agent header *

            *
          • *
          *

          * Further, you specify a RateLimit of 1,000. *

          *

          * You then add the RateBasedRule to a WebACL and specify that you want to block requests * that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 * and the User-Agent header in the request must contain the value BadBot. Further, * requests that match these two conditions must be received at a rate of more than 1,000 requests every five * minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops * below 1,000 for a five-minute period, AWS WAF no longer blocks the requests. *

          *

          * As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could * add the following to a RateBasedRule: *

          *
            *
          • *

            * A ByteMatchSet with FieldToMatch of URI *

            *
          • *
          • *

            * A PositionalConstraint of STARTS_WITH *

            *
          • *
          • *

            * A TargetString of login *

            *
          • *
          *

          * Further, you specify a RateLimit of 1,000. *

          *

          * By adding this RateBasedRule to a WebACL, you could limit requests to your login page * without affecting the rest of your site. *

          *

          * To create and configure a RateBasedRule, perform the following steps: *

          *
            *
          1. *

            * Create and update the predicates that you want to include in the rule. For more information, see * CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. *

            *
          2. *
          3. *

            * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateRule request. *

            *
          4. *
          5. *

            * Submit a CreateRateBasedRule request. *

            *
          6. *
          7. *

            * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateRule request. *

            *
          8. *
          9. *

            * Submit an UpdateRateBasedRule request to specify the predicates that you want to include in the * rule. *

            *
          10. *
          11. *

            * Create and update a WebACL that contains the RateBasedRule. For more information, see * CreateWebACL. *

            *
          12. *
          *

          * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

          * * @param createRateBasedRuleRequest * @return A Java Future containing the result of the CreateRateBasedRule operation returned by the service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
          • *
          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
          • *
          • WafDisallowedNameException The name specified is invalid.
          • *
          • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

            *
              *
            • *

              * You specified an invalid parameter name. *

              *
            • *
            • *

              * You specified an invalid value. *

              *
            • *
            • *

              * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

              *
            • *
            • *

              * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

              *
            • *
            • *

              * You tried to create a RateBasedRule with a RateKey value other than * IP. *

              *
            • *
            • *

              * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

              *
            • *
            • *

              * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

              *
            • *
            • *

              * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

              *
            • *
            • *

              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

              *
            • *
            • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
            • *
            • WafTagOperationException
            • *
            • WafTagOperationInternalErrorException
            • *
            • WafBadRequestException
            • *
            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
            • *
            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
            • *
            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample WafRegionalAsyncClient.CreateRateBasedRule * @see AWS API Documentation */ @Override public CompletableFuture createRateBasedRule( CreateRateBasedRuleRequest createRateBasedRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRateBasedRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createRateBasedRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRateBasedRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateRateBasedRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateRateBasedRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateRateBasedRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createRateBasedRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

            *

            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

            *
            *

            * Creates a RegexMatchSet. You then use UpdateRegexMatchSet to identify the part of a web request * that you want AWS WAF to inspect, such as the values of the User-Agent header or the query string. * For example, you can create a RegexMatchSet that contains a RegexMatchTuple that looks * for any requests with User-Agent headers that match a RegexPatternSet with pattern * B[a@]dB[o0]t. You can then configure AWS WAF to reject those requests. *

            *

            * To create and configure a RegexMatchSet, perform the following steps: *

            *
              *
            1. *

              * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateRegexMatchSet request. *

              *
            2. *
            3. *

              * Submit a CreateRegexMatchSet request. *

              *
            4. *
            5. *

              * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateRegexMatchSet request. *

              *
            6. *
            7. *

              * Submit an UpdateRegexMatchSet request to specify the part of the request that you want AWS WAF to inspect * (for example, the header or the URI) and the value, using a RegexPatternSet, that you want AWS WAF * to watch for. *

              *
            8. *
            *

            * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

            * * @param createRegexMatchSetRequest * @return A Java Future containing the result of the CreateRegexMatchSet operation returned by the service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
            • *
            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
            • *
            • WafDisallowedNameException The name specified is invalid.
            • *
            • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
            • *
            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
            • *
            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
            • *
            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample WafRegionalAsyncClient.CreateRegexMatchSet * @see AWS API Documentation */ @Override public CompletableFuture createRegexMatchSet( CreateRegexMatchSetRequest createRegexMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRegexMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createRegexMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRegexMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateRegexMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateRegexMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateRegexMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createRegexMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

            *

            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

            *
            *

            * Creates a RegexPatternSet. You then use UpdateRegexPatternSet to specify the regular * expression (regex) pattern that you want AWS WAF to search for, such as B[a@]dB[o0]t. You can then * configure AWS WAF to reject those requests. *

            *

            * To create and configure a RegexPatternSet, perform the following steps: *

            *
              *
            1. *

              * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateRegexPatternSet request. *

              *
            2. *
            3. *

              * Submit a CreateRegexPatternSet request. *

              *
            4. *
            5. *

              * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateRegexPatternSet request. *

              *
            6. *
            7. *

              * Submit an UpdateRegexPatternSet request to specify the string that you want AWS WAF to watch for. *

              *
            8. *
            *

            * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

            * * @param createRegexPatternSetRequest * @return A Java Future containing the result of the CreateRegexPatternSet operation returned by the service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
            • *
            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
            • *
            • WafDisallowedNameException The name specified is invalid.
            • *
            • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
            • *
            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
            • *
            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
            • *
            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample WafRegionalAsyncClient.CreateRegexPatternSet * @see AWS API Documentation */ @Override public CompletableFuture createRegexPatternSet( CreateRegexPatternSetRequest createRegexPatternSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRegexPatternSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createRegexPatternSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRegexPatternSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateRegexPatternSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateRegexPatternSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateRegexPatternSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createRegexPatternSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

            *

            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

            *
            *

            * Creates a Rule, which contains the IPSet objects, ByteMatchSet objects, * and other predicates that identify the requests that you want to block. If you add more than one predicate to a * Rule, a request must match all of the specifications to be allowed or blocked. For example, suppose * that you add the following to a Rule: *

            *
              *
            • *

              * An IPSet that matches the IP address 192.0.2.44/32 *

              *
            • *
            • *

              * A ByteMatchSet that matches BadBot in the User-Agent header *

              *
            • *
            *

            * You then add the Rule to a WebACL and specify that you want to blocks requests that * satisfy the Rule. For a request to be blocked, it must come from the IP address 192.0.2.44 * and the User-Agent header in the request must contain the value BadBot. *

            *

            * To create and configure a Rule, perform the following steps: *

            *
              *
            1. *

              * Create and update the predicates that you want to include in the Rule. For more information, see * CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. *

              *
            2. *
            3. *

              * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateRule request. *

              *
            4. *
            5. *

              * Submit a CreateRule request. *

              *
            6. *
            7. *

              * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateRule request. *

              *
            8. *
            9. *

              * Submit an UpdateRule request to specify the predicates that you want to include in the * Rule. *

              *
            10. *
            11. *

              * Create and update a WebACL that contains the Rule. For more information, see * CreateWebACL. *

              *
            12. *
            *

            * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

            * * @param createRuleRequest * @return A Java Future containing the result of the CreateRule operation returned by the service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
            • *
            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
            • *
            • WafDisallowedNameException The name specified is invalid.
            • *
            • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

              *
                *
              • *

                * You specified an invalid parameter name. *

                *
              • *
              • *

                * You specified an invalid value. *

                *
              • *
              • *

                * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                *
              • *
              • *

                * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                *
              • *
              • *

                * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                *
              • *
              • *

                * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                *
              • *
              • *

                * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                *
              • *
              • *

                * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                *
              • *
              • *

                * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                *
              • *
              • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
              • *
              • WafTagOperationException
              • *
              • WafTagOperationInternalErrorException
              • *
              • WafBadRequestException
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample WafRegionalAsyncClient.CreateRule * @see AWS API * Documentation */ @Override public CompletableFuture createRule(CreateRuleRequest createRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("CreateRule") .withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

              * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

              *

              * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

              *
              *

              * Creates a RuleGroup. A rule group is a collection of predefined rules that you add to a web ACL. You * use UpdateRuleGroup to add rules to the rule group. *

              *

              * Rule groups are subject to the following limits: *

              *
                *
              • *

                * Three rule groups per account. You can request an increase to this limit by contacting customer support. *

                *
              • *
              • *

                * One rule group per web ACL. *

                *
              • *
              • *

                * Ten rules per rule group. *

                *
              • *
              *

              * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

              * * @param createRuleGroupRequest * @return A Java Future containing the result of the CreateRuleGroup operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
              • *
              • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
              • *
              • WafDisallowedNameException The name specified is invalid.
              • *
              • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
              • *
              • WafTagOperationException
              • *
              • WafTagOperationInternalErrorException
              • *
              • WafBadRequestException
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample WafRegionalAsyncClient.CreateRuleGroup * @see AWS * API Documentation */ @Override public CompletableFuture createRuleGroup(CreateRuleGroupRequest createRuleGroupRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRuleGroupRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createRuleGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRuleGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateRuleGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateRuleGroup").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateRuleGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createRuleGroupRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

              * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

              *

              * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

              *
              *

              * Creates a SizeConstraintSet. You then use UpdateSizeConstraintSet to identify the part of a * web request that you want AWS WAF to check for length, such as the length of the User-Agent header * or the length of the query string. For example, you can create a SizeConstraintSet that matches any * requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those * requests. *

              *

              * To create and configure a SizeConstraintSet, perform the following steps: *

              *
                *
              1. *

                * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateSizeConstraintSet request. *

                *
              2. *
              3. *

                * Submit a CreateSizeConstraintSet request. *

                *
              4. *
              5. *

                * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateSizeConstraintSet request. *

                *
              6. *
              7. *

                * Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to * inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. *

                *
              8. *
              *

              * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

              * * @param createSizeConstraintSetRequest * @return A Java Future containing the result of the CreateSizeConstraintSet operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
              • *
              • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
              • *
              • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
              • *
              • WafDisallowedNameException The name specified is invalid.
              • *
              • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                *
                  *
                • *

                  * You specified an invalid parameter name. *

                  *
                • *
                • *

                  * You specified an invalid value. *

                  *
                • *
                • *

                  * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                  *
                • *
                • *

                  * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                  *
                • *
                • *

                  * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                  *
                • *
                • *

                  * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                  *
                • *
                • *

                  * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                  *
                • *
                • *

                  * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                  *
                • *
                • *

                  * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                  *
                • *
                • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                • *
                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                • *
                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                • *
                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                • *
                * @sample WafRegionalAsyncClient.CreateSizeConstraintSet * @see AWS API Documentation */ @Override public CompletableFuture createSizeConstraintSet( CreateSizeConstraintSetRequest createSizeConstraintSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createSizeConstraintSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createSizeConstraintSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateSizeConstraintSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateSizeConstraintSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateSizeConstraintSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateSizeConstraintSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createSizeConstraintSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                *

                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                *
                *

                * Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests that contain snippets of * SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be * malicious strings. *

                *

                * To create and configure a SqlInjectionMatchSet, perform the following steps: *

                *
                  *
                1. *

                  * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateSqlInjectionMatchSet request. *

                  *
                2. *
                3. *

                  * Submit a CreateSqlInjectionMatchSet request. *

                  *
                4. *
                5. *

                  * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateSqlInjectionMatchSet request. *

                  *
                6. *
                7. *

                  * Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests in which you want to * allow, block, or count malicious SQL code. *

                  *
                8. *
                *

                * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                * * @param createSqlInjectionMatchSetRequest * A request to create a SqlInjectionMatchSet. * @return A Java Future containing the result of the CreateSqlInjectionMatchSet operation returned by the service.
                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                  *
                • WafDisallowedNameException The name specified is invalid.
                • *
                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                • *
                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                • *
                • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                  *
                    *
                  • *

                    * You specified an invalid parameter name. *

                    *
                  • *
                  • *

                    * You specified an invalid value. *

                    *
                  • *
                  • *

                    * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                    *
                  • *
                  • *

                    * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                    *
                  • *
                  • *

                    * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                    *
                  • *
                  • *

                    * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                    *
                  • *
                  • *

                    * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                    *
                  • *
                  • *

                    * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                    *
                  • *
                  • *

                    * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                    *
                  • *
                  • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                  • *
                  • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                  • *
                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                  • *
                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                  • *
                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample WafRegionalAsyncClient.CreateSqlInjectionMatchSet * @see AWS API Documentation */ @Override public CompletableFuture createSqlInjectionMatchSet( CreateSqlInjectionMatchSetRequest createSqlInjectionMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createSqlInjectionMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createSqlInjectionMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateSqlInjectionMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateSqlInjectionMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateSqlInjectionMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateSqlInjectionMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createSqlInjectionMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                  *

                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                  *
                  *

                  * Creates a WebACL, which contains the Rules that identify the CloudFront web requests * that you want to allow, block, or count. AWS WAF evaluates Rules in order based on the value of * Priority for each Rule. *

                  *

                  * You also specify a default action, either ALLOW or BLOCK. If a web request doesn't * match any of the Rules in a WebACL, AWS WAF responds to the request with the default * action. *

                  *

                  * To create and configure a WebACL, perform the following steps: *

                  *
                    *
                  1. *

                    * Create and update the ByteMatchSet objects and other predicates that you want to include in * Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet, * CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. *

                    *
                  2. *
                  3. *

                    * Create and update the Rules that you want to include in the WebACL. For more * information, see CreateRule and UpdateRule. *

                    *
                  4. *
                  5. *

                    * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateWebACL request. *

                    *
                  6. *
                  7. *

                    * Submit a CreateWebACL request. *

                    *
                  8. *
                  9. *

                    * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateWebACL request. *

                    *
                  10. *
                  11. *

                    * Submit an UpdateWebACL request to specify the Rules that you want to include in the * WebACL, to specify the default action, and to associate the WebACL with a CloudFront * distribution. *

                    *
                  12. *
                  *

                  * For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide. *

                  * * @param createWebAclRequest * @return A Java Future containing the result of the CreateWebACL operation returned by the service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                    *
                  • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                  • *
                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                  • *
                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                  • *
                  • WafDisallowedNameException The name specified is invalid.
                  • *
                  • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                    *
                      *
                    • *

                      * You specified an invalid parameter name. *

                      *
                    • *
                    • *

                      * You specified an invalid value. *

                      *
                    • *
                    • *

                      * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                      *
                    • *
                    • *

                      * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                      *
                    • *
                    • *

                      * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                      *
                    • *
                    • *

                      * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                      *
                    • *
                    • *

                      * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                      *
                    • *
                    • *

                      * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                      *
                    • *
                    • *

                      * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                      *
                    • *
                    • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                    • *
                    • WafTagOperationException
                    • *
                    • WafTagOperationInternalErrorException
                    • *
                    • WafBadRequestException
                    • *
                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                    • *
                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                    • *
                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                    • *
                    * @sample WafRegionalAsyncClient.CreateWebACL * @see AWS API * Documentation */ @Override public CompletableFuture createWebACL(CreateWebAclRequest createWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateWebACL").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateWebAclRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                    * Creates an AWS CloudFormation WAFV2 template for the specified web ACL in the specified Amazon S3 bucket. Then, * in CloudFormation, you create a stack from the template, to create the web ACL and its resources in AWS WAFV2. * Use this to migrate your AWS WAF Classic web ACL to the latest version of AWS WAF. *

                    *

                    * This is part of a larger migration procedure for web ACLs from AWS WAF Classic to the latest version of AWS WAF. * For the full procedure, including caveats and manual steps to complete the migration and switch over to the new * web ACL, see Migrating your AWS * WAF Classic resources to AWS WAF in the AWS WAF Developer Guide. *

                    * * @param createWebAclMigrationStackRequest * @return A Java Future containing the result of the CreateWebACLMigrationStack operation returned by the service.
                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                      *
                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                    • *
                    • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                      *
                        *
                      • *

                        * You specified an invalid parameter name. *

                        *
                      • *
                      • *

                        * You specified an invalid value. *

                        *
                      • *
                      • *

                        * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                        *
                      • *
                      • *

                        * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                        *
                      • *
                      • *

                        * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                        *
                      • *
                      • *

                        * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                        *
                      • *
                      • *

                        * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                        *
                      • *
                      • *

                        * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                        *
                      • *
                      • *

                        * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                        *
                      • *
                      • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                        *
                          *
                        • *

                          * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                          *
                        • *
                        • *

                          * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                          *
                        • *
                        • *

                          * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                          *
                        • *
                        • *

                          * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                          *
                        • *
                        • *

                          * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                          *
                        • *
                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                        • *
                        • WafEntityMigrationException The operation failed due to a problem with the migration. The failure * cause is provided in the exception, in the MigrationErrorType:

                          *
                            *
                          • *

                            * ENTITY_NOT_SUPPORTED - The web ACL has an unsupported entity but the * IgnoreUnsupportedType is not set to true. *

                            *
                          • *
                          • *

                            * ENTITY_NOT_FOUND - The web ACL doesn't exist. *

                            *
                          • *
                          • *

                            * S3_BUCKET_NO_PERMISSION - You don't have permission to perform the PutObject * action to the specified Amazon S3 bucket. *

                            *
                          • *
                          • *

                            * S3_BUCKET_NOT_ACCESSIBLE - The bucket policy doesn't allow AWS WAF to perform the * PutObject action in the bucket. *

                            *
                          • *
                          • *

                            * S3_BUCKET_NOT_FOUND - The S3 bucket doesn't exist. *

                            *
                          • *
                          • *

                            * S3_BUCKET_INVALID_REGION - The S3 bucket is not in the same Region as the web ACL. *

                            *
                          • *
                          • *

                            * S3_INTERNAL_ERROR - AWS WAF failed to create the template in the S3 bucket for another * reason. *

                            *
                          • *
                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                          • *
                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                          • *
                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                          • *
                          * @sample WafRegionalAsyncClient.CreateWebACLMigrationStack * @see AWS API Documentation */ @Override public CompletableFuture createWebACLMigrationStack( CreateWebAclMigrationStackRequest createWebAclMigrationStackRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createWebAclMigrationStackRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createWebAclMigrationStackRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateWebACLMigrationStack"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateWebAclMigrationStackResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateWebACLMigrationStack").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateWebAclMigrationStackRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createWebAclMigrationStackRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                          *

                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                          *
                          *

                          * Creates an XssMatchSet, which you use to allow, block, or count requests that contain cross-site scripting * attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be * malicious strings. *

                          *

                          * To create and configure an XssMatchSet, perform the following steps: *

                          *
                            *
                          1. *

                            * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * CreateXssMatchSet request. *

                            *
                          2. *
                          3. *

                            * Submit a CreateXssMatchSet request. *

                            *
                          4. *
                          5. *

                            * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateXssMatchSet request. *

                            *
                          6. *
                          7. *

                            * Submit an UpdateXssMatchSet request to specify the parts of web requests in which you want to allow, * block, or count cross-site scripting attacks. *

                            *
                          8. *
                          *

                          * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                          * * @param createXssMatchSetRequest * A request to create an XssMatchSet. * @return A Java Future containing the result of the CreateXssMatchSet operation returned by the service.
                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                            *
                          • WafDisallowedNameException The name specified is invalid.
                          • *
                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                          • *
                          • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                          • *
                          • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                            *
                              *
                            • *

                              * You specified an invalid parameter name. *

                              *
                            • *
                            • *

                              * You specified an invalid value. *

                              *
                            • *
                            • *

                              * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                              *
                            • *
                            • *

                              * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                              *
                            • *
                            • *

                              * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                              *
                            • *
                            • *

                              * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                              *
                            • *
                            • *

                              * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                              *
                            • *
                            • *

                              * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                              *
                            • *
                            • *

                              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                              *
                            • *
                            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                            • *
                            • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                            • *
                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                            • *
                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                            • *
                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                            • *
                            * @sample WafRegionalAsyncClient.CreateXssMatchSet * @see AWS API Documentation */ @Override public CompletableFuture createXssMatchSet(CreateXssMatchSetRequest createXssMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createXssMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createXssMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateXssMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateXssMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateXssMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateXssMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createXssMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                            *

                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                            *
                            *

                            * Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet if it's still used in any * Rules or if it still includes any ByteMatchTuple objects (any filters). *

                            *

                            * If you just want to remove a ByteMatchSet from a Rule, use UpdateRule. *

                            *

                            * To permanently delete a ByteMatchSet, perform the following steps: *

                            *
                              *
                            1. *

                              * Update the ByteMatchSet to remove filters, if any. For more information, see * UpdateByteMatchSet. *

                              *
                            2. *
                            3. *

                              * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteByteMatchSet request. *

                              *
                            4. *
                            5. *

                              * Submit a DeleteByteMatchSet request. *

                              *
                            6. *
                            * * @param deleteByteMatchSetRequest * @return A Java Future containing the result of the DeleteByteMatchSet operation returned by the service.
                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                              *
                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                            • *
                            • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                            • *
                            • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                            • *
                            • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                              *
                                *
                              • *

                                * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                *
                              • *
                              • *

                                * You tried to delete a Rule that is still referenced by a WebACL. *

                                *
                              • *
                              • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                              • *
                              • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                *
                                  *
                                • *

                                  * You tried to delete a WebACL that still contains one or more Rule objects. *

                                  *
                                • *
                                • *

                                  * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                  *
                                • *
                                • *

                                  * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                  *
                                • *
                                • *

                                  * You tried to delete an IPSet that references one or more IP addresses. *

                                  *
                                • *
                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                • *
                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                • *
                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                • *
                                * @sample WafRegionalAsyncClient.DeleteByteMatchSet * @see AWS API Documentation */ @Override public CompletableFuture deleteByteMatchSet(DeleteByteMatchSetRequest deleteByteMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteByteMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteByteMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteByteMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteByteMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteByteMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteByteMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteByteMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                *

                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                *
                                *

                                * Permanently deletes a GeoMatchSet. You can't delete a GeoMatchSet if it's still used in any * Rules or if it still includes any countries. *

                                *

                                * If you just want to remove a GeoMatchSet from a Rule, use UpdateRule. *

                                *

                                * To permanently delete a GeoMatchSet from AWS WAF, perform the following steps: *

                                *
                                  *
                                1. *

                                  * Update the GeoMatchSet to remove any countries. For more information, see UpdateGeoMatchSet. *

                                  *
                                2. *
                                3. *

                                  * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteGeoMatchSet request. *

                                  *
                                4. *
                                5. *

                                  * Submit a DeleteGeoMatchSet request. *

                                  *
                                6. *
                                * * @param deleteGeoMatchSetRequest * @return A Java Future containing the result of the DeleteGeoMatchSet operation returned by the service.
                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                  *
                                • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                • *
                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                • *
                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                • *
                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                • *
                                • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                  *
                                    *
                                  • *

                                    * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                    *
                                  • *
                                  • *

                                    * You tried to delete a Rule that is still referenced by a WebACL. *

                                    *
                                  • *
                                  • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                    *
                                      *
                                    • *

                                      * You tried to delete a WebACL that still contains one or more Rule objects. *

                                      *
                                    • *
                                    • *

                                      * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                      *
                                    • *
                                    • *

                                      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                      *
                                    • *
                                    • *

                                      * You tried to delete an IPSet that references one or more IP addresses. *

                                      *
                                    • *
                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                    • *
                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                    • *
                                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                    • *
                                    * @sample WafRegionalAsyncClient.DeleteGeoMatchSet * @see AWS API Documentation */ @Override public CompletableFuture deleteGeoMatchSet(DeleteGeoMatchSetRequest deleteGeoMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteGeoMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteGeoMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteGeoMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteGeoMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteGeoMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteGeoMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteGeoMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                    *

                                    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                    *
                                    *

                                    * Permanently deletes an IPSet. You can't delete an IPSet if it's still used in any * Rules or if it still includes any IP addresses. *

                                    *

                                    * If you just want to remove an IPSet from a Rule, use UpdateRule. *

                                    *

                                    * To permanently delete an IPSet from AWS WAF, perform the following steps: *

                                    *
                                      *
                                    1. *

                                      * Update the IPSet to remove IP address ranges, if any. For more information, see UpdateIPSet. *

                                      *
                                    2. *
                                    3. *

                                      * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteIPSet request. *

                                      *
                                    4. *
                                    5. *

                                      * Submit a DeleteIPSet request. *

                                      *
                                    6. *
                                    * * @param deleteIpSetRequest * @return A Java Future containing the result of the DeleteIPSet operation returned by the service.
                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                      *
                                    • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                    • *
                                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                    • *
                                    • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                    • *
                                    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                    • *
                                    • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                      *
                                        *
                                      • *

                                        * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                        *
                                      • *
                                      • *

                                        * You tried to delete a Rule that is still referenced by a WebACL. *

                                        *
                                      • *
                                      • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                        *
                                          *
                                        • *

                                          * You tried to delete a WebACL that still contains one or more Rule objects. *

                                          *
                                        • *
                                        • *

                                          * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                          *
                                        • *
                                        • *

                                          * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                          *
                                        • *
                                        • *

                                          * You tried to delete an IPSet that references one or more IP addresses. *

                                          *
                                        • *
                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                        • *
                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                        • *
                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                        • *
                                        * @sample WafRegionalAsyncClient.DeleteIPSet * @see AWS API * Documentation */ @Override public CompletableFuture deleteIPSet(DeleteIpSetRequest deleteIpSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteIpSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteIpSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteIPSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteIpSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteIPSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteIpSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteIpSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                        *

                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                        *
                                        *

                                        * Permanently deletes the LoggingConfiguration from the specified web ACL. *

                                        * * @param deleteLoggingConfigurationRequest * @return A Java Future containing the result of the DeleteLoggingConfiguration operation returned by the service.
                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                          *
                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                        • *
                                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                        • *
                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                        • *
                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                        • *
                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                        • *
                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                        • *
                                        * @sample WafRegionalAsyncClient.DeleteLoggingConfiguration * @see AWS API Documentation */ @Override public CompletableFuture deleteLoggingConfiguration( DeleteLoggingConfigurationRequest deleteLoggingConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteLoggingConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteLoggingConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteLoggingConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteLoggingConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteLoggingConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteLoggingConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteLoggingConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                        *

                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                        *
                                        *

                                        * Permanently deletes an IAM policy from the specified RuleGroup. *

                                        *

                                        * The user making the request must be the owner of the RuleGroup. *

                                        * * @param deletePermissionPolicyRequest * @return A Java Future containing the result of the DeletePermissionPolicy operation returned by the service.
                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                          *
                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                        • *
                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                        • *
                                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                        • *
                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                        • *
                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                        • *
                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                        • *
                                        * @sample WafRegionalAsyncClient.DeletePermissionPolicy * @see AWS API Documentation */ @Override public CompletableFuture deletePermissionPolicy( DeletePermissionPolicyRequest deletePermissionPolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deletePermissionPolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deletePermissionPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeletePermissionPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeletePermissionPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeletePermissionPolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeletePermissionPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deletePermissionPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                        *

                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                        *
                                        *

                                        * Permanently deletes a RateBasedRule. You can't delete a rule if it's still used in any WebACL * objects or if it still includes any predicates, such as ByteMatchSet objects. *

                                        *

                                        * If you just want to remove a rule from a WebACL, use UpdateWebACL. *

                                        *

                                        * To permanently delete a RateBasedRule from AWS WAF, perform the following steps: *

                                        *
                                          *
                                        1. *

                                          * Update the RateBasedRule to remove predicates, if any. For more information, see * UpdateRateBasedRule. *

                                          *
                                        2. *
                                        3. *

                                          * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteRateBasedRule request. *

                                          *
                                        4. *
                                        5. *

                                          * Submit a DeleteRateBasedRule request. *

                                          *
                                        6. *
                                        * * @param deleteRateBasedRuleRequest * @return A Java Future containing the result of the DeleteRateBasedRule operation returned by the service.
                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                          *
                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                        • *
                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                        • *
                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                        • *
                                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                        • *
                                        • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                          *
                                            *
                                          • *

                                            * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                            *
                                          • *
                                          • *

                                            * You tried to delete a Rule that is still referenced by a WebACL. *

                                            *
                                          • *
                                          • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                            *
                                              *
                                            • *

                                              * You tried to delete a WebACL that still contains one or more Rule objects. *

                                              *
                                            • *
                                            • *

                                              * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                              *
                                            • *
                                            • *

                                              * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                              *
                                            • *
                                            • *

                                              * You tried to delete an IPSet that references one or more IP addresses. *

                                              *
                                            • *
                                            • WafTagOperationException
                                            • *
                                            • WafTagOperationInternalErrorException
                                            • *
                                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                            • *
                                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                            • *
                                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                            • *
                                            * @sample WafRegionalAsyncClient.DeleteRateBasedRule * @see AWS API Documentation */ @Override public CompletableFuture deleteRateBasedRule( DeleteRateBasedRuleRequest deleteRateBasedRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRateBasedRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRateBasedRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRateBasedRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRateBasedRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRateBasedRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRateBasedRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRateBasedRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                            *

                                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                            *
                                            *

                                            * Permanently deletes a RegexMatchSet. You can't delete a RegexMatchSet if it's still used in * any Rules or if it still includes any RegexMatchTuples objects (any filters). *

                                            *

                                            * If you just want to remove a RegexMatchSet from a Rule, use UpdateRule. *

                                            *

                                            * To permanently delete a RegexMatchSet, perform the following steps: *

                                            *
                                              *
                                            1. *

                                              * Update the RegexMatchSet to remove filters, if any. For more information, see * UpdateRegexMatchSet. *

                                              *
                                            2. *
                                            3. *

                                              * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteRegexMatchSet request. *

                                              *
                                            4. *
                                            5. *

                                              * Submit a DeleteRegexMatchSet request. *

                                              *
                                            6. *
                                            * * @param deleteRegexMatchSetRequest * @return A Java Future containing the result of the DeleteRegexMatchSet operation returned by the service.
                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                              *
                                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                            • *
                                            • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                            • *
                                            • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                            • *
                                            • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                              *
                                                *
                                              • *

                                                * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                *
                                              • *
                                              • *

                                                * You tried to delete a Rule that is still referenced by a WebACL. *

                                                *
                                              • *
                                              • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                              • *
                                              • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                *
                                                  *
                                                • *

                                                  * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                  *
                                                • *
                                                • *

                                                  * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                  *
                                                • *
                                                • *

                                                  * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                  *
                                                • *
                                                • *

                                                  * You tried to delete an IPSet that references one or more IP addresses. *

                                                  *
                                                • *
                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                • *
                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                • *
                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                • *
                                                * @sample WafRegionalAsyncClient.DeleteRegexMatchSet * @see AWS API Documentation */ @Override public CompletableFuture deleteRegexMatchSet( DeleteRegexMatchSetRequest deleteRegexMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRegexMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRegexMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRegexMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRegexMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRegexMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRegexMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRegexMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                *

                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                *
                                                *

                                                * Permanently deletes a RegexPatternSet. You can't delete a RegexPatternSet if it's still used * in any RegexMatchSet or if the RegexPatternSet is not empty. *

                                                * * @param deleteRegexPatternSetRequest * @return A Java Future containing the result of the DeleteRegexPatternSet operation returned by the service.
                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                  *
                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                • *
                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                • *
                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                • *
                                                • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                  *
                                                    *
                                                  • *

                                                    * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                    *
                                                  • *
                                                  • *

                                                    * You tried to delete a Rule that is still referenced by a WebACL. *

                                                    *
                                                  • *
                                                  • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                  • *
                                                  • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                    *
                                                      *
                                                    • *

                                                      * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                      *
                                                    • *
                                                    • *

                                                      * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                      *
                                                    • *
                                                    • *

                                                      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                      *
                                                    • *
                                                    • *

                                                      * You tried to delete an IPSet that references one or more IP addresses. *

                                                      *
                                                    • *
                                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                    • *
                                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                    • *
                                                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                    • *
                                                    * @sample WafRegionalAsyncClient.DeleteRegexPatternSet * @see AWS API Documentation */ @Override public CompletableFuture deleteRegexPatternSet( DeleteRegexPatternSetRequest deleteRegexPatternSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRegexPatternSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRegexPatternSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRegexPatternSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRegexPatternSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRegexPatternSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRegexPatternSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRegexPatternSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                    *

                                                    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                    *
                                                    *

                                                    * Permanently deletes a Rule. You can't delete a Rule if it's still used in any * WebACL objects or if it still includes any predicates, such as ByteMatchSet objects. *

                                                    *

                                                    * If you just want to remove a Rule from a WebACL, use UpdateWebACL. *

                                                    *

                                                    * To permanently delete a Rule from AWS WAF, perform the following steps: *

                                                    *
                                                      *
                                                    1. *

                                                      * Update the Rule to remove predicates, if any. For more information, see UpdateRule. *

                                                      *
                                                    2. *
                                                    3. *

                                                      * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteRule request. *

                                                      *
                                                    4. *
                                                    5. *

                                                      * Submit a DeleteRule request. *

                                                      *
                                                    6. *
                                                    * * @param deleteRuleRequest * @return A Java Future containing the result of the DeleteRule operation returned by the service.
                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                      *
                                                    • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                    • *
                                                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                    • *
                                                    • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                    • *
                                                    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                    • *
                                                    • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                      *
                                                        *
                                                      • *

                                                        * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                        *
                                                      • *
                                                      • *

                                                        * You tried to delete a Rule that is still referenced by a WebACL. *

                                                        *
                                                      • *
                                                      • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                        *
                                                          *
                                                        • *

                                                          * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                          *
                                                        • *
                                                        • *

                                                          * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                          *
                                                        • *
                                                        • *

                                                          * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                          *
                                                        • *
                                                        • *

                                                          * You tried to delete an IPSet that references one or more IP addresses. *

                                                          *
                                                        • *
                                                        • WafTagOperationException
                                                        • *
                                                        • WafTagOperationInternalErrorException
                                                        • *
                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                        • *
                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                        • *
                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                        • *
                                                        * @sample WafRegionalAsyncClient.DeleteRule * @see AWS API * Documentation */ @Override public CompletableFuture deleteRule(DeleteRuleRequest deleteRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("DeleteRule") .withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                        *

                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                        *
                                                        *

                                                        * Permanently deletes a RuleGroup. You can't delete a RuleGroup if it's still used in any * WebACL objects or if it still includes any rules. *

                                                        *

                                                        * If you just want to remove a RuleGroup from a WebACL, use UpdateWebACL. *

                                                        *

                                                        * To permanently delete a RuleGroup from AWS WAF, perform the following steps: *

                                                        *
                                                          *
                                                        1. *

                                                          * Update the RuleGroup to remove rules, if any. For more information, see UpdateRuleGroup. *

                                                          *
                                                        2. *
                                                        3. *

                                                          * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteRuleGroup request. *

                                                          *
                                                        4. *
                                                        5. *

                                                          * Submit a DeleteRuleGroup request. *

                                                          *
                                                        6. *
                                                        * * @param deleteRuleGroupRequest * @return A Java Future containing the result of the DeleteRuleGroup operation returned by the service.
                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                          *
                                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                        • *
                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                        • *
                                                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                        • *
                                                        • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                          *
                                                            *
                                                          • *

                                                            * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                            *
                                                          • *
                                                          • *

                                                            * You tried to delete a Rule that is still referenced by a WebACL. *

                                                            *
                                                          • *
                                                          • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                            *
                                                              *
                                                            • *

                                                              * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                              *
                                                            • *
                                                            • *

                                                              * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                              *
                                                            • *
                                                            • *

                                                              * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                              *
                                                            • *
                                                            • *

                                                              * You tried to delete an IPSet that references one or more IP addresses. *

                                                              *
                                                            • *
                                                            • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                              *
                                                                *
                                                              • *

                                                                * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                *
                                                              • *
                                                              • *

                                                                * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                *
                                                              • *
                                                              • *

                                                                * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                *
                                                              • *
                                                              • *

                                                                * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                *
                                                              • *
                                                              • *

                                                                * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                *
                                                              • *
                                                              • WafTagOperationException
                                                              • *
                                                              • WafTagOperationInternalErrorException
                                                              • *
                                                              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                              • *
                                                              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                              • *
                                                              • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                              • *
                                                              * @sample WafRegionalAsyncClient.DeleteRuleGroup * @see AWS * API Documentation */ @Override public CompletableFuture deleteRuleGroup(DeleteRuleGroupRequest deleteRuleGroupRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRuleGroupRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRuleGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRuleGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRuleGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRuleGroup").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRuleGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRuleGroupRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                              * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                              *

                                                              * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                              *
                                                              *

                                                              * Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet if it's still * used in any Rules or if it still includes any SizeConstraint objects (any filters). *

                                                              *

                                                              * If you just want to remove a SizeConstraintSet from a Rule, use UpdateRule. *

                                                              *

                                                              * To permanently delete a SizeConstraintSet, perform the following steps: *

                                                              *
                                                                *
                                                              1. *

                                                                * Update the SizeConstraintSet to remove filters, if any. For more information, see * UpdateSizeConstraintSet. *

                                                                *
                                                              2. *
                                                              3. *

                                                                * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteSizeConstraintSet request. *

                                                                *
                                                              4. *
                                                              5. *

                                                                * Submit a DeleteSizeConstraintSet request. *

                                                                *
                                                              6. *
                                                              * * @param deleteSizeConstraintSetRequest * @return A Java Future containing the result of the DeleteSizeConstraintSet operation returned by the service.
                                                              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                *
                                                              • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                              • *
                                                              • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                              • *
                                                              • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                              • *
                                                              • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                              • *
                                                              • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                *
                                                                  *
                                                                • *

                                                                  * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                  *
                                                                • *
                                                                • *

                                                                  * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                  *
                                                                • *
                                                                • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                                  *
                                                                    *
                                                                  • *

                                                                    * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                                    *
                                                                  • *
                                                                  • *

                                                                    * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                                    *
                                                                  • *
                                                                  • *

                                                                    * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                                    *
                                                                  • *
                                                                  • *

                                                                    * You tried to delete an IPSet that references one or more IP addresses. *

                                                                    *
                                                                  • *
                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                  • *
                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                  • *
                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                  • *
                                                                  * @sample WafRegionalAsyncClient.DeleteSizeConstraintSet * @see AWS API Documentation */ @Override public CompletableFuture deleteSizeConstraintSet( DeleteSizeConstraintSetRequest deleteSizeConstraintSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteSizeConstraintSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteSizeConstraintSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteSizeConstraintSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteSizeConstraintSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteSizeConstraintSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteSizeConstraintSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteSizeConstraintSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                  *

                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                  *
                                                                  *

                                                                  * Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet if it's * still used in any Rules or if it still contains any SqlInjectionMatchTuple objects. *

                                                                  *

                                                                  * If you just want to remove a SqlInjectionMatchSet from a Rule, use UpdateRule. *

                                                                  *

                                                                  * To permanently delete a SqlInjectionMatchSet from AWS WAF, perform the following steps: *

                                                                  *
                                                                    *
                                                                  1. *

                                                                    * Update the SqlInjectionMatchSet to remove filters, if any. For more information, see * UpdateSqlInjectionMatchSet. *

                                                                    *
                                                                  2. *
                                                                  3. *

                                                                    * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteSqlInjectionMatchSet request. *

                                                                    *
                                                                  4. *
                                                                  5. *

                                                                    * Submit a DeleteSqlInjectionMatchSet request. *

                                                                    *
                                                                  6. *
                                                                  * * @param deleteSqlInjectionMatchSetRequest * A request to delete a SqlInjectionMatchSet from AWS WAF. * @return A Java Future containing the result of the DeleteSqlInjectionMatchSet operation returned by the service.
                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                    *
                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                  • *
                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                  • *
                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                  • *
                                                                  • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                    *
                                                                      *
                                                                    • *

                                                                      * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                      *
                                                                    • *
                                                                    • *

                                                                      * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                      *
                                                                    • *
                                                                    • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                    • *
                                                                    • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                                      *
                                                                        *
                                                                      • *

                                                                        * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                                        *
                                                                      • *
                                                                      • *

                                                                        * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                                        *
                                                                      • *
                                                                      • *

                                                                        * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                                        *
                                                                      • *
                                                                      • *

                                                                        * You tried to delete an IPSet that references one or more IP addresses. *

                                                                        *
                                                                      • *
                                                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                      • *
                                                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                      • *
                                                                      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                      • *
                                                                      * @sample WafRegionalAsyncClient.DeleteSqlInjectionMatchSet * @see AWS API Documentation */ @Override public CompletableFuture deleteSqlInjectionMatchSet( DeleteSqlInjectionMatchSetRequest deleteSqlInjectionMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteSqlInjectionMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteSqlInjectionMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteSqlInjectionMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteSqlInjectionMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteSqlInjectionMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteSqlInjectionMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteSqlInjectionMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                      *

                                                                      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                      *
                                                                      *

                                                                      * Permanently deletes a WebACL. You can't delete a WebACL if it still contains any * Rules. *

                                                                      *

                                                                      * To delete a WebACL, perform the following steps: *

                                                                      *
                                                                        *
                                                                      1. *

                                                                        * Update the WebACL to remove Rules, if any. For more information, see * UpdateWebACL. *

                                                                        *
                                                                      2. *
                                                                      3. *

                                                                        * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteWebACL request. *

                                                                        *
                                                                      4. *
                                                                      5. *

                                                                        * Submit a DeleteWebACL request. *

                                                                        *
                                                                      6. *
                                                                      * * @param deleteWebAclRequest * @return A Java Future containing the result of the DeleteWebACL operation returned by the service.
                                                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                        *
                                                                      • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                      • *
                                                                      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                      • *
                                                                      • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                      • *
                                                                      • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                      • *
                                                                      • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                        *
                                                                          *
                                                                        • *

                                                                          * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                          *
                                                                        • *
                                                                        • *

                                                                          * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                          *
                                                                        • *
                                                                        • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                                          *
                                                                            *
                                                                          • *

                                                                            * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                                            *
                                                                          • *
                                                                          • *

                                                                            * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                                            *
                                                                          • *
                                                                          • *

                                                                            * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                                            *
                                                                          • *
                                                                          • *

                                                                            * You tried to delete an IPSet that references one or more IP addresses. *

                                                                            *
                                                                          • *
                                                                          • WafTagOperationException
                                                                          • *
                                                                          • WafTagOperationInternalErrorException
                                                                          • *
                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                          • *
                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                          • *
                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                          • *
                                                                          * @sample WafRegionalAsyncClient.DeleteWebACL * @see AWS API * Documentation */ @Override public CompletableFuture deleteWebACL(DeleteWebAclRequest deleteWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteWebACL").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteWebAclRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                          *

                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                          *
                                                                          *

                                                                          * Permanently deletes an XssMatchSet. You can't delete an XssMatchSet if it's still used in any * Rules or if it still contains any XssMatchTuple objects. *

                                                                          *

                                                                          * If you just want to remove an XssMatchSet from a Rule, use UpdateRule. *

                                                                          *

                                                                          * To permanently delete an XssMatchSet from AWS WAF, perform the following steps: *

                                                                          *
                                                                            *
                                                                          1. *

                                                                            * Update the XssMatchSet to remove filters, if any. For more information, see * UpdateXssMatchSet. *

                                                                            *
                                                                          2. *
                                                                          3. *

                                                                            * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of a * DeleteXssMatchSet request. *

                                                                            *
                                                                          4. *
                                                                          5. *

                                                                            * Submit a DeleteXssMatchSet request. *

                                                                            *
                                                                          6. *
                                                                          * * @param deleteXssMatchSetRequest * A request to delete an XssMatchSet from AWS WAF. * @return A Java Future containing the result of the DeleteXssMatchSet operation returned by the service.
                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                            *
                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                          • *
                                                                          • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                          • *
                                                                          • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                          • *
                                                                          • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                            *
                                                                              *
                                                                            • *

                                                                              * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                              *
                                                                            • *
                                                                            • *

                                                                              * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                              *
                                                                            • *
                                                                            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                            • *
                                                                            • WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't * empty. For example:

                                                                              *
                                                                                *
                                                                              • *

                                                                                * You tried to delete a WebACL that still contains one or more Rule objects. *

                                                                                *
                                                                              • *
                                                                              • *

                                                                                * You tried to delete a Rule that still contains one or more ByteMatchSet objects * or other predicates. *

                                                                                *
                                                                              • *
                                                                              • *

                                                                                * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple * objects. *

                                                                                *
                                                                              • *
                                                                              • *

                                                                                * You tried to delete an IPSet that references one or more IP addresses. *

                                                                                *
                                                                              • *
                                                                              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                              • *
                                                                              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                              • *
                                                                              • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                              • *
                                                                              * @sample WafRegionalAsyncClient.DeleteXssMatchSet * @see AWS API Documentation */ @Override public CompletableFuture deleteXssMatchSet(DeleteXssMatchSetRequest deleteXssMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteXssMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteXssMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteXssMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteXssMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteXssMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteXssMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteXssMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                              * This is AWS WAF Classic Regional documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                              *

                                                                              * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                              *
                                                                              *

                                                                              * Removes a web ACL from the specified resource, either an application load balancer or Amazon API Gateway stage. *

                                                                              * * @param disassociateWebAclRequest * @return A Java Future containing the result of the DisassociateWebACL operation returned by the service.
                                                                              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                *
                                                                              • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                              • *
                                                                              • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                              • *
                                                                              • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                *
                                                                                  *
                                                                                • *

                                                                                  * You specified an invalid parameter name. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You specified an invalid value. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                  *
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.DisassociateWebACL * @see AWS API Documentation */ @Override public CompletableFuture disassociateWebACL(DisassociateWebAclRequest disassociateWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(disassociateWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, disassociateWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DisassociateWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DisassociateWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DisassociateWebACL").withProtocolMetadata(protocolMetadata) .withMarshaller(new DisassociateWebAclRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(disassociateWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the ByteMatchSet specified by ByteMatchSetId. *

                                                                                * * @param getByteMatchSetRequest * @return A Java Future containing the result of the GetByteMatchSet operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetByteMatchSet * @see AWS * API Documentation */ @Override public CompletableFuture getByteMatchSet(GetByteMatchSetRequest getByteMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getByteMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getByteMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetByteMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetByteMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetByteMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetByteMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getByteMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in * the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting * requests to AWS WAF. *

                                                                                *

                                                                                * Each create, update, or delete request must use a unique change token. If your application submits a * GetChangeToken request and then submits a second GetChangeToken request before * submitting a create, update, or delete request, the second GetChangeToken request returns the same * value as the first GetChangeToken request. *

                                                                                *

                                                                                * When you use a change token in a create, update, or delete request, the status of the change token changes to * PENDING, which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use * GetChangeTokenStatus to determine the status of your change token. *

                                                                                * * @param getChangeTokenRequest * @return A Java Future containing the result of the GetChangeToken operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetChangeToken * @see AWS * API Documentation */ @Override public CompletableFuture getChangeToken(GetChangeTokenRequest getChangeTokenRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getChangeTokenRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getChangeTokenRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetChangeToken"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetChangeTokenResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetChangeToken").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetChangeTokenRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getChangeTokenRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the status of a ChangeToken that you got by calling GetChangeToken. * ChangeTokenStatus is one of the following values: *

                                                                                *
                                                                                  *
                                                                                • *

                                                                                  * PROVISIONED: You requested the change token by calling GetChangeToken, but you haven't * used it yet in a call to create, update, or delete an AWS WAF object. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * PENDING: AWS WAF is propagating the create, update, or delete request to all AWS WAF servers. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * INSYNC: Propagation is complete. *

                                                                                  *
                                                                                • *
                                                                                * * @param getChangeTokenStatusRequest * @return A Java Future containing the result of the GetChangeTokenStatus operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetChangeTokenStatus * @see AWS API Documentation */ @Override public CompletableFuture getChangeTokenStatus( GetChangeTokenStatusRequest getChangeTokenStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getChangeTokenStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getChangeTokenStatusRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetChangeTokenStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetChangeTokenStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetChangeTokenStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetChangeTokenStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getChangeTokenStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the GeoMatchSet that is specified by GeoMatchSetId. *

                                                                                * * @param getGeoMatchSetRequest * @return A Java Future containing the result of the GetGeoMatchSet operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetGeoMatchSet * @see AWS * API Documentation */ @Override public CompletableFuture getGeoMatchSet(GetGeoMatchSetRequest getGeoMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getGeoMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getGeoMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetGeoMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetGeoMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetGeoMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetGeoMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getGeoMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the IPSet that is specified by IPSetId. *

                                                                                * * @param getIpSetRequest * @return A Java Future containing the result of the GetIPSet operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetIPSet * @see AWS API * Documentation */ @Override public CompletableFuture getIPSet(GetIpSetRequest getIpSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getIpSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getIpSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetIPSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetIpSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("GetIPSet") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetIpSetRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withMetricCollector(apiCallMetricCollector).withInput(getIpSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the LoggingConfiguration for the specified web ACL. *

                                                                                * * @param getLoggingConfigurationRequest * @return A Java Future containing the result of the GetLoggingConfiguration operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetLoggingConfiguration * @see AWS API Documentation */ @Override public CompletableFuture getLoggingConfiguration( GetLoggingConfigurationRequest getLoggingConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getLoggingConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getLoggingConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLoggingConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetLoggingConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLoggingConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetLoggingConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getLoggingConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the IAM policy attached to the RuleGroup. *

                                                                                * * @param getPermissionPolicyRequest * @return A Java Future containing the result of the GetPermissionPolicy operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetPermissionPolicy * @see AWS API Documentation */ @Override public CompletableFuture getPermissionPolicy( GetPermissionPolicyRequest getPermissionPolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getPermissionPolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getPermissionPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetPermissionPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetPermissionPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetPermissionPolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetPermissionPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getPermissionPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns the RateBasedRule that is specified by the RuleId that you included in the * GetRateBasedRule request. *

                                                                                * * @param getRateBasedRuleRequest * @return A Java Future containing the result of the GetRateBasedRule operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                • *
                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                • *
                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample WafRegionalAsyncClient.GetRateBasedRule * @see AWS * API Documentation */ @Override public CompletableFuture getRateBasedRule(GetRateBasedRuleRequest getRateBasedRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRateBasedRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRateBasedRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRateBasedRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetRateBasedRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRateBasedRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRateBasedRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRateBasedRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                *

                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                *
                                                                                *

                                                                                * Returns an array of IP addresses currently being blocked by the RateBasedRule that is specified by the * RuleId. The maximum number of managed keys that will be blocked is 10,000. If more than 10,000 * addresses exceed the rate limit, the 10,000 addresses with the highest rates will be blocked. *

                                                                                * * @param getRateBasedRuleManagedKeysRequest * @return A Java Future containing the result of the GetRateBasedRuleManagedKeys operation returned by the service.
                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                  *
                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                • *
                                                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                • *
                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                • *
                                                                                • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                  *
                                                                                    *
                                                                                  • *

                                                                                    * You specified an invalid parameter name. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You specified an invalid value. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                    *
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetRateBasedRuleManagedKeys * @see AWS API Documentation */ @Override public CompletableFuture getRateBasedRuleManagedKeys( GetRateBasedRuleManagedKeysRequest getRateBasedRuleManagedKeysRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRateBasedRuleManagedKeysRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRateBasedRuleManagedKeysRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRateBasedRuleManagedKeys"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetRateBasedRuleManagedKeysResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRateBasedRuleManagedKeys").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRateBasedRuleManagedKeysRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRateBasedRuleManagedKeysRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the RegexMatchSet specified by RegexMatchSetId. *

                                                                                  * * @param getRegexMatchSetRequest * @return A Java Future containing the result of the GetRegexMatchSet operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetRegexMatchSet * @see AWS * API Documentation */ @Override public CompletableFuture getRegexMatchSet(GetRegexMatchSetRequest getRegexMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRegexMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRegexMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRegexMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetRegexMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRegexMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRegexMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRegexMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the RegexPatternSet specified by RegexPatternSetId. *

                                                                                  * * @param getRegexPatternSetRequest * @return A Java Future containing the result of the GetRegexPatternSet operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetRegexPatternSet * @see AWS API Documentation */ @Override public CompletableFuture getRegexPatternSet(GetRegexPatternSetRequest getRegexPatternSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRegexPatternSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRegexPatternSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRegexPatternSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetRegexPatternSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRegexPatternSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRegexPatternSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRegexPatternSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the Rule that is specified by the RuleId that you included in the * GetRule request. *

                                                                                  * * @param getRuleRequest * @return A Java Future containing the result of the GetRule operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetRule * @see AWS API * Documentation */ @Override public CompletableFuture getRule(GetRuleRequest getRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("GetRule") .withProtocolMetadata(protocolMetadata).withMarshaller(new GetRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the RuleGroup that is specified by the RuleGroupId that you included in the * GetRuleGroup request. *

                                                                                  *

                                                                                  * To view the rules in a rule group, use ListActivatedRulesInRuleGroup. *

                                                                                  * * @param getRuleGroupRequest * @return A Java Future containing the result of the GetRuleGroup operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetRuleGroup * @see AWS API * Documentation */ @Override public CompletableFuture getRuleGroup(GetRuleGroupRequest getRuleGroupRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRuleGroupRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRuleGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRuleGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetRuleGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRuleGroup").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRuleGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRuleGroupRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Gets detailed information about a specified number of requests--a sample--that AWS WAF randomly selects from * among the first 5,000 requests that your AWS resource received during a time range that you choose. You can * specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours. *

                                                                                  *

                                                                                  * GetSampledRequests returns a time range, which is usually the time range that you specified. * However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time * range elapsed, GetSampledRequests returns an updated time range. This new time range indicates the * actual period during which AWS WAF selected the requests in the sample. *

                                                                                  * * @param getSampledRequestsRequest * @return A Java Future containing the result of the GetSampledRequests operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetSampledRequests * @see AWS API Documentation */ @Override public CompletableFuture getSampledRequests(GetSampledRequestsRequest getSampledRequestsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getSampledRequestsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getSampledRequestsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetSampledRequests"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetSampledRequestsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetSampledRequests").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetSampledRequestsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getSampledRequestsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the SizeConstraintSet specified by SizeConstraintSetId. *

                                                                                  * * @param getSizeConstraintSetRequest * @return A Java Future containing the result of the GetSizeConstraintSet operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetSizeConstraintSet * @see AWS API Documentation */ @Override public CompletableFuture getSizeConstraintSet( GetSizeConstraintSetRequest getSizeConstraintSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getSizeConstraintSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getSizeConstraintSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetSizeConstraintSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetSizeConstraintSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetSizeConstraintSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetSizeConstraintSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getSizeConstraintSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the SqlInjectionMatchSet that is specified by SqlInjectionMatchSetId. *

                                                                                  * * @param getSqlInjectionMatchSetRequest * A request to get a SqlInjectionMatchSet. * @return A Java Future containing the result of the GetSqlInjectionMatchSet operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetSqlInjectionMatchSet * @see AWS API Documentation */ @Override public CompletableFuture getSqlInjectionMatchSet( GetSqlInjectionMatchSetRequest getSqlInjectionMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getSqlInjectionMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getSqlInjectionMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetSqlInjectionMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetSqlInjectionMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetSqlInjectionMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetSqlInjectionMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getSqlInjectionMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the WebACL that is specified by WebACLId. *

                                                                                  * * @param getWebAclRequest * @return A Java Future containing the result of the GetWebACL operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                  • *
                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                  • *
                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample WafRegionalAsyncClient.GetWebACL * @see AWS API * Documentation */ @Override public CompletableFuture getWebACL(GetWebAclRequest getWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("GetWebACL") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetWebAclRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withMetricCollector(apiCallMetricCollector).withInput(getWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                  * This is AWS WAF Classic Regional documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                  *

                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                  *
                                                                                  *

                                                                                  * Returns the web ACL for the specified resource, either an application load balancer or Amazon API Gateway stage. *

                                                                                  * * @param getWebAclForResourceRequest * @return A Java Future containing the result of the GetWebACLForResource operation returned by the service.
                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                    *
                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                  • *
                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                  • *
                                                                                  • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                    *
                                                                                      *
                                                                                    • *

                                                                                      * You specified an invalid parameter name. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You specified an invalid value. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                      *
                                                                                    • *
                                                                                    • WafUnavailableEntityException The operation failed because the entity referenced is temporarily * unavailable. Retry your request.
                                                                                    • *
                                                                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                    • *
                                                                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                    • *
                                                                                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                    • *
                                                                                    * @sample WafRegionalAsyncClient.GetWebACLForResource * @see AWS API Documentation */ @Override public CompletableFuture getWebACLForResource( GetWebAclForResourceRequest getWebAclForResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWebAclForResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWebAclForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWebACLForResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetWebAclForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetWebACLForResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetWebAclForResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getWebAclForResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                    *

                                                                                    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                    *
                                                                                    *

                                                                                    * Returns the XssMatchSet that is specified by XssMatchSetId. *

                                                                                    * * @param getXssMatchSetRequest * A request to get an XssMatchSet. * @return A Java Future containing the result of the GetXssMatchSet operation returned by the service.
                                                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                      *
                                                                                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                    • *
                                                                                    • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                    • *
                                                                                    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                    • *
                                                                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                    • *
                                                                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                    • *
                                                                                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                    • *
                                                                                    * @sample WafRegionalAsyncClient.GetXssMatchSet * @see AWS * API Documentation */ @Override public CompletableFuture getXssMatchSet(GetXssMatchSetRequest getXssMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getXssMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getXssMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetXssMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetXssMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetXssMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetXssMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getXssMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                    *

                                                                                    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                    *
                                                                                    *

                                                                                    * Returns an array of ActivatedRule objects. *

                                                                                    * * @param listActivatedRulesInRuleGroupRequest * @return A Java Future containing the result of the ListActivatedRulesInRuleGroup operation returned by the * service.
                                                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                      *
                                                                                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                    • *
                                                                                    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                    • *
                                                                                    • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                      *
                                                                                        *
                                                                                      • *

                                                                                        * You specified an invalid parameter name. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You specified an invalid value. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                        *
                                                                                      • *
                                                                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                      • *
                                                                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                      • *
                                                                                      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                      • *
                                                                                      * @sample WafRegionalAsyncClient.ListActivatedRulesInRuleGroup * @see AWS API Documentation */ @Override public CompletableFuture listActivatedRulesInRuleGroup( ListActivatedRulesInRuleGroupRequest listActivatedRulesInRuleGroupRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listActivatedRulesInRuleGroupRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listActivatedRulesInRuleGroupRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListActivatedRulesInRuleGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListActivatedRulesInRuleGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListActivatedRulesInRuleGroup").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListActivatedRulesInRuleGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listActivatedRulesInRuleGroupRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                      *

                                                                                      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                      *
                                                                                      *

                                                                                      * Returns an array of ByteMatchSetSummary objects. *

                                                                                      * * @param listByteMatchSetsRequest * @return A Java Future containing the result of the ListByteMatchSets operation returned by the service.
                                                                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                        *
                                                                                      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                      • *
                                                                                      • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                      • *
                                                                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                      • *
                                                                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                      • *
                                                                                      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                      • *
                                                                                      * @sample WafRegionalAsyncClient.ListByteMatchSets * @see AWS API Documentation */ @Override public CompletableFuture listByteMatchSets(ListByteMatchSetsRequest listByteMatchSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listByteMatchSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listByteMatchSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListByteMatchSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListByteMatchSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListByteMatchSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListByteMatchSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listByteMatchSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                      *

                                                                                      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                      *
                                                                                      *

                                                                                      * Returns an array of GeoMatchSetSummary objects in the response. *

                                                                                      * * @param listGeoMatchSetsRequest * @return A Java Future containing the result of the ListGeoMatchSets operation returned by the service.
                                                                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                        *
                                                                                      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                      • *
                                                                                      • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                      • *
                                                                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                      • *
                                                                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                      • *
                                                                                      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                      • *
                                                                                      * @sample WafRegionalAsyncClient.ListGeoMatchSets * @see AWS * API Documentation */ @Override public CompletableFuture listGeoMatchSets(ListGeoMatchSetsRequest listGeoMatchSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listGeoMatchSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listGeoMatchSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListGeoMatchSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListGeoMatchSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListGeoMatchSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListGeoMatchSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listGeoMatchSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                      *

                                                                                      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                      *
                                                                                      *

                                                                                      * Returns an array of IPSetSummary objects in the response. *

                                                                                      * * @param listIpSetsRequest * @return A Java Future containing the result of the ListIPSets operation returned by the service.
                                                                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                        *
                                                                                      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                      • *
                                                                                      • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                      • *
                                                                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                      • *
                                                                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                      • *
                                                                                      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                      • *
                                                                                      * @sample WafRegionalAsyncClient.ListIPSets * @see AWS API * Documentation */ @Override public CompletableFuture listIPSets(ListIpSetsRequest listIpSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listIpSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listIpSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListIPSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListIpSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("ListIPSets") .withProtocolMetadata(protocolMetadata) .withMarshaller(new ListIpSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listIpSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                      *

                                                                                      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                      *
                                                                                      *

                                                                                      * Returns an array of LoggingConfiguration objects. *

                                                                                      * * @param listLoggingConfigurationsRequest * @return A Java Future containing the result of the ListLoggingConfigurations operation returned by the service.
                                                                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                        *
                                                                                      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                      • *
                                                                                      • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                      • *
                                                                                      • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                        *
                                                                                          *
                                                                                        • *

                                                                                          * You specified an invalid parameter name. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You specified an invalid value. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                          *
                                                                                        • *
                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                        • *
                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                        • *
                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                        • *
                                                                                        * @sample WafRegionalAsyncClient.ListLoggingConfigurations * @see AWS API Documentation */ @Override public CompletableFuture listLoggingConfigurations( ListLoggingConfigurationsRequest listLoggingConfigurationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listLoggingConfigurationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listLoggingConfigurationsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListLoggingConfigurations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListLoggingConfigurationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListLoggingConfigurations").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListLoggingConfigurationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listLoggingConfigurationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                        *

                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                        *
                                                                                        *

                                                                                        * Returns an array of RuleSummary objects. *

                                                                                        * * @param listRateBasedRulesRequest * @return A Java Future containing the result of the ListRateBasedRules operation returned by the service.
                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                          *
                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                        • *
                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                        • *
                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                        • *
                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                        • *
                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                        • *
                                                                                        * @sample WafRegionalAsyncClient.ListRateBasedRules * @see AWS API Documentation */ @Override public CompletableFuture listRateBasedRules(ListRateBasedRulesRequest listRateBasedRulesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listRateBasedRulesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listRateBasedRulesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListRateBasedRules"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListRateBasedRulesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListRateBasedRules").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListRateBasedRulesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listRateBasedRulesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                        *

                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                        *
                                                                                        *

                                                                                        * Returns an array of RegexMatchSetSummary objects. *

                                                                                        * * @param listRegexMatchSetsRequest * @return A Java Future containing the result of the ListRegexMatchSets operation returned by the service.
                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                          *
                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                        • *
                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                        • *
                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                        • *
                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                        • *
                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                        • *
                                                                                        * @sample WafRegionalAsyncClient.ListRegexMatchSets * @see AWS API Documentation */ @Override public CompletableFuture listRegexMatchSets(ListRegexMatchSetsRequest listRegexMatchSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listRegexMatchSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listRegexMatchSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListRegexMatchSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListRegexMatchSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListRegexMatchSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListRegexMatchSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listRegexMatchSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                        *

                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                        *
                                                                                        *

                                                                                        * Returns an array of RegexPatternSetSummary objects. *

                                                                                        * * @param listRegexPatternSetsRequest * @return A Java Future containing the result of the ListRegexPatternSets operation returned by the service.
                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                          *
                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                        • *
                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                        • *
                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                        • *
                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                        • *
                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                        • *
                                                                                        * @sample WafRegionalAsyncClient.ListRegexPatternSets * @see AWS API Documentation */ @Override public CompletableFuture listRegexPatternSets( ListRegexPatternSetsRequest listRegexPatternSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listRegexPatternSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listRegexPatternSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListRegexPatternSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListRegexPatternSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListRegexPatternSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListRegexPatternSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listRegexPatternSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                        * This is AWS WAF Classic Regional documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                        *

                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                        *
                                                                                        *

                                                                                        * Returns an array of resources associated with the specified web ACL. *

                                                                                        * * @param listResourcesForWebAclRequest * @return A Java Future containing the result of the ListResourcesForWebACL operation returned by the service.
                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                          *
                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                        • *
                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                        • *
                                                                                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                        • *
                                                                                        • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                          *
                                                                                            *
                                                                                          • *

                                                                                            * You specified an invalid parameter name. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You specified an invalid value. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                            *
                                                                                          • *
                                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                          • *
                                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                          • *
                                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample WafRegionalAsyncClient.ListResourcesForWebACL * @see AWS API Documentation */ @Override public CompletableFuture listResourcesForWebACL( ListResourcesForWebAclRequest listResourcesForWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listResourcesForWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listResourcesForWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListResourcesForWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListResourcesForWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListResourcesForWebACL").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListResourcesForWebAclRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listResourcesForWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                          *

                                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                          *
                                                                                          *

                                                                                          * Returns an array of RuleGroup objects. *

                                                                                          * * @param listRuleGroupsRequest * @return A Java Future containing the result of the ListRuleGroups operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                            *
                                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                          • *
                                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                          • *
                                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                          • *
                                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample WafRegionalAsyncClient.ListRuleGroups * @see AWS * API Documentation */ @Override public CompletableFuture listRuleGroups(ListRuleGroupsRequest listRuleGroupsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listRuleGroupsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listRuleGroupsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListRuleGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListRuleGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListRuleGroups").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListRuleGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listRuleGroupsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                          *

                                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                          *
                                                                                          *

                                                                                          * Returns an array of RuleSummary objects. *

                                                                                          * * @param listRulesRequest * @return A Java Future containing the result of the ListRules operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                            *
                                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                          • *
                                                                                          • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                          • *
                                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                          • *
                                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                          • *
                                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample WafRegionalAsyncClient.ListRules * @see AWS API * Documentation */ @Override public CompletableFuture listRules(ListRulesRequest listRulesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listRulesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listRulesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListRules"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListRulesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("ListRules") .withProtocolMetadata(protocolMetadata) .withMarshaller(new ListRulesRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withMetricCollector(apiCallMetricCollector).withInput(listRulesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                          *

                                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                          *
                                                                                          *

                                                                                          * Returns an array of SizeConstraintSetSummary objects. *

                                                                                          * * @param listSizeConstraintSetsRequest * @return A Java Future containing the result of the ListSizeConstraintSets operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                            *
                                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                          • *
                                                                                          • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                          • *
                                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                          • *
                                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                          • *
                                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample WafRegionalAsyncClient.ListSizeConstraintSets * @see AWS API Documentation */ @Override public CompletableFuture listSizeConstraintSets( ListSizeConstraintSetsRequest listSizeConstraintSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listSizeConstraintSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listSizeConstraintSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListSizeConstraintSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListSizeConstraintSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListSizeConstraintSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListSizeConstraintSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listSizeConstraintSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                          *

                                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                          *
                                                                                          *

                                                                                          * Returns an array of SqlInjectionMatchSet objects. *

                                                                                          * * @param listSqlInjectionMatchSetsRequest * A request to list the SqlInjectionMatchSet objects created by the current AWS account. * @return A Java Future containing the result of the ListSqlInjectionMatchSets operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                            *
                                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                          • *
                                                                                          • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                          • *
                                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                          • *
                                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                          • *
                                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample WafRegionalAsyncClient.ListSqlInjectionMatchSets * @see AWS API Documentation */ @Override public CompletableFuture listSqlInjectionMatchSets( ListSqlInjectionMatchSetsRequest listSqlInjectionMatchSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listSqlInjectionMatchSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listSqlInjectionMatchSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListSqlInjectionMatchSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListSqlInjectionMatchSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListSqlInjectionMatchSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListSqlInjectionMatchSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listSqlInjectionMatchSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                          *

                                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                          *
                                                                                          *

                                                                                          * Returns an array of RuleGroup objects that you are subscribed to. *

                                                                                          * * @param listSubscribedRuleGroupsRequest * @return A Java Future containing the result of the ListSubscribedRuleGroups operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                            *
                                                                                          • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                          • *
                                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                          • *
                                                                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                          • *
                                                                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                          • *
                                                                                          • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample WafRegionalAsyncClient.ListSubscribedRuleGroups * @see AWS API Documentation */ @Override public CompletableFuture listSubscribedRuleGroups( ListSubscribedRuleGroupsRequest listSubscribedRuleGroupsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listSubscribedRuleGroupsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listSubscribedRuleGroupsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListSubscribedRuleGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListSubscribedRuleGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListSubscribedRuleGroups").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListSubscribedRuleGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listSubscribedRuleGroupsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                          * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                          *

                                                                                          * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                          *
                                                                                          *

                                                                                          * Retrieves the tags associated with the specified AWS resource. Tags are key:value pairs that you can use to * categorize and manage your resources, for purposes like billing. For example, you might set the tag key to * "customer" and the value to the customer name or ID. You can specify one or more tags to add to each AWS * resource, up to 50 tags for a resource. *

                                                                                          *

                                                                                          * Tagging is only available through the API, SDKs, and CLI. You can't manage or view tags through the AWS WAF * Classic console. You can tag the AWS resources that you manage through AWS WAF Classic: web ACLs, rule groups, * and rules. *

                                                                                          * * @param listTagsForResourceRequest * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                            *
                                                                                          • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                          • *
                                                                                          • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                            *
                                                                                              *
                                                                                            • *

                                                                                              * You specified an invalid parameter name. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You specified an invalid value. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                              *
                                                                                            • *
                                                                                            • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                            • *
                                                                                            • WafBadRequestException
                                                                                            • *
                                                                                            • WafTagOperationException
                                                                                            • *
                                                                                            • WafTagOperationInternalErrorException
                                                                                            • *
                                                                                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                            • *
                                                                                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                            • *
                                                                                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                            • *
                                                                                            * @sample WafRegionalAsyncClient.ListTagsForResource * @see AWS API Documentation */ @Override public CompletableFuture listTagsForResource( ListTagsForResourceRequest listTagsForResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listTagsForResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListTagsForResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listTagsForResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                            *

                                                                                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                            *
                                                                                            *

                                                                                            * Returns an array of WebACLSummary objects in the response. *

                                                                                            * * @param listWebAcLsRequest * @return A Java Future containing the result of the ListWebACLs operation returned by the service.
                                                                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                              *
                                                                                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                            • *
                                                                                            • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                            • *
                                                                                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                            • *
                                                                                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                            • *
                                                                                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                            • *
                                                                                            * @sample WafRegionalAsyncClient.ListWebACLs * @see AWS API * Documentation */ @Override public CompletableFuture listWebACLs(ListWebAcLsRequest listWebAcLsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listWebAcLsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listWebAcLsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListWebACLs"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListWebAcLsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListWebACLs").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListWebAcLsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listWebAcLsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                            *

                                                                                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                            *
                                                                                            *

                                                                                            * Returns an array of XssMatchSet objects. *

                                                                                            * * @param listXssMatchSetsRequest * A request to list the XssMatchSet objects created by the current AWS account. * @return A Java Future containing the result of the ListXssMatchSets operation returned by the service.
                                                                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                              *
                                                                                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                            • *
                                                                                            • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                            • *
                                                                                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                            • *
                                                                                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                            • *
                                                                                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                            • *
                                                                                            * @sample WafRegionalAsyncClient.ListXssMatchSets * @see AWS * API Documentation */ @Override public CompletableFuture listXssMatchSets(ListXssMatchSetsRequest listXssMatchSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listXssMatchSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listXssMatchSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListXssMatchSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListXssMatchSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListXssMatchSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListXssMatchSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listXssMatchSetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                            *

                                                                                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                            *
                                                                                            *

                                                                                            * Associates a LoggingConfiguration with a specified web ACL. *

                                                                                            *

                                                                                            * You can access information about all traffic that AWS WAF inspects using the following steps: *

                                                                                            *
                                                                                              *
                                                                                            1. *

                                                                                              * Create an Amazon Kinesis Data Firehose. *

                                                                                              *

                                                                                              * Create the data firehose with a PUT source and in the region that you are operating. However, if you are * capturing logs for Amazon CloudFront, always create the firehose in US East (N. Virginia). *

                                                                                              * *

                                                                                              * Do not create the data firehose using a Kinesis stream as your source. *

                                                                                              *
                                                                                            2. *
                                                                                            3. *

                                                                                              * Associate that firehose to your web ACL using a PutLoggingConfiguration request. *

                                                                                              *
                                                                                            4. *
                                                                                            *

                                                                                            * When you successfully enable logging using a PutLoggingConfiguration request, AWS WAF will create a * service linked role with the necessary permissions to write logs to the Amazon Kinesis Data Firehose. For more * information, see Logging Web ACL * Traffic Information in the AWS WAF Developer Guide. *

                                                                                            * * @param putLoggingConfigurationRequest * @return A Java Future containing the result of the PutLoggingConfiguration operation returned by the service.
                                                                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                              *
                                                                                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                            • *
                                                                                            • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                            • *
                                                                                            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                            • *
                                                                                            • WafServiceLinkedRoleErrorException AWS WAF is not able to access the service linked role. This can be * caused by a previous PutLoggingConfiguration request, which can lock the service linked role * for about 20 seconds. Please try your request again. The service linked role can also be locked by a * previous DeleteServiceLinkedRole request, which can lock the role for 15 minutes or more. If * you recently made a DeleteServiceLinkedRole, wait at least 15 minutes and try the request * again. If you receive this same exception again, you will have to wait additional time until the role is * unlocked.
                                                                                            • *
                                                                                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                            • *
                                                                                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                            • *
                                                                                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                            • *
                                                                                            * @sample WafRegionalAsyncClient.PutLoggingConfiguration * @see AWS API Documentation */ @Override public CompletableFuture putLoggingConfiguration( PutLoggingConfigurationRequest putLoggingConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putLoggingConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putLoggingConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutLoggingConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutLoggingConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutLoggingConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutLoggingConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putLoggingConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                            *

                                                                                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                            *
                                                                                            *

                                                                                            * Attaches an IAM policy to the specified resource. The only supported use for this action is to share a RuleGroup * across accounts. *

                                                                                            *

                                                                                            * The PutPermissionPolicy is subject to the following restrictions: *

                                                                                            *
                                                                                              *
                                                                                            • *

                                                                                              * You can attach only one policy with each PutPermissionPolicy request. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * The policy must include an Effect, Action and Principal. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * Effect must specify Allow. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * The Action in the policy must be waf:UpdateWebACL, * waf-regional:UpdateWebACL, waf:GetRuleGroup and waf-regional:GetRuleGroup * . Any extra or wildcard actions in the policy will be rejected. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * The policy cannot include a Resource parameter. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * The ARN in the request must be a valid WAF RuleGroup ARN and the RuleGroup must exist in the same region. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * The user making the request must be the owner of the RuleGroup. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * Your policy must be composed using IAM Policy version 2012-10-17. *

                                                                                              *
                                                                                            • *
                                                                                            *

                                                                                            * For more information, see IAM * Policies. *

                                                                                            *

                                                                                            * An example of a valid policy parameter is shown in the Examples section below. *

                                                                                            * * @param putPermissionPolicyRequest * @return A Java Future containing the result of the PutPermissionPolicy operation returned by the service.
                                                                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                              *
                                                                                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                            • *
                                                                                            • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                            • *
                                                                                            • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                            • *
                                                                                            • WafInvalidPermissionPolicyException The operation failed because the specified policy is not in the * proper format.

                                                                                              *

                                                                                              * The policy is subject to the following restrictions: *

                                                                                              *
                                                                                                *
                                                                                              • *

                                                                                                * You can attach only one policy with each PutPermissionPolicy request. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * The policy must include an Effect, Action and Principal. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * Effect must specify Allow. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * The Action in the policy must be waf:UpdateWebACL, * waf-regional:UpdateWebACL, waf:GetRuleGroup and * waf-regional:GetRuleGroup . Any extra or wildcard actions in the policy will be rejected. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * The policy cannot include a Resource parameter. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * The ARN in the request must be a valid WAF RuleGroup ARN and the RuleGroup must exist in the same region. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * The user making the request must be the owner of the RuleGroup. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * Your policy must be composed using IAM Policy version 2012-10-17. *

                                                                                                *
                                                                                              • *
                                                                                              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                              • *
                                                                                              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                              • *
                                                                                              • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                              • *
                                                                                              * @sample WafRegionalAsyncClient.PutPermissionPolicy * @see AWS API Documentation */ @Override public CompletableFuture putPermissionPolicy( PutPermissionPolicyRequest putPermissionPolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putPermissionPolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putPermissionPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutPermissionPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutPermissionPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutPermissionPolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutPermissionPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putPermissionPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                              * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                              *

                                                                                              * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                              *
                                                                                              *

                                                                                              * Associates tags with the specified AWS resource. Tags are key:value pairs that you can use to categorize and * manage your resources, for purposes like billing. For example, you might set the tag key to "customer" and the * value to the customer name or ID. You can specify one or more tags to add to each AWS resource, up to 50 tags for * a resource. *

                                                                                              *

                                                                                              * Tagging is only available through the API, SDKs, and CLI. You can't manage or view tags through the AWS WAF * Classic console. You can use this action to tag the AWS resources that you manage through AWS WAF Classic: web * ACLs, rule groups, and rules. *

                                                                                              * * @param tagResourceRequest * @return A Java Future containing the result of the TagResource operation returned by the service.
                                                                                              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                *
                                                                                              • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                              • *
                                                                                              • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                *
                                                                                                  *
                                                                                                • *

                                                                                                  * You specified an invalid parameter name. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You specified an invalid value. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                  *
                                                                                                • *
                                                                                                • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                • *
                                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                • *
                                                                                                • WafBadRequestException
                                                                                                • *
                                                                                                • WafTagOperationException
                                                                                                • *
                                                                                                • WafTagOperationInternalErrorException
                                                                                                • *
                                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                • *
                                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                • *
                                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                • *
                                                                                                * @sample WafRegionalAsyncClient.TagResource * @see AWS API * Documentation */ @Override public CompletableFuture tagResource(TagResourceRequest tagResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(tagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TagResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new TagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(tagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                *

                                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                *
                                                                                                *

                                                                                                * * @param untagResourceRequest * @return A Java Future containing the result of the UntagResource operation returned by the service.
                                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *

                                                                                                  *
                                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                • WafInvalidParameterException The operation failed because AWS WAF * didn't recognize a parameter in the request. For example: *

                                                                                                  *
                                                                                                    *
                                                                                                  • *

                                                                                                    * You specified an invalid parameter name. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You specified an invalid value. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                  • *
                                                                                                  • WafBadRequestException
                                                                                                  • *
                                                                                                  • WafTagOperationException
                                                                                                  • *
                                                                                                  • WafTagOperationInternalErrorException
                                                                                                  • *
                                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                  • *
                                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                  • *
                                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                  • *
                                                                                                  * @sample WafRegionalAsyncClient.UntagResource * @see AWS * API Documentation */ @Override public CompletableFuture untagResource(UntagResourceRequest untagResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(untagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UntagResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(untagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                  * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                  *

                                                                                                  * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                  *
                                                                                                  *

                                                                                                  * Inserts or deletes ByteMatchTuple objects (filters) in a ByteMatchSet. For each * ByteMatchTuple object, you specify the following values: *

                                                                                                  *
                                                                                                    *
                                                                                                  • *

                                                                                                    * Whether to insert or delete the object from the array. If you want to change a ByteMatchSetUpdate * object, you delete the existing object and add a new one. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the * User-Agent header. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to look for. For more * information, including how you specify the values for the AWS WAF API and the AWS CLI or SDKs, see * TargetString in the ByteMatchTuple data type. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * Where to look, such as at the beginning or the end of a query string. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for * the specified string. *

                                                                                                    *
                                                                                                  • *
                                                                                                  *

                                                                                                  * For example, you can add a ByteMatchSetUpdate object that matches web requests in which * User-Agent headers contain the string BadBot. You can then configure AWS WAF to block * those requests. *

                                                                                                  *

                                                                                                  * To create and configure a ByteMatchSet, perform the following steps: *

                                                                                                  *
                                                                                                    *
                                                                                                  1. *

                                                                                                    * Create a ByteMatchSet. For more information, see CreateByteMatchSet. *

                                                                                                    *
                                                                                                  2. *
                                                                                                  3. *

                                                                                                    * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateByteMatchSet request. *

                                                                                                    *
                                                                                                  4. *
                                                                                                  5. *

                                                                                                    * Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to * inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. *

                                                                                                    *
                                                                                                  6. *
                                                                                                  *

                                                                                                  * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                  * * @param updateByteMatchSetRequest * @return A Java Future containing the result of the UpdateByteMatchSet operation returned by the service.
                                                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                    *
                                                                                                  • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                  • *
                                                                                                  • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                  • *
                                                                                                  • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                    *
                                                                                                      *
                                                                                                    • *

                                                                                                      * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

                                                                                                      * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

                                                                                                      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

                                                                                                      * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

                                                                                                      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                      *
                                                                                                        *
                                                                                                      • *

                                                                                                        * You specified an invalid parameter name. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You specified an invalid value. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                        *
                                                                                                          *
                                                                                                        • *

                                                                                                          * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                        • *
                                                                                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                        • *
                                                                                                        • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                        • *
                                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                        • *
                                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                        • *
                                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                        • *
                                                                                                        * @sample WafRegionalAsyncClient.UpdateByteMatchSet * @see AWS API Documentation */ @Override public CompletableFuture updateByteMatchSet(UpdateByteMatchSetRequest updateByteMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateByteMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateByteMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateByteMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateByteMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateByteMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateByteMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateByteMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                        *

                                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                        *
                                                                                                        *

                                                                                                        * Inserts or deletes GeoMatchConstraint objects in an GeoMatchSet. For each * GeoMatchConstraint object, you specify the following values: *

                                                                                                        *
                                                                                                          *
                                                                                                        • *

                                                                                                          * Whether to insert or delete the object from the array. If you want to change an GeoMatchConstraint * object, you delete the existing object and add a new one. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * The Type. The only valid value for Type is Country. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * The Value, which is a two character code for the country to add to the * GeoMatchConstraint object. Valid codes are listed in GeoMatchConstraint$Value. *

                                                                                                          *
                                                                                                        • *
                                                                                                        *

                                                                                                        * To create and configure an GeoMatchSet, perform the following steps: *

                                                                                                        *
                                                                                                          *
                                                                                                        1. *

                                                                                                          * Submit a CreateGeoMatchSet request. *

                                                                                                          *
                                                                                                        2. *
                                                                                                        3. *

                                                                                                          * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateGeoMatchSet request. *

                                                                                                          *
                                                                                                        4. *
                                                                                                        5. *

                                                                                                          * Submit an UpdateGeoMatchSet request to specify the country that you want AWS WAF to watch for. *

                                                                                                          *
                                                                                                        6. *
                                                                                                        *

                                                                                                        * When you update an GeoMatchSet, you specify the country that you want to add and/or the country that * you want to delete. If you want to change a country, you delete the existing country and add the new one. *

                                                                                                        *

                                                                                                        * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                        * * @param updateGeoMatchSetRequest * @return A Java Future containing the result of the UpdateGeoMatchSet operation returned by the service.
                                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                          *
                                                                                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                        • *
                                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                        • *
                                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                        • *
                                                                                                        • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                          *
                                                                                                            *
                                                                                                          • *

                                                                                                            * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                            *
                                                                                                              *
                                                                                                            • *

                                                                                                              * You specified an invalid parameter name. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You specified an invalid value. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                              *
                                                                                                                *
                                                                                                              • *

                                                                                                                * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                *
                                                                                                              • *
                                                                                                              • *

                                                                                                                * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                *
                                                                                                              • *
                                                                                                              • *

                                                                                                                * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                *
                                                                                                              • *
                                                                                                              • *

                                                                                                                * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                *
                                                                                                              • *
                                                                                                              • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                              • *
                                                                                                              • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                                                                *
                                                                                                                  *
                                                                                                                • *

                                                                                                                  * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • *

                                                                                                                  * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                • *
                                                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                • *
                                                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                • *
                                                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                • *
                                                                                                                * @sample WafRegionalAsyncClient.UpdateGeoMatchSet * @see AWS API Documentation */ @Override public CompletableFuture updateGeoMatchSet(UpdateGeoMatchSetRequest updateGeoMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateGeoMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateGeoMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateGeoMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateGeoMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateGeoMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateGeoMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateGeoMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                *

                                                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                *
                                                                                                                *

                                                                                                                * Inserts or deletes IPSetDescriptor objects in an IPSet. For each IPSetDescriptor * object, you specify the following values: *

                                                                                                                *
                                                                                                                  *
                                                                                                                • *

                                                                                                                  * Whether to insert or delete the object from the array. If you want to change an IPSetDescriptor * object, you delete the existing object and add a new one. *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • *

                                                                                                                  * The IP address version, IPv4 or IPv6. *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • *

                                                                                                                  * The IP address in CIDR notation, for example, 192.0.2.0/24 (for the range of IP addresses from * 192.0.2.0 to 192.0.2.255) or 192.0.2.44/32 (for the individual IP address * 192.0.2.44). *

                                                                                                                  *
                                                                                                                • *
                                                                                                                *

                                                                                                                * AWS WAF supports IPv4 address ranges: /8 and any range between /16 through /32. AWS WAF supports IPv6 address * ranges: /24, /32, /48, /56, /64, and /128. For more information about CIDR notation, see the Wikipedia entry Classless Inter-Domain Routing. *

                                                                                                                *

                                                                                                                * IPv6 addresses can be represented using any of the following formats: *

                                                                                                                *
                                                                                                                  *
                                                                                                                • *

                                                                                                                  * 1111:0000:0000:0000:0000:0000:0000:0111/128 *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • *

                                                                                                                  * 1111:0:0:0:0:0:0:0111/128 *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • *

                                                                                                                  * 1111::0111/128 *

                                                                                                                  *
                                                                                                                • *
                                                                                                                • *

                                                                                                                  * 1111::111/128 *

                                                                                                                  *
                                                                                                                • *
                                                                                                                *

                                                                                                                * You use an IPSet to specify which web requests you want to allow or block based on the IP addresses * that the requests originated from. For example, if you're receiving a lot of requests from one or a small number * of IP addresses and you want to block the requests, you can create an IPSet that specifies those IP * addresses, and then configure AWS WAF to block the requests. *

                                                                                                                *

                                                                                                                * To create and configure an IPSet, perform the following steps: *

                                                                                                                *
                                                                                                                  *
                                                                                                                1. *

                                                                                                                  * Submit a CreateIPSet request. *

                                                                                                                  *
                                                                                                                2. *
                                                                                                                3. *

                                                                                                                  * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateIPSet request. *

                                                                                                                  *
                                                                                                                4. *
                                                                                                                5. *

                                                                                                                  * Submit an UpdateIPSet request to specify the IP addresses that you want AWS WAF to watch for. *

                                                                                                                  *
                                                                                                                6. *
                                                                                                                *

                                                                                                                * When you update an IPSet, you specify the IP addresses that you want to add and/or the IP addresses * that you want to delete. If you want to change an IP address, you delete the existing IP address and add the new * one. *

                                                                                                                *

                                                                                                                * You can insert a maximum of 1000 addresses in a single request. *

                                                                                                                *

                                                                                                                * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                * * @param updateIpSetRequest * @return A Java Future containing the result of the UpdateIPSet operation returned by the service.
                                                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                  *
                                                                                                                • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                • *
                                                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                • *
                                                                                                                • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                • *
                                                                                                                • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                  *
                                                                                                                    *
                                                                                                                  • *

                                                                                                                    * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                    *
                                                                                                                  • *
                                                                                                                  • *

                                                                                                                    * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                    *
                                                                                                                  • *
                                                                                                                  • *

                                                                                                                    * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                    *
                                                                                                                  • *
                                                                                                                  • *

                                                                                                                    * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                    *
                                                                                                                  • *
                                                                                                                  • *

                                                                                                                    * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                    *
                                                                                                                  • *
                                                                                                                  • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                    *
                                                                                                                      *
                                                                                                                    • *

                                                                                                                      * You specified an invalid parameter name. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You specified an invalid value. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • *

                                                                                                                      * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                      *
                                                                                                                    • *
                                                                                                                    • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                      *
                                                                                                                        *
                                                                                                                      • *

                                                                                                                        * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                        *
                                                                                                                      • *
                                                                                                                      • *

                                                                                                                        * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                        *
                                                                                                                      • *
                                                                                                                      • *

                                                                                                                        * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                        *
                                                                                                                      • *
                                                                                                                      • *

                                                                                                                        * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                        *
                                                                                                                      • *
                                                                                                                      • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                      • *
                                                                                                                      • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                                                                        *
                                                                                                                          *
                                                                                                                        • *

                                                                                                                          * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        • *

                                                                                                                          * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                        • *
                                                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                        • *
                                                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                        • *
                                                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                        • *
                                                                                                                        * @sample WafRegionalAsyncClient.UpdateIPSet * @see AWS API * Documentation */ @Override public CompletableFuture updateIPSet(UpdateIpSetRequest updateIpSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateIpSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateIpSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateIPSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UpdateIpSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateIPSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateIpSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateIpSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                        *

                                                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                        *
                                                                                                                        *

                                                                                                                        * Inserts or deletes Predicate objects in a rule and updates the RateLimit in the rule. *

                                                                                                                        *

                                                                                                                        * Each Predicate object identifies a predicate, such as a ByteMatchSet or an IPSet, that * specifies the web requests that you want to block or count. The RateLimit specifies the number of * requests every five minutes that triggers the rule. *

                                                                                                                        *

                                                                                                                        * If you add more than one predicate to a RateBasedRule, a request must match all the predicates and * exceed the RateLimit to be counted or blocked. For example, suppose you add the following to a * RateBasedRule: *

                                                                                                                        *
                                                                                                                          *
                                                                                                                        • *

                                                                                                                          * An IPSet that matches the IP address 192.0.2.44/32 *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        • *

                                                                                                                          * A ByteMatchSet that matches BadBot in the User-Agent header *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        *

                                                                                                                        * Further, you specify a RateLimit of 1,000. *

                                                                                                                        *

                                                                                                                        * You then add the RateBasedRule to a WebACL and specify that you want to block requests * that satisfy the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 and the * User-Agent header in the request must contain the value BadBot. Further, requests that * match these two conditions much be received at a rate of more than 1,000 every five minutes. If the rate drops * below this limit, AWS WAF no longer blocks the requests. *

                                                                                                                        *

                                                                                                                        * As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could * add the following to a RateBasedRule: *

                                                                                                                        *
                                                                                                                          *
                                                                                                                        • *

                                                                                                                          * A ByteMatchSet with FieldToMatch of URI *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        • *

                                                                                                                          * A PositionalConstraint of STARTS_WITH *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        • *

                                                                                                                          * A TargetString of login *

                                                                                                                          *
                                                                                                                        • *
                                                                                                                        *

                                                                                                                        * Further, you specify a RateLimit of 1,000. *

                                                                                                                        *

                                                                                                                        * By adding this RateBasedRule to a WebACL, you could limit requests to your login page * without affecting the rest of your site. *

                                                                                                                        * * @param updateRateBasedRuleRequest * @return A Java Future containing the result of the UpdateRateBasedRule operation returned by the service.
                                                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                          *
                                                                                                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                        • *
                                                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                        • *
                                                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                        • *
                                                                                                                        • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                          *
                                                                                                                            *
                                                                                                                          • *

                                                                                                                            * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                            *
                                                                                                                          • *
                                                                                                                          • *

                                                                                                                            * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                            *
                                                                                                                          • *
                                                                                                                          • *

                                                                                                                            * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                            *
                                                                                                                          • *
                                                                                                                          • *

                                                                                                                            * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                            *
                                                                                                                          • *
                                                                                                                          • *

                                                                                                                            * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                            *
                                                                                                                          • *
                                                                                                                          • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                            *
                                                                                                                              *
                                                                                                                            • *

                                                                                                                              * You specified an invalid parameter name. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You specified an invalid value. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • *

                                                                                                                              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                              *
                                                                                                                            • *
                                                                                                                            • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                              *
                                                                                                                                *
                                                                                                                              • *

                                                                                                                                * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                *
                                                                                                                              • *
                                                                                                                              • *

                                                                                                                                * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                *
                                                                                                                              • *
                                                                                                                              • *

                                                                                                                                * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                *
                                                                                                                              • *
                                                                                                                              • *

                                                                                                                                * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                *
                                                                                                                              • *
                                                                                                                              • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                              • *
                                                                                                                              • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                                                                                *
                                                                                                                                  *
                                                                                                                                • *

                                                                                                                                  * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                                                                                  *
                                                                                                                                • *
                                                                                                                                • *

                                                                                                                                  * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                                                                                  *
                                                                                                                                • *
                                                                                                                                • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                • *
                                                                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                • *
                                                                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                • *
                                                                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                • *
                                                                                                                                * @sample WafRegionalAsyncClient.UpdateRateBasedRule * @see AWS API Documentation */ @Override public CompletableFuture updateRateBasedRule( UpdateRateBasedRuleRequest updateRateBasedRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateRateBasedRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateRateBasedRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateRateBasedRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateRateBasedRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateRateBasedRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateRateBasedRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateRateBasedRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                *

                                                                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                *
                                                                                                                                *

                                                                                                                                * Inserts or deletes RegexMatchTuple objects (filters) in a RegexMatchSet. For each * RegexMatchSetUpdate object, you specify the following values: *

                                                                                                                                *
                                                                                                                                  *
                                                                                                                                • *

                                                                                                                                  * Whether to insert or delete the object from the array. If you want to change a RegexMatchSetUpdate * object, you delete the existing object and add a new one. *

                                                                                                                                  *
                                                                                                                                • *
                                                                                                                                • *

                                                                                                                                  * The part of a web request that you want AWS WAF to inspectupdate, such as a query string or the value of the * User-Agent header. *

                                                                                                                                  *
                                                                                                                                • *
                                                                                                                                • *

                                                                                                                                  * The identifier of the pattern (a regular expression) that you want AWS WAF to look for. For more information, see * RegexPatternSet. *

                                                                                                                                  *
                                                                                                                                • *
                                                                                                                                • *

                                                                                                                                  * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for * the specified string. *

                                                                                                                                  *
                                                                                                                                • *
                                                                                                                                *

                                                                                                                                * For example, you can create a RegexPatternSet that matches any requests with User-Agent * headers that contain the string B[a@]dB[o0]t. You can then configure AWS WAF to reject those * requests. *

                                                                                                                                *

                                                                                                                                * To create and configure a RegexMatchSet, perform the following steps: *

                                                                                                                                *
                                                                                                                                  *
                                                                                                                                1. *

                                                                                                                                  * Create a RegexMatchSet. For more information, see CreateRegexMatchSet. *

                                                                                                                                  *
                                                                                                                                2. *
                                                                                                                                3. *

                                                                                                                                  * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateRegexMatchSet request. *

                                                                                                                                  *
                                                                                                                                4. *
                                                                                                                                5. *

                                                                                                                                  * Submit an UpdateRegexMatchSet request to specify the part of the request that you want AWS WAF to * inspect (for example, the header or the URI) and the identifier of the RegexPatternSet that contain * the regular expression patters you want AWS WAF to watch for. *

                                                                                                                                  *
                                                                                                                                6. *
                                                                                                                                *

                                                                                                                                * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                * * @param updateRegexMatchSetRequest * @return A Java Future containing the result of the UpdateRegexMatchSet operation returned by the service.
                                                                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                  *
                                                                                                                                • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                • *
                                                                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                • *
                                                                                                                                • WafDisallowedNameException The name specified is invalid.
                                                                                                                                • *
                                                                                                                                • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                • *
                                                                                                                                • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                • *
                                                                                                                                • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                  *
                                                                                                                                    *
                                                                                                                                  • *

                                                                                                                                    * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                    *
                                                                                                                                  • *
                                                                                                                                  • *

                                                                                                                                    * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                    *
                                                                                                                                  • *
                                                                                                                                  • *

                                                                                                                                    * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                    *
                                                                                                                                  • *
                                                                                                                                  • *

                                                                                                                                    * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                    *
                                                                                                                                  • *
                                                                                                                                  • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                    *
                                                                                                                                      *
                                                                                                                                    • *

                                                                                                                                      * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                    • *
                                                                                                                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                    • *
                                                                                                                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                    • *
                                                                                                                                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                    • *
                                                                                                                                    * @sample WafRegionalAsyncClient.UpdateRegexMatchSet * @see AWS API Documentation */ @Override public CompletableFuture updateRegexMatchSet( UpdateRegexMatchSetRequest updateRegexMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateRegexMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateRegexMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateRegexMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateRegexMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateRegexMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateRegexMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateRegexMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                    *

                                                                                                                                    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                    *
                                                                                                                                    *

                                                                                                                                    * Inserts or deletes RegexPatternString objects in a RegexPatternSet. For each * RegexPatternString object, you specify the following values: *

                                                                                                                                    *
                                                                                                                                      *
                                                                                                                                    • *

                                                                                                                                      * Whether to insert or delete the RegexPatternString. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * The regular expression pattern that you want to insert or delete. For more information, see * RegexPatternSet. *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    *

                                                                                                                                    * For example, you can create a RegexPatternString such as B[a@]dB[o0]t. AWS WAF will * match this RegexPatternString to: *

                                                                                                                                    *
                                                                                                                                      *
                                                                                                                                    • *

                                                                                                                                      * BadBot *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * BadB0t *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * B@dBot *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    • *

                                                                                                                                      * B@dB0t *

                                                                                                                                      *
                                                                                                                                    • *
                                                                                                                                    *

                                                                                                                                    * To create and configure a RegexPatternSet, perform the following steps: *

                                                                                                                                    *
                                                                                                                                      *
                                                                                                                                    1. *

                                                                                                                                      * Create a RegexPatternSet. For more information, see CreateRegexPatternSet. *

                                                                                                                                      *
                                                                                                                                    2. *
                                                                                                                                    3. *

                                                                                                                                      * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateRegexPatternSet request. *

                                                                                                                                      *
                                                                                                                                    4. *
                                                                                                                                    5. *

                                                                                                                                      * Submit an UpdateRegexPatternSet request to specify the regular expression pattern that you want AWS * WAF to watch for. *

                                                                                                                                      *
                                                                                                                                    6. *
                                                                                                                                    *

                                                                                                                                    * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                    * * @param updateRegexPatternSetRequest * @return A Java Future containing the result of the UpdateRegexPatternSet operation returned by the service.
                                                                                                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                      *
                                                                                                                                    • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                    • *
                                                                                                                                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                    • *
                                                                                                                                    • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                    • *
                                                                                                                                    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                    • *
                                                                                                                                    • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                      *
                                                                                                                                        *
                                                                                                                                      • *

                                                                                                                                        * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                        *
                                                                                                                                      • *
                                                                                                                                      • *

                                                                                                                                        * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                        *
                                                                                                                                      • *
                                                                                                                                      • *

                                                                                                                                        * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                        *
                                                                                                                                      • *
                                                                                                                                      • *

                                                                                                                                        * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                        *
                                                                                                                                      • *
                                                                                                                                      • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                        *
                                                                                                                                          *
                                                                                                                                        • *

                                                                                                                                          * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        • *

                                                                                                                                          * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        • *

                                                                                                                                          * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        • *

                                                                                                                                          * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        • *

                                                                                                                                          * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                        • *
                                                                                                                                        • WafInvalidRegexPatternException The regular expression (regex) you specified in * RegexPatternString is invalid.
                                                                                                                                        • *
                                                                                                                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                        • *
                                                                                                                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                        • *
                                                                                                                                        • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                        • *
                                                                                                                                        * @sample WafRegionalAsyncClient.UpdateRegexPatternSet * @see AWS API Documentation */ @Override public CompletableFuture updateRegexPatternSet( UpdateRegexPatternSetRequest updateRegexPatternSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateRegexPatternSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateRegexPatternSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateRegexPatternSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateRegexPatternSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateRegexPatternSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateRegexPatternSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateRegexPatternSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                        * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                        *

                                                                                                                                        * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                        *
                                                                                                                                        *

                                                                                                                                        * Inserts or deletes Predicate objects in a Rule. Each Predicate object identifies * a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests that you want to * allow, block, or count. If you add more than one predicate to a Rule, a request must match all of * the specifications to be allowed, blocked, or counted. For example, suppose that you add the following to a * Rule: *

                                                                                                                                        *
                                                                                                                                          *
                                                                                                                                        • *

                                                                                                                                          * A ByteMatchSet that matches the value BadBot in the User-Agent header *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        • *

                                                                                                                                          * An IPSet that matches the IP address 192.0.2.44 *

                                                                                                                                          *
                                                                                                                                        • *
                                                                                                                                        *

                                                                                                                                        * You then add the Rule to a WebACL and specify that you want to block requests that * satisfy the Rule. For a request to be blocked, the User-Agent header in the request * must contain the value BadBot and the request must originate from the IP address 192.0.2.44. *

                                                                                                                                        *

                                                                                                                                        * To create and configure a Rule, perform the following steps: *

                                                                                                                                        *
                                                                                                                                          *
                                                                                                                                        1. *

                                                                                                                                          * Create and update the predicates that you want to include in the Rule. *

                                                                                                                                          *
                                                                                                                                        2. *
                                                                                                                                        3. *

                                                                                                                                          * Create the Rule. See CreateRule. *

                                                                                                                                          *
                                                                                                                                        4. *
                                                                                                                                        5. *

                                                                                                                                          * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateRule request. *

                                                                                                                                          *
                                                                                                                                        6. *
                                                                                                                                        7. *

                                                                                                                                          * Submit an UpdateRule request to add predicates to the Rule. *

                                                                                                                                          *
                                                                                                                                        8. *
                                                                                                                                        9. *

                                                                                                                                          * Create and update a WebACL that contains the Rule. See CreateWebACL. *

                                                                                                                                          *
                                                                                                                                        10. *
                                                                                                                                        *

                                                                                                                                        * If you want to replace one ByteMatchSet or IPSet with another, you delete the existing * one and add the new one. *

                                                                                                                                        *

                                                                                                                                        * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                        * * @param updateRuleRequest * @return A Java Future containing the result of the UpdateRule operation returned by the service.
                                                                                                                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                          *
                                                                                                                                        • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                        • *
                                                                                                                                        • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                        • *
                                                                                                                                        • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                        • *
                                                                                                                                        • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                          *
                                                                                                                                            *
                                                                                                                                          • *

                                                                                                                                            * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                            *
                                                                                                                                          • *
                                                                                                                                          • *

                                                                                                                                            * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                            *
                                                                                                                                          • *
                                                                                                                                          • *

                                                                                                                                            * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                            *
                                                                                                                                          • *
                                                                                                                                          • *

                                                                                                                                            * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                            *
                                                                                                                                          • *
                                                                                                                                          • *

                                                                                                                                            * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                            *
                                                                                                                                          • *
                                                                                                                                          • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                                            *
                                                                                                                                              *
                                                                                                                                            • *

                                                                                                                                              * You specified an invalid parameter name. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You specified an invalid value. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • *

                                                                                                                                              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                                              *
                                                                                                                                            • *
                                                                                                                                            • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                              *
                                                                                                                                                *
                                                                                                                                              • *

                                                                                                                                                * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                                *
                                                                                                                                              • *
                                                                                                                                              • *

                                                                                                                                                * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                                *
                                                                                                                                              • *
                                                                                                                                              • *

                                                                                                                                                * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                                *
                                                                                                                                              • *
                                                                                                                                              • *

                                                                                                                                                * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                                *
                                                                                                                                              • *
                                                                                                                                              • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                              • *
                                                                                                                                              • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                                                                                                *
                                                                                                                                                  *
                                                                                                                                                • *

                                                                                                                                                  * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                                                                                                  *
                                                                                                                                                • *
                                                                                                                                                • *

                                                                                                                                                  * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                                                                                                  *
                                                                                                                                                • *
                                                                                                                                                • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                                • *
                                                                                                                                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                                • *
                                                                                                                                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                                • *
                                                                                                                                                • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                                • *
                                                                                                                                                * @sample WafRegionalAsyncClient.UpdateRule * @see AWS API * Documentation */ @Override public CompletableFuture updateRule(UpdateRuleRequest updateRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UpdateRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("UpdateRule") .withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                                * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                                *

                                                                                                                                                * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                                *
                                                                                                                                                *

                                                                                                                                                * Inserts or deletes ActivatedRule objects in a RuleGroup. *

                                                                                                                                                *

                                                                                                                                                * You can only insert REGULAR rules into a rule group. *

                                                                                                                                                *

                                                                                                                                                * You can have a maximum of ten rules per rule group. *

                                                                                                                                                *

                                                                                                                                                * To create and configure a RuleGroup, perform the following steps: *

                                                                                                                                                *
                                                                                                                                                  *
                                                                                                                                                1. *

                                                                                                                                                  * Create and update the Rules that you want to include in the RuleGroup. See * CreateRule. *

                                                                                                                                                  *
                                                                                                                                                2. *
                                                                                                                                                3. *

                                                                                                                                                  * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateRuleGroup request. *

                                                                                                                                                  *
                                                                                                                                                4. *
                                                                                                                                                5. *

                                                                                                                                                  * Submit an UpdateRuleGroup request to add Rules to the RuleGroup. *

                                                                                                                                                  *
                                                                                                                                                6. *
                                                                                                                                                7. *

                                                                                                                                                  * Create and update a WebACL that contains the RuleGroup. See CreateWebACL. *

                                                                                                                                                  *
                                                                                                                                                8. *
                                                                                                                                                *

                                                                                                                                                * If you want to replace one Rule with another, you delete the existing one and add the new one. *

                                                                                                                                                *

                                                                                                                                                * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                                * * @param updateRuleGroupRequest * @return A Java Future containing the result of the UpdateRuleGroup operation returned by the service.
                                                                                                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                                  *
                                                                                                                                                • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                                • *
                                                                                                                                                • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                                • *
                                                                                                                                                • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                                  *
                                                                                                                                                    *
                                                                                                                                                  • *

                                                                                                                                                    * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                                    *
                                                                                                                                                  • *
                                                                                                                                                  • *

                                                                                                                                                    * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                                    *
                                                                                                                                                  • *
                                                                                                                                                  • *

                                                                                                                                                    * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                                    *
                                                                                                                                                  • *
                                                                                                                                                  • *

                                                                                                                                                    * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                                    *
                                                                                                                                                  • *
                                                                                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                                  • *
                                                                                                                                                  • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                                    *
                                                                                                                                                      *
                                                                                                                                                    • *

                                                                                                                                                      * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                                      *
                                                                                                                                                    • *
                                                                                                                                                    • *

                                                                                                                                                      * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                                      *
                                                                                                                                                    • *
                                                                                                                                                    • *

                                                                                                                                                      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                                      *
                                                                                                                                                    • *
                                                                                                                                                    • *

                                                                                                                                                      * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                                      *
                                                                                                                                                    • *
                                                                                                                                                    • *

                                                                                                                                                      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                                      *
                                                                                                                                                    • *
                                                                                                                                                    • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                                    • *
                                                                                                                                                    • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                                                      *
                                                                                                                                                        *
                                                                                                                                                      • *

                                                                                                                                                        * You specified an invalid parameter name. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You specified an invalid value. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                                      • *
                                                                                                                                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                                      • *
                                                                                                                                                      • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                                      • *
                                                                                                                                                      * @sample WafRegionalAsyncClient.UpdateRuleGroup * @see AWS * API Documentation */ @Override public CompletableFuture updateRuleGroup(UpdateRuleGroupRequest updateRuleGroupRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateRuleGroupRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateRuleGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateRuleGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateRuleGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateRuleGroup").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateRuleGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateRuleGroupRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                                      * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                                      *

                                                                                                                                                      * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                                      *
                                                                                                                                                      *

                                                                                                                                                      * Inserts or deletes SizeConstraint objects (filters) in a SizeConstraintSet. For each * SizeConstraint object, you specify the following values: *

                                                                                                                                                      *
                                                                                                                                                        *
                                                                                                                                                      • *

                                                                                                                                                        * Whether to insert or delete the object from the array. If you want to change a * SizeConstraintSetUpdate object, you delete the existing object and add a new one. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * The part of a web request that you want AWS WAF to evaluate, such as the length of a query string or the length * of the User-Agent header. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * Whether to perform any transformations on the request, such as converting it to lowercase, before checking its * length. Note that transformations of the request body are not supported because the AWS resource forwards only * the first 8192 bytes of your request to AWS WAF. *

                                                                                                                                                        *

                                                                                                                                                        * You can only specify a single type of TextTransformation. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * A ComparisonOperator used for evaluating the selected part of the request against the specified * Size, such as equals, greater than, less than, and so on. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      • *

                                                                                                                                                        * The length, in bytes, that you want AWS WAF to watch for in selected part of the request. The length is computed * after applying the transformation. *

                                                                                                                                                        *
                                                                                                                                                      • *
                                                                                                                                                      *

                                                                                                                                                      * For example, you can add a SizeConstraintSetUpdate object that matches web requests in which the * length of the User-Agent header is greater than 100 bytes. You can then configure AWS WAF to block * those requests. *

                                                                                                                                                      *

                                                                                                                                                      * To create and configure a SizeConstraintSet, perform the following steps: *

                                                                                                                                                      *
                                                                                                                                                        *
                                                                                                                                                      1. *

                                                                                                                                                        * Create a SizeConstraintSet. For more information, see CreateSizeConstraintSet. *

                                                                                                                                                        *
                                                                                                                                                      2. *
                                                                                                                                                      3. *

                                                                                                                                                        * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateSizeConstraintSet request. *

                                                                                                                                                        *
                                                                                                                                                      4. *
                                                                                                                                                      5. *

                                                                                                                                                        * Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF * to inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for. *

                                                                                                                                                        *
                                                                                                                                                      6. *
                                                                                                                                                      *

                                                                                                                                                      * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                                      * * @param updateSizeConstraintSetRequest * @return A Java Future containing the result of the UpdateSizeConstraintSet operation returned by the service.
                                                                                                                                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                                        *
                                                                                                                                                      • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                                      • *
                                                                                                                                                      • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                                      • *
                                                                                                                                                      • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                                      • *
                                                                                                                                                      • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                                        *
                                                                                                                                                          *
                                                                                                                                                        • *

                                                                                                                                                          * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                                          *
                                                                                                                                                        • *
                                                                                                                                                        • *

                                                                                                                                                          * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                                          *
                                                                                                                                                        • *
                                                                                                                                                        • *

                                                                                                                                                          * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                                          *
                                                                                                                                                        • *
                                                                                                                                                        • *

                                                                                                                                                          * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                                          *
                                                                                                                                                        • *
                                                                                                                                                        • *

                                                                                                                                                          * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                                          *
                                                                                                                                                        • *
                                                                                                                                                        • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                                                          *
                                                                                                                                                            *
                                                                                                                                                          • *

                                                                                                                                                            * You specified an invalid parameter name. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You specified an invalid value. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • *

                                                                                                                                                            * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                                                            *
                                                                                                                                                          • *
                                                                                                                                                          • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                                            *
                                                                                                                                                              *
                                                                                                                                                            • *

                                                                                                                                                              * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                                              *
                                                                                                                                                            • *
                                                                                                                                                            • *

                                                                                                                                                              * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                                              *
                                                                                                                                                            • *
                                                                                                                                                            • *

                                                                                                                                                              * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                                              *
                                                                                                                                                            • *
                                                                                                                                                            • *

                                                                                                                                                              * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                                              *
                                                                                                                                                            • *
                                                                                                                                                            • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                                            • *
                                                                                                                                                            • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                                                                                                              *
                                                                                                                                                                *
                                                                                                                                                              • *

                                                                                                                                                                * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                                                                                                                *
                                                                                                                                                              • *
                                                                                                                                                              • *

                                                                                                                                                                * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                                                                                                                *
                                                                                                                                                              • *
                                                                                                                                                              • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                                              • *
                                                                                                                                                              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                                              • *
                                                                                                                                                              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                                              • *
                                                                                                                                                              • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                                              • *
                                                                                                                                                              * @sample WafRegionalAsyncClient.UpdateSizeConstraintSet * @see AWS API Documentation */ @Override public CompletableFuture updateSizeConstraintSet( UpdateSizeConstraintSetRequest updateSizeConstraintSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateSizeConstraintSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateSizeConstraintSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateSizeConstraintSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateSizeConstraintSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateSizeConstraintSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateSizeConstraintSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateSizeConstraintSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                                              * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                                              *

                                                                                                                                                              * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                                              *
                                                                                                                                                              *

                                                                                                                                                              * Inserts or deletes SqlInjectionMatchTuple objects (filters) in a SqlInjectionMatchSet. For each * SqlInjectionMatchTuple object, you specify the following values: *

                                                                                                                                                              *
                                                                                                                                                                *
                                                                                                                                                              • *

                                                                                                                                                                * Action: Whether to insert the object into or delete the object from the array. To change a * SqlInjectionMatchTuple, you delete the existing object and add a new one. *

                                                                                                                                                                *
                                                                                                                                                              • *
                                                                                                                                                              • *

                                                                                                                                                                * FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to * inspect a header or custom query parameter, the name of the header or parameter. *

                                                                                                                                                                *
                                                                                                                                                              • *
                                                                                                                                                              • *

                                                                                                                                                                * TextTransformation: Which text transformation, if any, to perform on the web request before * inspecting the request for snippets of malicious SQL code. *

                                                                                                                                                                *

                                                                                                                                                                * You can only specify a single type of TextTransformation. *

                                                                                                                                                                *
                                                                                                                                                              • *
                                                                                                                                                              *

                                                                                                                                                              * You use SqlInjectionMatchSet objects to specify which CloudFront requests that you want to allow, * block, or count. For example, if you're receiving requests that contain snippets of SQL code in the query string * and you want to block the requests, you can create a SqlInjectionMatchSet with the applicable * settings, and then configure AWS WAF to block the requests. *

                                                                                                                                                              *

                                                                                                                                                              * To create and configure a SqlInjectionMatchSet, perform the following steps: *

                                                                                                                                                              *
                                                                                                                                                                *
                                                                                                                                                              1. *

                                                                                                                                                                * Submit a CreateSqlInjectionMatchSet request. *

                                                                                                                                                                *
                                                                                                                                                              2. *
                                                                                                                                                              3. *

                                                                                                                                                                * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateIPSet request. *

                                                                                                                                                                *
                                                                                                                                                              4. *
                                                                                                                                                              5. *

                                                                                                                                                                * Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests that you want AWS * WAF to inspect for snippets of SQL code. *

                                                                                                                                                                *
                                                                                                                                                              6. *
                                                                                                                                                              *

                                                                                                                                                              * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                                              * * @param updateSqlInjectionMatchSetRequest * A request to update a SqlInjectionMatchSet. * @return A Java Future containing the result of the UpdateSqlInjectionMatchSet operation returned by the service.
                                                                                                                                                              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                                                *
                                                                                                                                                              • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                                              • *
                                                                                                                                                              • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                                              • *
                                                                                                                                                              • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                                                *
                                                                                                                                                                  *
                                                                                                                                                                • *

                                                                                                                                                                  * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                                                  *
                                                                                                                                                                • *
                                                                                                                                                                • *

                                                                                                                                                                  * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                                                  *
                                                                                                                                                                • *
                                                                                                                                                                • *

                                                                                                                                                                  * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                                                  *
                                                                                                                                                                • *
                                                                                                                                                                • *

                                                                                                                                                                  * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                                                  *
                                                                                                                                                                • *
                                                                                                                                                                • *

                                                                                                                                                                  * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                                                  *
                                                                                                                                                                • *
                                                                                                                                                                • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                                                                  *
                                                                                                                                                                    *
                                                                                                                                                                  • *

                                                                                                                                                                    * You specified an invalid parameter name. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You specified an invalid value. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • *

                                                                                                                                                                    * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                                                                    *
                                                                                                                                                                  • *
                                                                                                                                                                  • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                                                    *
                                                                                                                                                                      *
                                                                                                                                                                    • *

                                                                                                                                                                      * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • *

                                                                                                                                                                      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • *

                                                                                                                                                                      * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • *

                                                                                                                                                                      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                                                    • *
                                                                                                                                                                    • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                                                    • *
                                                                                                                                                                    • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                                                    • *
                                                                                                                                                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                                                    • *
                                                                                                                                                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                                                    • *
                                                                                                                                                                    • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                                                    • *
                                                                                                                                                                    * @sample WafRegionalAsyncClient.UpdateSqlInjectionMatchSet * @see AWS API Documentation */ @Override public CompletableFuture updateSqlInjectionMatchSet( UpdateSqlInjectionMatchSetRequest updateSqlInjectionMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateSqlInjectionMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateSqlInjectionMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateSqlInjectionMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateSqlInjectionMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateSqlInjectionMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateSqlInjectionMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateSqlInjectionMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                                                    * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                                                    *

                                                                                                                                                                    * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                                                    *
                                                                                                                                                                    *

                                                                                                                                                                    * Inserts or deletes ActivatedRule objects in a WebACL. Each Rule identifies web * requests that you want to allow, block, or count. When you update a WebACL, you specify the * following values: *

                                                                                                                                                                    *
                                                                                                                                                                      *
                                                                                                                                                                    • *

                                                                                                                                                                      * A default action for the WebACL, either ALLOW or BLOCK. AWS WAF performs * the default action if a request doesn't match the criteria in any of the Rules in a * WebACL. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • *

                                                                                                                                                                      * The Rules that you want to add or delete. If you want to replace one Rule with another, * you delete the existing Rule and add the new one. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • *

                                                                                                                                                                      * For each Rule, whether you want AWS WAF to allow requests, block requests, or count requests that * match the conditions in the Rule. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    • *

                                                                                                                                                                      * The order in which you want AWS WAF to evaluate the Rules in a WebACL. If you add more * than one Rule to a WebACL, AWS WAF evaluates each request against the * Rules in order based on the value of Priority. (The Rule that has the * lowest value for Priority is evaluated first.) When a web request matches all the predicates (such * as ByteMatchSets and IPSets) in a Rule, AWS WAF immediately takes the * corresponding action, allow or block, and doesn't evaluate the request against the remaining Rules * in the WebACL, if any. *

                                                                                                                                                                      *
                                                                                                                                                                    • *
                                                                                                                                                                    *

                                                                                                                                                                    * To create and configure a WebACL, perform the following steps: *

                                                                                                                                                                    *
                                                                                                                                                                      *
                                                                                                                                                                    1. *

                                                                                                                                                                      * Create and update the predicates that you want to include in Rules. For more information, see * CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet, * CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet. *

                                                                                                                                                                      *
                                                                                                                                                                    2. *
                                                                                                                                                                    3. *

                                                                                                                                                                      * Create and update the Rules that you want to include in the WebACL. For more * information, see CreateRule and UpdateRule. *

                                                                                                                                                                      *
                                                                                                                                                                    4. *
                                                                                                                                                                    5. *

                                                                                                                                                                      * Create a WebACL. See CreateWebACL. *

                                                                                                                                                                      *
                                                                                                                                                                    6. *
                                                                                                                                                                    7. *

                                                                                                                                                                      * Use GetChangeToken to get the change token that you provide in the ChangeToken * parameter of an UpdateWebACL request. *

                                                                                                                                                                      *
                                                                                                                                                                    8. *
                                                                                                                                                                    9. *

                                                                                                                                                                      * Submit an UpdateWebACL request to specify the Rules that you want to include in the * WebACL, to specify the default action, and to associate the WebACL with a CloudFront * distribution. *

                                                                                                                                                                      *

                                                                                                                                                                      * The ActivatedRule can be a rule group. If you specify a rule group as your * ActivatedRule , you can exclude specific rules from that rule group. *

                                                                                                                                                                      *

                                                                                                                                                                      * If you already have a rule group associated with a web ACL and want to submit an UpdateWebACL * request to exclude certain rules from that rule group, you must first remove the rule group from the web ACL, the * re-insert it again, specifying the excluded rules. For details, see ActivatedRule$ExcludedRules . *

                                                                                                                                                                      *
                                                                                                                                                                    10. *
                                                                                                                                                                    *

                                                                                                                                                                    * Be aware that if you try to add a RATE_BASED rule to a web ACL without setting the rule type when first creating * the rule, the UpdateWebACL request will fail because the request tries to add a REGULAR rule (the default * rule type) with the specified ID, which does not exist. *

                                                                                                                                                                    *

                                                                                                                                                                    * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                                                    * * @param updateWebAclRequest * @return A Java Future containing the result of the UpdateWebACL operation returned by the service.
                                                                                                                                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                                                      *
                                                                                                                                                                    • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                                                    • *
                                                                                                                                                                    • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                                                    • *
                                                                                                                                                                    • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                                                    • *
                                                                                                                                                                    • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                                                      *
                                                                                                                                                                        *
                                                                                                                                                                      • *

                                                                                                                                                                        * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                                                        *
                                                                                                                                                                      • *
                                                                                                                                                                      • *

                                                                                                                                                                        * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                                                        *
                                                                                                                                                                      • *
                                                                                                                                                                      • *

                                                                                                                                                                        * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                                                        *
                                                                                                                                                                      • *
                                                                                                                                                                      • *

                                                                                                                                                                        * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                                                        *
                                                                                                                                                                      • *
                                                                                                                                                                      • *

                                                                                                                                                                        * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                                                        *
                                                                                                                                                                      • *
                                                                                                                                                                      • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                                                                        *
                                                                                                                                                                          *
                                                                                                                                                                        • *

                                                                                                                                                                          * You specified an invalid parameter name. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You specified an invalid value. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • *

                                                                                                                                                                          * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                                                                          *
                                                                                                                                                                        • *
                                                                                                                                                                        • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                                                          *
                                                                                                                                                                            *
                                                                                                                                                                          • *

                                                                                                                                                                            * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                                                            *
                                                                                                                                                                          • *
                                                                                                                                                                          • *

                                                                                                                                                                            * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                                                            *
                                                                                                                                                                          • *
                                                                                                                                                                          • *

                                                                                                                                                                            * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                                                            *
                                                                                                                                                                          • *
                                                                                                                                                                          • *

                                                                                                                                                                            * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                                                            *
                                                                                                                                                                          • *
                                                                                                                                                                          • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                                                          • *
                                                                                                                                                                          • WafReferencedItemException The operation failed because you tried to delete an object that is still * in use. For example:

                                                                                                                                                                            *
                                                                                                                                                                              *
                                                                                                                                                                            • *

                                                                                                                                                                              * You tried to delete a ByteMatchSet that is still referenced by a Rule. *

                                                                                                                                                                              *
                                                                                                                                                                            • *
                                                                                                                                                                            • *

                                                                                                                                                                              * You tried to delete a Rule that is still referenced by a WebACL. *

                                                                                                                                                                              *
                                                                                                                                                                            • *
                                                                                                                                                                            • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                                                            • *
                                                                                                                                                                            • WafSubscriptionNotFoundException The specified subscription does not exist.
                                                                                                                                                                            • *
                                                                                                                                                                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                                                            • *
                                                                                                                                                                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                                                            • *
                                                                                                                                                                            • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                                                            • *
                                                                                                                                                                            * @sample WafRegionalAsyncClient.UpdateWebACL * @see AWS API * Documentation */ @Override public CompletableFuture updateWebACL(UpdateWebAclRequest updateWebAclRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateWebAclRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateWebAclRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateWebACL"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UpdateWebAclResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateWebACL").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateWebAclRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateWebAclRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

                                                                                                                                                                            * This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the * developer guide. *

                                                                                                                                                                            *

                                                                                                                                                                            * For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With * the latest version, AWS WAF has a single set of endpoints for regional and global use. *

                                                                                                                                                                            *
                                                                                                                                                                            *

                                                                                                                                                                            * Inserts or deletes XssMatchTuple objects (filters) in an XssMatchSet. For each * XssMatchTuple object, you specify the following values: *

                                                                                                                                                                            *
                                                                                                                                                                              *
                                                                                                                                                                            • *

                                                                                                                                                                              * Action: Whether to insert the object into or delete the object from the array. To change an * XssMatchTuple, you delete the existing object and add a new one. *

                                                                                                                                                                              *
                                                                                                                                                                            • *
                                                                                                                                                                            • *

                                                                                                                                                                              * FieldToMatch: The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to * inspect a header or custom query parameter, the name of the header or parameter. *

                                                                                                                                                                              *
                                                                                                                                                                            • *
                                                                                                                                                                            • *

                                                                                                                                                                              * TextTransformation: Which text transformation, if any, to perform on the web request before * inspecting the request for cross-site scripting attacks. *

                                                                                                                                                                              *

                                                                                                                                                                              * You can only specify a single type of TextTransformation. *

                                                                                                                                                                              *
                                                                                                                                                                            • *
                                                                                                                                                                            *

                                                                                                                                                                            * You use XssMatchSet objects to specify which CloudFront requests that you want to allow, block, or * count. For example, if you're receiving requests that contain cross-site scripting attacks in the request body * and you want to block the requests, you can create an XssMatchSet with the applicable settings, and * then configure AWS WAF to block the requests. *

                                                                                                                                                                            *

                                                                                                                                                                            * To create and configure an XssMatchSet, perform the following steps: *

                                                                                                                                                                            *
                                                                                                                                                                              *
                                                                                                                                                                            1. *

                                                                                                                                                                              * Submit a CreateXssMatchSet request. *

                                                                                                                                                                              *
                                                                                                                                                                            2. *
                                                                                                                                                                            3. *

                                                                                                                                                                              * Use GetChangeToken to get the change token that you provide in the ChangeToken parameter of * an UpdateIPSet request. *

                                                                                                                                                                              *
                                                                                                                                                                            4. *
                                                                                                                                                                            5. *

                                                                                                                                                                              * Submit an UpdateXssMatchSet request to specify the parts of web requests that you want AWS WAF to * inspect for cross-site scripting attacks. *

                                                                                                                                                                              *
                                                                                                                                                                            6. *
                                                                                                                                                                            *

                                                                                                                                                                            * For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide. *

                                                                                                                                                                            * * @param updateXssMatchSetRequest * A request to update an XssMatchSet. * @return A Java Future containing the result of the UpdateXssMatchSet operation returned by the service.
                                                                                                                                                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                                                                                                                                                              *
                                                                                                                                                                            • WafInternalErrorException The operation failed because of a system problem, even though the request * was valid. Retry your request.
                                                                                                                                                                            • *
                                                                                                                                                                            • WafInvalidAccountException The operation failed because you tried to create, update, or delete an * object by using an invalid account identifier.
                                                                                                                                                                            • *
                                                                                                                                                                            • WafInvalidOperationException The operation failed because there was nothing to do. For example:

                                                                                                                                                                              *
                                                                                                                                                                                *
                                                                                                                                                                              • *

                                                                                                                                                                                * You tried to remove a Rule from a WebACL, but the Rule isn't in * the specified WebACL. *

                                                                                                                                                                                *
                                                                                                                                                                              • *
                                                                                                                                                                              • *

                                                                                                                                                                                * You tried to remove an IP address from an IPSet, but the IP address isn't in the specified * IPSet. *

                                                                                                                                                                                *
                                                                                                                                                                              • *
                                                                                                                                                                              • *

                                                                                                                                                                                * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the * ByteMatchTuple isn't in the specified WebACL. *

                                                                                                                                                                                *
                                                                                                                                                                              • *
                                                                                                                                                                              • *

                                                                                                                                                                                * You tried to add a Rule to a WebACL, but the Rule already exists * in the specified WebACL. *

                                                                                                                                                                                *
                                                                                                                                                                              • *
                                                                                                                                                                              • *

                                                                                                                                                                                * You tried to add a ByteMatchTuple to a ByteMatchSet, but the * ByteMatchTuple already exists in the specified WebACL. *

                                                                                                                                                                                *
                                                                                                                                                                              • *
                                                                                                                                                                              • WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the * request. For example:

                                                                                                                                                                                *
                                                                                                                                                                                  *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You specified an invalid parameter name. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You specified an invalid value. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You tried to update an object (ByteMatchSet, IPSet, Rule, or * WebACL) using an action other than INSERT or DELETE. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You tried to create a WebACL with a DefaultAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You tried to create a RateBasedRule with a RateKey value other than * IP. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You tried to update a WebACL with a WafAction Type other than * ALLOW, BLOCK, or COUNT. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You tried to update a ByteMatchSet with a FieldToMatch Type other * than HEADER, METHOD, QUERY_STRING, URI, or BODY. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * You tried to update a ByteMatchSet with a Field of HEADER but no * value for Data. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • *

                                                                                                                                                                                  * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL * cannot be associated. *

                                                                                                                                                                                  *
                                                                                                                                                                                • *
                                                                                                                                                                                • WafNonexistentContainerException The operation failed because you tried to add an object to or delete * an object from another object that doesn't exist. For example:

                                                                                                                                                                                  *
                                                                                                                                                                                    *
                                                                                                                                                                                  • *

                                                                                                                                                                                    * You tried to add a Rule to or delete a Rule from a WebACL that * doesn't exist. *

                                                                                                                                                                                    *
                                                                                                                                                                                  • *
                                                                                                                                                                                  • *

                                                                                                                                                                                    * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a * Rule that doesn't exist. *

                                                                                                                                                                                    *
                                                                                                                                                                                  • *
                                                                                                                                                                                  • *

                                                                                                                                                                                    * You tried to add an IP address to or delete an IP address from an IPSet that doesn't exist. *

                                                                                                                                                                                    *
                                                                                                                                                                                  • *
                                                                                                                                                                                  • *

                                                                                                                                                                                    * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from a * ByteMatchSet that doesn't exist. *

                                                                                                                                                                                    *
                                                                                                                                                                                  • *
                                                                                                                                                                                  • WafNonexistentItemException The operation failed because the referenced object doesn't exist.
                                                                                                                                                                                  • *
                                                                                                                                                                                  • WafStaleDataException The operation failed because you tried to create, update, or delete an object * by using a change token that has already been used.
                                                                                                                                                                                  • *
                                                                                                                                                                                  • WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of * WebACL objects that you can create for an AWS account. For more information, see Limits in the AWS WAF * Developer Guide.
                                                                                                                                                                                  • *
                                                                                                                                                                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                                                                                                                                                                  • *
                                                                                                                                                                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                                                                                                                                                                  • *
                                                                                                                                                                                  • WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                                                                                                  • *
                                                                                                                                                                                  * @sample WafRegionalAsyncClient.UpdateXssMatchSet * @see AWS API Documentation */ @Override public CompletableFuture updateXssMatchSet(UpdateXssMatchSetRequest updateXssMatchSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateXssMatchSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateXssMatchSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateXssMatchSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateXssMatchSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateXssMatchSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateXssMatchSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateXssMatchSetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } @Override public final WafRegionalServiceClientConfiguration serviceClientConfiguration() { return new WafRegionalServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()).build(); } @Override public final String serviceName() { return SERVICE_NAME; } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(WafException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("WAFUnavailableEntityException") .exceptionBuilderSupplier(WafUnavailableEntityException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFServiceLinkedRoleErrorException") .exceptionBuilderSupplier(WafServiceLinkedRoleErrorException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFSubscriptionNotFoundException") .exceptionBuilderSupplier(WafSubscriptionNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFLimitsExceededException") .exceptionBuilderSupplier(WafLimitsExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFEntityMigrationException") .exceptionBuilderSupplier(WafEntityMigrationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidParameterException") .exceptionBuilderSupplier(WafInvalidParameterException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFStaleDataException") .exceptionBuilderSupplier(WafStaleDataException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidRegexPatternException") .exceptionBuilderSupplier(WafInvalidRegexPatternException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFNonexistentItemException") .exceptionBuilderSupplier(WafNonexistentItemException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFNonEmptyEntityException") .exceptionBuilderSupplier(WafNonEmptyEntityException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFBadRequestException") .exceptionBuilderSupplier(WafBadRequestException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFDisallowedNameException") .exceptionBuilderSupplier(WafDisallowedNameException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidPermissionPolicyException") .exceptionBuilderSupplier(WafInvalidPermissionPolicyException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFNonexistentContainerException") .exceptionBuilderSupplier(WafNonexistentContainerException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidAccountException") .exceptionBuilderSupplier(WafInvalidAccountException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFReferencedItemException") .exceptionBuilderSupplier(WafReferencedItemException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFTagOperationException") .exceptionBuilderSupplier(WafTagOperationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFTagOperationInternalErrorException") .exceptionBuilderSupplier(WafTagOperationInternalErrorException::builder).httpStatusCode(500) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidOperationException") .exceptionBuilderSupplier(WafInvalidOperationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInternalErrorException") .exceptionBuilderSupplier(WafInternalErrorException::builder).httpStatusCode(500).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private void updateRetryStrategyClientConfiguration(SdkClientConfiguration.Builder configuration) { ClientOverrideConfiguration.Builder builder = configuration.asOverrideConfigurationBuilder(); RetryMode retryMode = builder.retryMode(); if (retryMode != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, AwsRetryStrategy.forRetryMode(retryMode)); } else { Consumer> configurator = builder.retryStrategyConfigurator(); if (configurator != null) { RetryStrategy.Builder defaultBuilder = AwsRetryStrategy.defaultRetryStrategy().toBuilder(); configurator.accept(defaultBuilder); configuration.option(SdkClientOption.RETRY_STRATEGY, defaultBuilder.build()); } else { RetryStrategy retryStrategy = builder.retryStrategy(); if (retryStrategy != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, retryStrategy); } } } configuration.option(SdkClientOption.CONFIGURED_RETRY_MODE, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_STRATEGY, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_CONFIGURATOR, null); } private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, SdkClientConfiguration clientConfiguration) { List plugins = request.overrideConfiguration().map(c -> c.plugins()).orElse(Collections.emptyList()); SdkClientConfiguration.Builder configuration = clientConfiguration.toBuilder(); if (plugins.isEmpty()) { return configuration.build(); } WafRegionalServiceClientConfigurationBuilder serviceConfigBuilder = new WafRegionalServiceClientConfigurationBuilder( configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } updateRetryStrategyClientConfiguration(configuration); return configuration.build(); } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } @Override public void close() { clientHandler.close(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy