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

software.amazon.awssdk.services.wafv2.DefaultWafv2AsyncClient Maven / Gradle / Ivy

/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.wafv2;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
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.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkPlugin;
import software.amazon.awssdk.core.SdkRequest;
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.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.services.wafv2.internal.Wafv2ServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.wafv2.model.AssociateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.AssociateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.CheckCapacityRequest;
import software.amazon.awssdk.services.wafv2.model.CheckCapacityResponse;
import software.amazon.awssdk.services.wafv2.model.CreateApiKeyRequest;
import software.amazon.awssdk.services.wafv2.model.CreateApiKeyResponse;
import software.amazon.awssdk.services.wafv2.model.CreateIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.CreateIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.CreateRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.CreateRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.CreateRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.CreateRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.CreateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.CreateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteApiKeyRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteApiKeyResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteFirewallManagerRuleGroupsRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteFirewallManagerRuleGroupsResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteLoggingConfigurationRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteLoggingConfigurationResponse;
import software.amazon.awssdk.services.wafv2.model.DeletePermissionPolicyRequest;
import software.amazon.awssdk.services.wafv2.model.DeletePermissionPolicyResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.DescribeAllManagedProductsRequest;
import software.amazon.awssdk.services.wafv2.model.DescribeAllManagedProductsResponse;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedProductsByVendorRequest;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedProductsByVendorResponse;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.DisassociateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.DisassociateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.GenerateMobileSdkReleaseUrlRequest;
import software.amazon.awssdk.services.wafv2.model.GenerateMobileSdkReleaseUrlResponse;
import software.amazon.awssdk.services.wafv2.model.GetDecryptedApiKeyRequest;
import software.amazon.awssdk.services.wafv2.model.GetDecryptedApiKeyResponse;
import software.amazon.awssdk.services.wafv2.model.GetIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.GetIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.GetLoggingConfigurationRequest;
import software.amazon.awssdk.services.wafv2.model.GetLoggingConfigurationResponse;
import software.amazon.awssdk.services.wafv2.model.GetManagedRuleSetRequest;
import software.amazon.awssdk.services.wafv2.model.GetManagedRuleSetResponse;
import software.amazon.awssdk.services.wafv2.model.GetMobileSdkReleaseRequest;
import software.amazon.awssdk.services.wafv2.model.GetMobileSdkReleaseResponse;
import software.amazon.awssdk.services.wafv2.model.GetPermissionPolicyRequest;
import software.amazon.awssdk.services.wafv2.model.GetPermissionPolicyResponse;
import software.amazon.awssdk.services.wafv2.model.GetRateBasedStatementManagedKeysRequest;
import software.amazon.awssdk.services.wafv2.model.GetRateBasedStatementManagedKeysResponse;
import software.amazon.awssdk.services.wafv2.model.GetRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.GetRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.GetRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.GetRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.GetSampledRequestsRequest;
import software.amazon.awssdk.services.wafv2.model.GetSampledRequestsResponse;
import software.amazon.awssdk.services.wafv2.model.GetWebAclForResourceRequest;
import software.amazon.awssdk.services.wafv2.model.GetWebAclForResourceResponse;
import software.amazon.awssdk.services.wafv2.model.GetWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.GetWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.ListApiKeysRequest;
import software.amazon.awssdk.services.wafv2.model.ListApiKeysResponse;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupVersionsRequest;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupVersionsResponse;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupsRequest;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupsResponse;
import software.amazon.awssdk.services.wafv2.model.ListIpSetsRequest;
import software.amazon.awssdk.services.wafv2.model.ListIpSetsResponse;
import software.amazon.awssdk.services.wafv2.model.ListLoggingConfigurationsRequest;
import software.amazon.awssdk.services.wafv2.model.ListLoggingConfigurationsResponse;
import software.amazon.awssdk.services.wafv2.model.ListManagedRuleSetsRequest;
import software.amazon.awssdk.services.wafv2.model.ListManagedRuleSetsResponse;
import software.amazon.awssdk.services.wafv2.model.ListMobileSdkReleasesRequest;
import software.amazon.awssdk.services.wafv2.model.ListMobileSdkReleasesResponse;
import software.amazon.awssdk.services.wafv2.model.ListRegexPatternSetsRequest;
import software.amazon.awssdk.services.wafv2.model.ListRegexPatternSetsResponse;
import software.amazon.awssdk.services.wafv2.model.ListResourcesForWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.ListResourcesForWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.ListRuleGroupsRequest;
import software.amazon.awssdk.services.wafv2.model.ListRuleGroupsResponse;
import software.amazon.awssdk.services.wafv2.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.wafv2.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.wafv2.model.ListWebAcLsRequest;
import software.amazon.awssdk.services.wafv2.model.ListWebAcLsResponse;
import software.amazon.awssdk.services.wafv2.model.PutLoggingConfigurationRequest;
import software.amazon.awssdk.services.wafv2.model.PutLoggingConfigurationResponse;
import software.amazon.awssdk.services.wafv2.model.PutManagedRuleSetVersionsRequest;
import software.amazon.awssdk.services.wafv2.model.PutManagedRuleSetVersionsResponse;
import software.amazon.awssdk.services.wafv2.model.PutPermissionPolicyRequest;
import software.amazon.awssdk.services.wafv2.model.PutPermissionPolicyResponse;
import software.amazon.awssdk.services.wafv2.model.TagResourceRequest;
import software.amazon.awssdk.services.wafv2.model.TagResourceResponse;
import software.amazon.awssdk.services.wafv2.model.UntagResourceRequest;
import software.amazon.awssdk.services.wafv2.model.UntagResourceResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateManagedRuleSetVersionExpiryDateRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateManagedRuleSetVersionExpiryDateResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.WafAssociatedItemException;
import software.amazon.awssdk.services.wafv2.model.WafConfigurationWarningException;
import software.amazon.awssdk.services.wafv2.model.WafDuplicateItemException;
import software.amazon.awssdk.services.wafv2.model.WafExpiredManagedRuleGroupVersionException;
import software.amazon.awssdk.services.wafv2.model.WafInternalErrorException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidOperationException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidParameterException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidPermissionPolicyException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidResourceException;
import software.amazon.awssdk.services.wafv2.model.WafLimitsExceededException;
import software.amazon.awssdk.services.wafv2.model.WafLogDestinationPermissionIssueException;
import software.amazon.awssdk.services.wafv2.model.WafNonexistentItemException;
import software.amazon.awssdk.services.wafv2.model.WafOptimisticLockException;
import software.amazon.awssdk.services.wafv2.model.WafServiceLinkedRoleErrorException;
import software.amazon.awssdk.services.wafv2.model.WafSubscriptionNotFoundException;
import software.amazon.awssdk.services.wafv2.model.WafTagOperationException;
import software.amazon.awssdk.services.wafv2.model.WafTagOperationInternalErrorException;
import software.amazon.awssdk.services.wafv2.model.WafUnavailableEntityException;
import software.amazon.awssdk.services.wafv2.model.WafUnsupportedAggregateKeyTypeException;
import software.amazon.awssdk.services.wafv2.model.Wafv2Exception;
import software.amazon.awssdk.services.wafv2.transform.AssociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CheckCapacityRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateApiKeyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteApiKeyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteFirewallManagerRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeletePermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DescribeAllManagedProductsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DescribeManagedProductsByVendorRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DescribeManagedRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DisassociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GenerateMobileSdkReleaseUrlRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetDecryptedApiKeyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetManagedRuleSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetMobileSdkReleaseRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetRateBasedStatementManagedKeysRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetSampledRequestsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetWebAclForResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListApiKeysRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListAvailableManagedRuleGroupVersionsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListAvailableManagedRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListIpSetsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListLoggingConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListManagedRuleSetsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListMobileSdkReleasesRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListRegexPatternSetsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListResourcesForWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListWebAcLsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.PutLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.PutManagedRuleSetVersionsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.PutPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateManagedRuleSetVersionExpiryDateRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateWebAclRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;

/**
 * Internal implementation of {@link Wafv2AsyncClient}.
 *
 * @see Wafv2AsyncClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultWafv2AsyncClient implements Wafv2AsyncClient {
    private static final Logger log = LoggerFactory.getLogger(DefaultWafv2AsyncClient.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 DefaultWafv2AsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    /**
     * 

* Associates a web ACL with a regional application resource, to protect the resource. A regional application can be * an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito * user pool, an App Runner service, or an Amazon Web Services Verified Access instance. *

*

* For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate * a web ACL, in the CloudFront call UpdateDistribution, set the web ACL ID to the Amazon Resource Name * (ARN) of the web ACL. For information, see UpdateDistribution in the Amazon CloudFront Developer Guide. *

*

* Required permissions for customer-managed IAM policies *

*

* This call requires permissions that are specific to the protected resource type. For details, see Permissions for AssociateWebACL in the WAF Developer Guide. *

*

* Temporary inconsistencies during updates *

*

* When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate * to all areas where the resources are stored. The propagation time can be from a few seconds to a number of * minutes. *

*

* The following are examples of the temporary inconsistencies that you might notice during change propagation: *

*
    *
  • *

    * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating * that the web ACL is unavailable. *

    *
  • *
  • *

    * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web * ACL is used and not in another. *

    *
  • *
  • *

    * After you change a rule action setting, you might see the old action in some places and the new action in others. *

    *
  • *
  • *

    * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in * one area while still allowed in another. *

    *
  • *
* * @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. *
    *
  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
  • *
  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

    *
      *
    • *

      * You specified a parameter name or value that isn't valid. *

      *
    • *
    • *

      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

      *
    • *
    • *

      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

      *
    • *
    • *

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

      *
    • *
    • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
    • *
    • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
    • *
    • WafInvalidOperationException The operation isn't valid.
    • *
    • 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.
    • *
    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
    • *
    * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

    * Returns the web ACL capacity unit (WCU) requirements for a specified scope and set of rules. You can use this to * check the capacity requirements for the rules you want to use in a RuleGroup or WebACL. *

    *

    * WAF uses WCUs to calculate and control the operating resources that are used to run your rules, rule groups, and * web ACLs. WAF calculates capacity differently for each rule type, to reflect the relative cost of each rule. * Simple rules that cost little to run use fewer WCUs than more complex rules that use more processing power. Rule * group capacity is fixed at creation, which helps users plan their web ACL WCU usage when they use a rule group. * For more information, see WAF web ACL capacity * units (WCU) in the WAF Developer Guide. *

    * * @param checkCapacityRequest * @return A Java Future containing the result of the CheckCapacity operation returned by the service.
    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
      *
    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
    • *
    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

      *
        *
      • *

        * You specified a parameter name or value that isn't valid. *

        *
      • *
      • *

        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

        *
      • *
      • *

        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

        *
      • *
      • *

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

        *
      • *
      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
      • *
      • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
      • *
      • WafInvalidResourceException WAF couldn’t perform the operation because the resource that you * requested isn’t valid. Check the resource, and try again.
      • *
      • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
      • *
      • WafSubscriptionNotFoundException You tried to use a managed rule group that's available by * subscription, but you aren't subscribed to it yet.
      • *
      • WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the * managed rule group has expired. You can retrieve the available versions for the managed rule group by * calling ListAvailableManagedRuleGroupVersions.
      • *
      • WafInvalidOperationException The operation isn't valid.
      • *
      • 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.
      • *
      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample Wafv2AsyncClient.CheckCapacity * @see AWS API * Documentation */ @Override public CompletableFuture checkCapacity(CheckCapacityRequest checkCapacityRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(checkCapacityRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, checkCapacityRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CheckCapacity"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CheckCapacityResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CheckCapacity").withProtocolMetadata(protocolMetadata) .withMarshaller(new CheckCapacityRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(checkCapacityRequest)); 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 API key that contains a set of token domains. *

      *

      * API keys are required for the integration of the CAPTCHA API in your JavaScript client applications. The API lets * you customize the placement and characteristics of the CAPTCHA puzzle for your end users. For more information * about the CAPTCHA JavaScript integration, see WAF client * application integration in the WAF Developer Guide. *

      *

      * You can use a single key for up to 5 domains. After you generate a key, you can copy it for use in your * JavaScript integration. *

      * * @param createApiKeyRequest * @return A Java Future containing the result of the CreateAPIKey operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
        *
      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
      • *
      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

        *
          *
        • *

          * You specified a parameter name or value that isn't valid. *

          *
        • *
        • *

          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

          *
        • *
        • *

          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

          *
        • *
        • *

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

          *
        • *
        • WafInvalidOperationException The operation isn't valid.
        • *
        • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the 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.
        • *
        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample Wafv2AsyncClient.CreateAPIKey * @see AWS API * Documentation */ @Override public CompletableFuture createAPIKey(CreateApiKeyRequest createApiKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createApiKeyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createApiKeyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateAPIKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateApiKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateAPIKey").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateApiKeyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createApiKeyRequest)); 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 IPSet, which you use to identify web requests that originate from specific IP addresses or * ranges of IP addresses. For example, if you're receiving a lot of requests from a ranges of IP addresses, you can * configure WAF to block them using an IPSet that lists those IP addresses. *

        * * @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. *
          *
        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
        • *
        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

          *
            *
          • *

            * You specified a parameter name or value that isn't valid. *

            *
          • *
          • *

            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

            *
          • *
          • *

            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

            *
          • *
          • *

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

            *
          • *
          • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
          • *
          • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
          • *
          • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
          • *
          • WafTagOperationException An error occurred during the tagging operation. Retry your request.
          • *
          • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
          • *
          • WafInvalidOperationException The operation isn't valid.
          • *
          • 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.
          • *
          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

          * Creates a RegexPatternSet, which you reference in a RegexPatternSetReferenceStatement, to have WAF * inspect a web request component for the specified patterns. *

          * * @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. *
            *
          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
          • *
          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

            *
              *
            • *

              * You specified a parameter name or value that isn't valid. *

              *
            • *
            • *

              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

              *
            • *
            • *

              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

              *
            • *
            • *

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

              *
            • *
            • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
            • *
            • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
            • *
            • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
            • *
            • WafTagOperationException An error occurred during the tagging operation. Retry your request.
            • *
            • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
            • *
            • WafInvalidOperationException The operation isn't valid.
            • *
            • 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.
            • *
            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

            * Creates a RuleGroup per the specifications provided. *

            *

            * A rule group defines a collection of rules to inspect and control web requests that you can use in a * WebACL. When you create a rule group, you define an immutable capacity limit. If you update a rule group, * you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity * requirements. *

            * * @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. *
              *
            • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
            • *
            • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

              *
                *
              • *

                * You specified a parameter name or value that isn't valid. *

                *
              • *
              • *

                * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                *
              • *
              • *

                * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                *
              • *
              • *

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

                *
              • *
              • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
              • *
              • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
              • *
              • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
              • *
              • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
              • *
              • WafTagOperationException An error occurred during the tagging operation. Retry your request.
              • *
              • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
              • *
              • WafSubscriptionNotFoundException You tried to use a managed rule group that's available by * subscription, but you aren't subscribed to it yet.
              • *
              • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
              • *
              • WafInvalidOperationException The operation isn't valid.
              • *
              • 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.
              • *
              • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

              * Creates a WebACL per the specifications provided. *

              *

              * A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement * that defines what to look for in web requests and an action that WAF applies to requests that match the * statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match * any of the rules. The rules in a web ACL can be a combination of the types Rule, RuleGroup, and * managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The * resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, * an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified * Access instance. *

              * * @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. *
                *
              • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
              • *
              • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                *
                  *
                • *

                  * You specified a parameter name or value that isn't valid. *

                  *
                • *
                • *

                  * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                  *
                • *
                • *

                  * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                  *
                • *
                • *

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

                  *
                • *
                • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
                • *
                • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                • *
                • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                • *
                • WafInvalidResourceException WAF couldn’t perform the operation because the resource that you * requested isn’t valid. Check the resource, and try again.
                • *
                • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
                • *
                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                • *
                • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                • *
                • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                • *
                • WafSubscriptionNotFoundException You tried to use a managed rule group that's available by * subscription, but you aren't subscribed to it yet.
                • *
                • WafInvalidOperationException The operation isn't valid.
                • *
                • WafConfigurationWarningException The operation failed because you are inspecting the web request * body, headers, or cookies without specifying how to handle oversize components. Rules that inspect the * body must either provide an OversizeHandling configuration or they must be preceded by a * SizeConstraintStatement that blocks the body content from being too large. Rules that * inspect the headers or cookies must provide an OversizeHandling configuration.

                  *

                  * Provide the handling configuration and retry your operation. *

                  *

                  * Alternately, you can suppress this warning by adding the following tag to the resource that you provide * to this operation: Tag (key:WAF:OversizeFieldsHandlingConstraintOptOut, value: * true).

                • *
                • WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the * managed rule group has expired. You can retrieve the available versions for the managed rule group by * calling ListAvailableManagedRuleGroupVersions.
                • *
                • 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.
                • *
                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                • *
                * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                * Deletes the specified API key. *

                *

                * After you delete a key, it can take up to 24 hours for WAF to disallow use of the key in all regions. *

                * * @param deleteApiKeyRequest * @return A Java Future containing the result of the DeleteAPIKey operation returned by the service.
                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                  *
                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                • *
                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                • *
                • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                • *
                • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                  *
                    *
                  • *

                    * You specified a parameter name or value that isn't valid. *

                    *
                  • *
                  • *

                    * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                    *
                  • *
                  • *

                    * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                    *
                  • *
                  • *

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

                    *
                  • *
                  • WafInvalidOperationException The operation isn't valid.
                  • *
                  • 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.
                  • *
                  • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample Wafv2AsyncClient.DeleteAPIKey * @see AWS API * Documentation */ @Override public CompletableFuture deleteAPIKey(DeleteApiKeyRequest deleteApiKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteApiKeyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApiKeyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteAPIKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteApiKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteAPIKey").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteApiKeyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteApiKeyRequest)); 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); } } /** *

                  * Deletes all rule groups that are managed by Firewall Manager for the specified web ACL. *

                  *

                  * You can only use this if ManagedByFirewallManager is false in the specified WebACL. *

                  * * @param deleteFirewallManagerRuleGroupsRequest * @return A Java Future containing the result of the DeleteFirewallManagerRuleGroups operation returned by the * service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                    *
                  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                  • *
                  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                    *
                      *
                    • *

                      * You specified a parameter name or value that isn't valid. *

                      *
                    • *
                    • *

                      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                      *
                    • *
                    • *

                      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                      *
                    • *
                    • *

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

                      *
                    • *
                    • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                    • *
                    • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                    • *
                    • WafInvalidOperationException The operation isn't valid.
                    • *
                    • 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.
                    • *
                    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                    • *
                    * @sample Wafv2AsyncClient.DeleteFirewallManagerRuleGroups * @see AWS API Documentation */ @Override public CompletableFuture deleteFirewallManagerRuleGroups( DeleteFirewallManagerRuleGroupsRequest deleteFirewallManagerRuleGroupsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFirewallManagerRuleGroupsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFirewallManagerRuleGroupsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFirewallManagerRuleGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFirewallManagerRuleGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFirewallManagerRuleGroups").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteFirewallManagerRuleGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteFirewallManagerRuleGroupsRequest)); 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); } } /** *

                    * Deletes the specified IPSet. *

                    * * @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. *
                      *
                    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                    • *
                    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                      *
                        *
                      • *

                        * You specified a parameter name or value that isn't valid. *

                        *
                      • *
                      • *

                        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                        *
                      • *
                      • *

                        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                        *
                      • *
                      • *

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

                        *
                      • *
                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                      • *
                      • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                      • *
                      • WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by * another resource or it’s associated with another resource.
                      • *
                      • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                      • *
                      • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                      • *
                      • WafInvalidOperationException The operation isn't valid.
                      • *
                      • 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.
                      • *
                      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                      • *
                      * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                      * 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. *
                        *
                      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                      • *
                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                      • *
                      • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                      • *
                      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                        *
                          *
                        • *

                          * You specified a parameter name or value that isn't valid. *

                          *
                        • *
                        • *

                          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                          *
                        • *
                        • *

                          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                          *
                        • *
                        • *

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

                          *
                        • *
                        • WafInvalidOperationException The operation isn't valid.
                        • *
                        • 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.
                        • *
                        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                        • *
                        * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                        * Permanently deletes an IAM policy from the specified rule group. *

                        *

                        * You must be the owner of the rule group to perform this operation. *

                        * * @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. *
                          *
                        • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                        • *
                        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                        • *
                        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                          *
                            *
                          • *

                            * You specified a parameter name or value that isn't valid. *

                            *
                          • *
                          • *

                            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                            *
                          • *
                          • *

                            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                            *
                          • *
                          • *

                            * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't * 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.
                          • *
                          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                          • *
                          * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                          * Deletes the specified RegexPatternSet. *

                          * * @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. *
                            *
                          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                          • *
                          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                            *
                              *
                            • *

                              * You specified a parameter name or value that isn't valid. *

                              *
                            • *
                            • *

                              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                              *
                            • *
                            • *

                              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                              *
                            • *
                            • *

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

                              *
                            • *
                            • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                            • *
                            • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                            • *
                            • WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by * another resource or it’s associated with another resource.
                            • *
                            • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                            • *
                            • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                            • *
                            • WafInvalidOperationException The operation isn't valid.
                            • *
                            • 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.
                            • *
                            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                            • *
                            * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                            * Deletes the specified RuleGroup. *

                            * * @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. *
                              *
                            • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                            • *
                            • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                              *
                                *
                              • *

                                * You specified a parameter name or value that isn't valid. *

                                *
                              • *
                              • *

                                * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                *
                              • *
                              • *

                                * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                *
                              • *
                              • *

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

                                *
                              • *
                              • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                              • *
                              • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                              • *
                              • WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by * another resource or it’s associated with another resource.
                              • *
                              • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                              • *
                              • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                              • *
                              • WafInvalidOperationException The operation isn't valid.
                              • *
                              • 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.
                              • *
                              • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                              • *
                              * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                              * Deletes the specified WebACL. *

                              *

                              * You can only use this if ManagedByFirewallManager is false in the specified WebACL. *

                              * *

                              * Before deleting any web ACL, first disassociate it from all resources. *

                              *
                                *
                              • *

                                * To retrieve a list of the resources that are associated with a web ACL, use the following calls: *

                                *
                                  *
                                • *

                                  * For regional resources, call ListResourcesForWebACL. *

                                  *
                                • *
                                • *

                                  * For Amazon CloudFront distributions, use the CloudFront call ListDistributionsByWebACLId. For * information, see ListDistributionsByWebACLId in the Amazon CloudFront API Reference. *

                                  *
                                • *
                                *
                              • *
                              • *

                                * To disassociate a resource from a web ACL, use the following calls: *

                                *
                                  *
                                • *

                                  * For regional resources, call DisassociateWebACL. *

                                  *
                                • *
                                • *

                                  * For Amazon CloudFront distributions, provide an empty web ACL ID in the CloudFront call * UpdateDistribution. For information, see UpdateDistribution in the Amazon CloudFront API Reference. *

                                  *
                                • *
                                *
                              • *
                              *
                              * * @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. *
                                *
                              • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                              • *
                              • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                *
                                  *
                                • *

                                  * You specified a parameter name or value that isn't valid. *

                                  *
                                • *
                                • *

                                  * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                  *
                                • *
                                • *

                                  * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                  *
                                • *
                                • *

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

                                  *
                                • *
                                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                • *
                                • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                • *
                                • WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by * another resource or it’s associated with another resource.
                                • *
                                • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                                • *
                                • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                                • *
                                • WafInvalidOperationException The operation isn't valid.
                                • *
                                • 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.
                                • *
                                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                • *
                                * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                * Provides high-level information for the Amazon Web Services Managed Rules rule groups and Amazon Web Services * Marketplace managed rule groups. *

                                * * @param describeAllManagedProductsRequest * @return A Java Future containing the result of the DescribeAllManagedProducts operation returned by the service.
                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                  *
                                • WafInvalidOperationException The operation isn't valid.
                                • *
                                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. 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.
                                • *
                                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                • *
                                * @sample Wafv2AsyncClient.DescribeAllManagedProducts * @see AWS API Documentation */ @Override public CompletableFuture describeAllManagedProducts( DescribeAllManagedProductsRequest describeAllManagedProductsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeAllManagedProductsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAllManagedProductsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAllManagedProducts"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeAllManagedProductsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeAllManagedProducts").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeAllManagedProductsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeAllManagedProductsRequest)); 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); } } /** *

                                * Provides high-level information for the managed rule groups owned by a specific vendor. *

                                * * @param describeManagedProductsByVendorRequest * @return A Java Future containing the result of the DescribeManagedProductsByVendor operation returned by the * service.
                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                  *
                                • WafInvalidOperationException The operation isn't valid.
                                • *
                                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                • *
                                • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                  *
                                    *
                                  • *

                                    * You specified a parameter name or value that isn't valid. *

                                    *
                                  • *
                                  • *

                                    * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                    *
                                  • *
                                  • *

                                    * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                    *
                                  • *
                                  • *

                                    * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't * 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.
                                  • *
                                  • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                  • *
                                  * @sample Wafv2AsyncClient.DescribeManagedProductsByVendor * @see AWS API Documentation */ @Override public CompletableFuture describeManagedProductsByVendor( DescribeManagedProductsByVendorRequest describeManagedProductsByVendorRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeManagedProductsByVendorRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeManagedProductsByVendorRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeManagedProductsByVendor"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeManagedProductsByVendorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeManagedProductsByVendor").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeManagedProductsByVendorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeManagedProductsByVendorRequest)); 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); } } /** *

                                  * Provides high-level information for a managed rule group, including descriptions of the rules. *

                                  * * @param describeManagedRuleGroupRequest * @return A Java Future containing the result of the DescribeManagedRuleGroup operation returned by the service.
                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                    *
                                  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                  • *
                                  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                    *
                                      *
                                    • *

                                      * You specified a parameter name or value that isn't valid. *

                                      *
                                    • *
                                    • *

                                      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                      *
                                    • *
                                    • *

                                      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                      *
                                    • *
                                    • *

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

                                      *
                                    • *
                                    • WafInvalidResourceException WAF couldn’t perform the operation because the resource that you * requested isn’t valid. Check the resource, and try again.
                                    • *
                                    • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                    • *
                                    • WafInvalidOperationException The operation isn't valid.
                                    • *
                                    • WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the * managed rule group has expired. You can retrieve the available versions for the managed rule group by * calling ListAvailableManagedRuleGroupVersions.
                                    • *
                                    • 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.
                                    • *
                                    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                    • *
                                    * @sample Wafv2AsyncClient.DescribeManagedRuleGroup * @see AWS API Documentation */ @Override public CompletableFuture describeManagedRuleGroup( DescribeManagedRuleGroupRequest describeManagedRuleGroupRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeManagedRuleGroupRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeManagedRuleGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeManagedRuleGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeManagedRuleGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeManagedRuleGroup").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeManagedRuleGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeManagedRuleGroupRequest)); 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); } } /** *

                                    * Disassociates the specified regional application resource from any existing web ACL association. A resource can * have at most one web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon * API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon * Web Services Verified Access instance. *

                                    *

                                    * For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To * disassociate a web ACL, provide an empty web ACL ID in the CloudFront call UpdateDistribution. For * information, see * UpdateDistribution in the Amazon CloudFront API Reference. *

                                    *

                                    * Required permissions for customer-managed IAM policies *

                                    *

                                    * This call requires permissions that are specific to the protected resource type. For details, see Permissions for DisassociateWebACL in the WAF Developer Guide. *

                                    * * @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. *
                                      *
                                    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                    • *
                                    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                      *
                                        *
                                      • *

                                        * You specified a parameter name or value that isn't valid. *

                                        *
                                      • *
                                      • *

                                        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                        *
                                      • *
                                      • *

                                        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                        *
                                      • *
                                      • *

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

                                        *
                                      • *
                                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                      • *
                                      • WafInvalidOperationException The operation isn't valid.
                                      • *
                                      • 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.
                                      • *
                                      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                      • *
                                      * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                      * Generates a presigned download URL for the specified release of the mobile SDK. *

                                      *

                                      * The mobile SDK is not generally available. Customers who have access to the mobile SDK can use it to establish * and manage WAF tokens for use in HTTP(S) requests from a mobile device to WAF. For more information, see WAF client * application integration in the WAF Developer Guide. *

                                      * * @param generateMobileSdkReleaseUrlRequest * @return A Java Future containing the result of the GenerateMobileSdkReleaseUrl operation returned by the service.
                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                        *
                                      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                      • *
                                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                      • *
                                      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                        *
                                          *
                                        • *

                                          * You specified a parameter name or value that isn't valid. *

                                          *
                                        • *
                                        • *

                                          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                          *
                                        • *
                                        • *

                                          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                          *
                                        • *
                                        • *

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

                                          *
                                        • *
                                        • WafInvalidOperationException The operation isn't valid.
                                        • *
                                        • 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.
                                        • *
                                        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                        • *
                                        * @sample Wafv2AsyncClient.GenerateMobileSdkReleaseUrl * @see AWS API Documentation */ @Override public CompletableFuture generateMobileSdkReleaseUrl( GenerateMobileSdkReleaseUrlRequest generateMobileSdkReleaseUrlRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(generateMobileSdkReleaseUrlRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, generateMobileSdkReleaseUrlRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GenerateMobileSdkReleaseUrl"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GenerateMobileSdkReleaseUrlResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GenerateMobileSdkReleaseUrl").withProtocolMetadata(protocolMetadata) .withMarshaller(new GenerateMobileSdkReleaseUrlRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(generateMobileSdkReleaseUrlRequest)); 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); } } /** *

                                        * Returns your API key in decrypted form. Use this to check the token domains that you have defined for the key. *

                                        *

                                        * API keys are required for the integration of the CAPTCHA API in your JavaScript client applications. The API lets * you customize the placement and characteristics of the CAPTCHA puzzle for your end users. For more information * about the CAPTCHA JavaScript integration, see WAF client * application integration in the WAF Developer Guide. *

                                        * * @param getDecryptedApiKeyRequest * @return A Java Future containing the result of the GetDecryptedAPIKey operation returned by the service.
                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                          *
                                        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                        • *
                                        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                          *
                                            *
                                          • *

                                            * You specified a parameter name or value that isn't valid. *

                                            *
                                          • *
                                          • *

                                            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                            *
                                          • *
                                          • *

                                            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                            *
                                          • *
                                          • *

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

                                            *
                                          • *
                                          • WafInvalidOperationException The operation isn't valid.
                                          • *
                                          • WafInvalidResourceException WAF couldn’t perform the operation because the resource that you * requested isn’t valid. Check the resource, and try again.
                                          • *
                                          • 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.
                                          • *
                                          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                          • *
                                          * @sample Wafv2AsyncClient.GetDecryptedAPIKey * @see AWS API * Documentation */ @Override public CompletableFuture getDecryptedAPIKey(GetDecryptedApiKeyRequest getDecryptedApiKeyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getDecryptedApiKeyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getDecryptedApiKeyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetDecryptedAPIKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetDecryptedApiKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetDecryptedAPIKey").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetDecryptedApiKeyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getDecryptedApiKeyRequest)); 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); } } /** *

                                          * Retrieves the specified IPSet. *

                                          * * @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. *
                                            *
                                          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                          • *
                                          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                            *
                                              *
                                            • *

                                              * You specified a parameter name or value that isn't valid. *

                                              *
                                            • *
                                            • *

                                              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                              *
                                            • *
                                            • *

                                              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                              *
                                            • *
                                            • *

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

                                              *
                                            • *
                                            • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                            • *
                                            • WafInvalidOperationException The operation isn't valid.
                                            • *
                                            • 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.
                                            • *
                                            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                            • *
                                            * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                            * 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. *
                                              *
                                            • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                            • *
                                            • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                            • *
                                            • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                              *
                                                *
                                              • *

                                                * You specified a parameter name or value that isn't valid. *

                                                *
                                              • *
                                              • *

                                                * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                *
                                              • *
                                              • *

                                                * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                *
                                              • *
                                              • *

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

                                                *
                                              • *
                                              • WafInvalidOperationException The operation isn't valid.
                                              • *
                                              • 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.
                                              • *
                                              • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                              • *
                                              * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                              * Retrieves the specified managed rule set. *

                                              * *

                                              * This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web * Services Marketplace sellers. *

                                              *

                                              * Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group * offerings for your customers. The APIs are ListManagedRuleSets, GetManagedRuleSet, * PutManagedRuleSetVersions, and UpdateManagedRuleSetVersionExpiryDate. *

                                              *
                                              * * @param getManagedRuleSetRequest * @return A Java Future containing the result of the GetManagedRuleSet operation returned by the service.
                                              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                *
                                              • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                              • *
                                              • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                *
                                                  *
                                                • *

                                                  * You specified a parameter name or value that isn't valid. *

                                                  *
                                                • *
                                                • *

                                                  * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                  *
                                                • *
                                                • *

                                                  * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                  *
                                                • *
                                                • *

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

                                                  *
                                                • *
                                                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                • *
                                                • WafInvalidOperationException The operation isn't valid.
                                                • *
                                                • 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.
                                                • *
                                                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                • *
                                                * @sample Wafv2AsyncClient.GetManagedRuleSet * @see AWS API * Documentation */ @Override public CompletableFuture getManagedRuleSet(GetManagedRuleSetRequest getManagedRuleSetRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getManagedRuleSetRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getManagedRuleSetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetManagedRuleSet"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetManagedRuleSetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetManagedRuleSet").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetManagedRuleSetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getManagedRuleSetRequest)); 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); } } /** *

                                                * Retrieves information for the specified mobile SDK release, including release notes and tags. *

                                                *

                                                * The mobile SDK is not generally available. Customers who have access to the mobile SDK can use it to establish * and manage WAF tokens for use in HTTP(S) requests from a mobile device to WAF. For more information, see WAF client * application integration in the WAF Developer Guide. *

                                                * * @param getMobileSdkReleaseRequest * @return A Java Future containing the result of the GetMobileSdkRelease operation returned by the service.
                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                  *
                                                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                • *
                                                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                • *
                                                • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                  *
                                                    *
                                                  • *

                                                    * You specified a parameter name or value that isn't valid. *

                                                    *
                                                  • *
                                                  • *

                                                    * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                    *
                                                  • *
                                                  • *

                                                    * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                    *
                                                  • *
                                                  • *

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

                                                    *
                                                  • *
                                                  • WafInvalidOperationException The operation isn't valid.
                                                  • *
                                                  • 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.
                                                  • *
                                                  • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                  • *
                                                  * @sample Wafv2AsyncClient.GetMobileSdkRelease * @see AWS API * Documentation */ @Override public CompletableFuture getMobileSdkRelease( GetMobileSdkReleaseRequest getMobileSdkReleaseRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getMobileSdkReleaseRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getMobileSdkReleaseRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetMobileSdkRelease"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetMobileSdkReleaseResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetMobileSdkRelease").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetMobileSdkReleaseRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getMobileSdkReleaseRequest)); 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); } } /** *

                                                  * Returns the IAM policy that is attached to the specified rule group. *

                                                  *

                                                  * You must be the owner of the rule group to perform this operation. *

                                                  * * @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. *
                                                    *
                                                  • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                  • *
                                                  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                  • *
                                                  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                    *
                                                      *
                                                    • *

                                                      * You specified a parameter name or value that isn't valid. *

                                                      *
                                                    • *
                                                    • *

                                                      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                      *
                                                    • *
                                                    • *

                                                      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                      *
                                                    • *
                                                    • *

                                                      * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't * 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.
                                                    • *
                                                    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                    • *
                                                    * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                    * Retrieves the IP addresses that are currently blocked by a rate-based rule instance. This is only available for * rate-based rules that aggregate solely on the IP address or on the forwarded IP address. *

                                                    *

                                                    * The maximum number of addresses that can be blocked for a single rate-based rule instance is 10,000. If more than * 10,000 addresses exceed the rate limit, those with the highest rates are blocked. *

                                                    *

                                                    * For a rate-based rule that you've defined inside a rule group, provide the name of the rule group reference * statement in your request, in addition to the rate-based rule name and the web ACL name. *

                                                    *

                                                    * WAF monitors web requests and manages keys independently for each unique combination of web ACL, optional rule * group, and rate-based rule. For example, if you define a rate-based rule inside a rule group, and then use the * rule group in a web ACL, WAF monitors web requests and manages keys for that web ACL, rule group reference * statement, and rate-based rule instance. If you use the same rule group in a second web ACL, WAF monitors web * requests and manages keys for this second usage completely independent of your first. *

                                                    * * @param getRateBasedStatementManagedKeysRequest * @return A Java Future containing the result of the GetRateBasedStatementManagedKeys operation returned by the * service.
                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                      *
                                                    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                    • *
                                                    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                      *
                                                        *
                                                      • *

                                                        * You specified a parameter name or value that isn't valid. *

                                                        *
                                                      • *
                                                      • *

                                                        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                        *
                                                      • *
                                                      • *

                                                        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                        *
                                                      • *
                                                      • *

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

                                                        *
                                                      • *
                                                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                      • *
                                                      • WafInvalidOperationException The operation isn't valid.
                                                      • *
                                                      • WafUnsupportedAggregateKeyTypeException The rule that you've named doesn't aggregate solely on the IP * address or solely on the forwarded IP address. This call is only available for rate-based rules with an * AggregateKeyType setting of IP or FORWARDED_IP.
                                                      • *
                                                      • 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.
                                                      • *
                                                      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                      • *
                                                      * @sample Wafv2AsyncClient.GetRateBasedStatementManagedKeys * @see AWS API Documentation */ @Override public CompletableFuture getRateBasedStatementManagedKeys( GetRateBasedStatementManagedKeysRequest getRateBasedStatementManagedKeysRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRateBasedStatementManagedKeysRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRateBasedStatementManagedKeysRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRateBasedStatementManagedKeys"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetRateBasedStatementManagedKeysResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRateBasedStatementManagedKeys").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRateBasedStatementManagedKeysRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRateBasedStatementManagedKeysRequest)); 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); } } /** *

                                                      * Retrieves the specified RegexPatternSet. *

                                                      * * @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. *
                                                        *
                                                      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                      • *
                                                      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                        *
                                                          *
                                                        • *

                                                          * You specified a parameter name or value that isn't valid. *

                                                          *
                                                        • *
                                                        • *

                                                          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                          *
                                                        • *
                                                        • *

                                                          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                          *
                                                        • *
                                                        • *

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

                                                          *
                                                        • *
                                                        • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                        • *
                                                        • WafInvalidOperationException The operation isn't valid.
                                                        • *
                                                        • 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.
                                                        • *
                                                        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                        • *
                                                        * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                        * Retrieves the specified RuleGroup. *

                                                        * * @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. *
                                                          *
                                                        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                        • *
                                                        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                          *
                                                            *
                                                          • *

                                                            * You specified a parameter name or value that isn't valid. *

                                                            *
                                                          • *
                                                          • *

                                                            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                            *
                                                          • *
                                                          • *

                                                            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                            *
                                                          • *
                                                          • *

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

                                                            *
                                                          • *
                                                          • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                          • *
                                                          • WafInvalidOperationException The operation isn't valid.
                                                          • *
                                                          • 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.
                                                          • *
                                                          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                          • *
                                                          * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                          * Gets detailed information about a specified number of requests--a sample--that WAF randomly selects from among * the first 5,000 requests that your Amazon Web Services 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 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. *
                                                            *
                                                          • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                          • *
                                                          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                          • *
                                                          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                            *
                                                              *
                                                            • *

                                                              * You specified a parameter name or value that isn't valid. *

                                                              *
                                                            • *
                                                            • *

                                                              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                              *
                                                            • *
                                                            • *

                                                              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                              *
                                                            • *
                                                            • *

                                                              * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't * 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.
                                                            • *
                                                            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                            • *
                                                            * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                            * Retrieves the specified WebACL. *

                                                            * * @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. *
                                                              *
                                                            • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                            • *
                                                            • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                              *
                                                                *
                                                              • *

                                                                * You specified a parameter name or value that isn't valid. *

                                                                *
                                                              • *
                                                              • *

                                                                * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                *
                                                              • *
                                                              • *

                                                                * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                *
                                                              • *
                                                              • *

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

                                                                *
                                                              • *
                                                              • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                              • *
                                                              • WafInvalidOperationException The operation isn't valid.
                                                              • *
                                                              • 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.
                                                              • *
                                                              • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                              • *
                                                              * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                              * Retrieves the WebACL for the specified resource. *

                                                              *

                                                              * This call uses GetWebACL, to verify that your account has permission to access the retrieved web * ACL. If you get an error that indicates that your account isn't authorized to perform * wafv2:GetWebACL on the resource, that error won't be included in your CloudTrail event history. *

                                                              *

                                                              * For Amazon CloudFront, don't use this call. Instead, call the CloudFront action * GetDistributionConfig. For information, see GetDistributionConfig in the Amazon CloudFront API Reference. *

                                                              *

                                                              * Required permissions for customer-managed IAM policies *

                                                              *

                                                              * This call requires permissions that are specific to the protected resource type. For details, see Permissions for GetWebACLForResource in the WAF Developer Guide. *

                                                              * * @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. *
                                                                *
                                                              • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                              • *
                                                              • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                              • *
                                                              • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                *
                                                                  *
                                                                • *

                                                                  * You specified a parameter name or value that isn't valid. *

                                                                  *
                                                                • *
                                                                • *

                                                                  * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                  *
                                                                • *
                                                                • *

                                                                  * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                  *
                                                                • *
                                                                • *

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

                                                                  *
                                                                • *
                                                                • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
                                                                • *
                                                                • WafInvalidOperationException The operation isn't valid.
                                                                • *
                                                                • 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.
                                                                • *
                                                                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                • *
                                                                * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                * Retrieves a list of the API keys that you've defined for the specified scope. *

                                                                *

                                                                * API keys are required for the integration of the CAPTCHA API in your JavaScript client applications. The API lets * you customize the placement and characteristics of the CAPTCHA puzzle for your end users. For more information * about the CAPTCHA JavaScript integration, see WAF client * application integration in the WAF Developer Guide. *

                                                                * * @param listApiKeysRequest * @return A Java Future containing the result of the ListAPIKeys operation returned by the service.
                                                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                  *
                                                                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                • *
                                                                • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                  *
                                                                    *
                                                                  • *

                                                                    * You specified a parameter name or value that isn't valid. *

                                                                    *
                                                                  • *
                                                                  • *

                                                                    * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                    *
                                                                  • *
                                                                  • *

                                                                    * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                    *
                                                                  • *
                                                                  • *

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

                                                                    *
                                                                  • *
                                                                  • WafInvalidOperationException The operation isn't valid.
                                                                  • *
                                                                  • WafInvalidResourceException WAF couldn’t perform the operation because the resource that you * requested isn’t valid. Check the resource, and try again.
                                                                  • *
                                                                  • 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.
                                                                  • *
                                                                  • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                  • *
                                                                  * @sample Wafv2AsyncClient.ListAPIKeys * @see AWS API * Documentation */ @Override public CompletableFuture listAPIKeys(ListApiKeysRequest listApiKeysRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listApiKeysRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listApiKeysRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAPIKeys"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListApiKeysResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListAPIKeys").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListApiKeysRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listApiKeysRequest)); 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); } } /** *

                                                                  * Returns a list of the available versions for the specified managed rule group. *

                                                                  * * @param listAvailableManagedRuleGroupVersionsRequest * @return A Java Future containing the result of the ListAvailableManagedRuleGroupVersions operation returned by * the service.
                                                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                    *
                                                                  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                  • *
                                                                  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                    *
                                                                      *
                                                                    • *

                                                                      * You specified a parameter name or value that isn't valid. *

                                                                      *
                                                                    • *
                                                                    • *

                                                                      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                      *
                                                                    • *
                                                                    • *

                                                                      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                      *
                                                                    • *
                                                                    • *

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

                                                                      *
                                                                    • *
                                                                    • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                    • *
                                                                    • WafInvalidOperationException The operation isn't valid.
                                                                    • *
                                                                    • 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.
                                                                    • *
                                                                    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                    • *
                                                                    * @sample Wafv2AsyncClient.ListAvailableManagedRuleGroupVersions * @see AWS API Documentation */ @Override public CompletableFuture listAvailableManagedRuleGroupVersions( ListAvailableManagedRuleGroupVersionsRequest listAvailableManagedRuleGroupVersionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listAvailableManagedRuleGroupVersionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listAvailableManagedRuleGroupVersionsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAvailableManagedRuleGroupVersions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, ListAvailableManagedRuleGroupVersionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListAvailableManagedRuleGroupVersions").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListAvailableManagedRuleGroupVersionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listAvailableManagedRuleGroupVersionsRequest)); 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); } } /** *

                                                                    * Retrieves an array of managed rule groups that are available for you to use. This list includes all Amazon Web * Services Managed Rules rule groups and all of the Amazon Web Services Marketplace managed rule groups that you're * subscribed to. *

                                                                    * * @param listAvailableManagedRuleGroupsRequest * @return A Java Future containing the result of the ListAvailableManagedRuleGroups operation returned by the * service.
                                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                      *
                                                                    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                    • *
                                                                    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                      *
                                                                        *
                                                                      • *

                                                                        * You specified a parameter name or value that isn't valid. *

                                                                        *
                                                                      • *
                                                                      • *

                                                                        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                        *
                                                                      • *
                                                                      • *

                                                                        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                        *
                                                                      • *
                                                                      • *

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

                                                                        *
                                                                      • *
                                                                      • WafInvalidOperationException The operation isn't valid.
                                                                      • *
                                                                      • 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.
                                                                      • *
                                                                      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                      • *
                                                                      * @sample Wafv2AsyncClient.ListAvailableManagedRuleGroups * @see AWS API Documentation */ @Override public CompletableFuture listAvailableManagedRuleGroups( ListAvailableManagedRuleGroupsRequest listAvailableManagedRuleGroupsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listAvailableManagedRuleGroupsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listAvailableManagedRuleGroupsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAvailableManagedRuleGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListAvailableManagedRuleGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListAvailableManagedRuleGroups").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListAvailableManagedRuleGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listAvailableManagedRuleGroupsRequest)); 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); } } /** *

                                                                      * Retrieves an array of IPSetSummary objects for the IP sets that you manage. *

                                                                      * * @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. *
                                                                        *
                                                                      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                      • *
                                                                      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                        *
                                                                          *
                                                                        • *

                                                                          * You specified a parameter name or value that isn't valid. *

                                                                          *
                                                                        • *
                                                                        • *

                                                                          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                          *
                                                                        • *
                                                                        • *

                                                                          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                          *
                                                                        • *
                                                                        • *

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

                                                                          *
                                                                        • *
                                                                        • WafInvalidOperationException The operation isn't valid.
                                                                        • *
                                                                        • 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.
                                                                        • *
                                                                        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                        • *
                                                                        * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                        * Retrieves an array of your 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. *
                                                                          *
                                                                        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                        • *
                                                                        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                          *
                                                                            *
                                                                          • *

                                                                            * You specified a parameter name or value that isn't valid. *

                                                                            *
                                                                          • *
                                                                          • *

                                                                            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                            *
                                                                          • *
                                                                          • *

                                                                            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                            *
                                                                          • *
                                                                          • *

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

                                                                            *
                                                                          • *
                                                                          • WafInvalidOperationException The operation isn't valid.
                                                                          • *
                                                                          • 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.
                                                                          • *
                                                                          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                          • *
                                                                          * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                          * Retrieves the managed rule sets that you own. *

                                                                          * *

                                                                          * This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web * Services Marketplace sellers. *

                                                                          *

                                                                          * Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group * offerings for your customers. The APIs are ListManagedRuleSets, GetManagedRuleSet, * PutManagedRuleSetVersions, and UpdateManagedRuleSetVersionExpiryDate. *

                                                                          *
                                                                          * * @param listManagedRuleSetsRequest * @return A Java Future containing the result of the ListManagedRuleSets operation returned by the service.
                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                            *
                                                                          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                          • *
                                                                          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                            *
                                                                              *
                                                                            • *

                                                                              * You specified a parameter name or value that isn't valid. *

                                                                              *
                                                                            • *
                                                                            • *

                                                                              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                              *
                                                                            • *
                                                                            • *

                                                                              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                              *
                                                                            • *
                                                                            • *

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

                                                                              *
                                                                            • *
                                                                            • WafInvalidOperationException The operation isn't valid.
                                                                            • *
                                                                            • 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.
                                                                            • *
                                                                            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                            • *
                                                                            * @sample Wafv2AsyncClient.ListManagedRuleSets * @see AWS API * Documentation */ @Override public CompletableFuture listManagedRuleSets( ListManagedRuleSetsRequest listManagedRuleSetsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listManagedRuleSetsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listManagedRuleSetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListManagedRuleSets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListManagedRuleSetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListManagedRuleSets").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListManagedRuleSetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listManagedRuleSetsRequest)); 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); } } /** *

                                                                            * Retrieves a list of the available releases for the mobile SDK and the specified device platform. *

                                                                            *

                                                                            * The mobile SDK is not generally available. Customers who have access to the mobile SDK can use it to establish * and manage WAF tokens for use in HTTP(S) requests from a mobile device to WAF. For more information, see WAF client * application integration in the WAF Developer Guide. *

                                                                            * * @param listMobileSdkReleasesRequest * @return A Java Future containing the result of the ListMobileSdkReleases operation returned by the service.
                                                                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                              *
                                                                            • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                            • *
                                                                            • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                              *
                                                                                *
                                                                              • *

                                                                                * You specified a parameter name or value that isn't valid. *

                                                                                *
                                                                              • *
                                                                              • *

                                                                                * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                *
                                                                              • *
                                                                              • *

                                                                                * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                *
                                                                              • *
                                                                              • *

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

                                                                                *
                                                                              • *
                                                                              • WafInvalidOperationException The operation isn't valid.
                                                                              • *
                                                                              • 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.
                                                                              • *
                                                                              • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                              • *
                                                                              * @sample Wafv2AsyncClient.ListMobileSdkReleases * @see AWS * API Documentation */ @Override public CompletableFuture listMobileSdkReleases( ListMobileSdkReleasesRequest listMobileSdkReleasesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listMobileSdkReleasesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listMobileSdkReleasesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListMobileSdkReleases"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListMobileSdkReleasesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListMobileSdkReleases").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListMobileSdkReleasesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listMobileSdkReleasesRequest)); 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); } } /** *

                                                                              * Retrieves an array of RegexPatternSetSummary objects for the regex pattern sets that you manage. *

                                                                              * * @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. *
                                                                                *
                                                                              • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                              • *
                                                                              • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                *
                                                                                  *
                                                                                • *

                                                                                  * You specified a parameter name or value that isn't valid. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                  *
                                                                                • *
                                                                                • *

                                                                                  * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                  *
                                                                                • *
                                                                                • *

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

                                                                                  *
                                                                                • *
                                                                                • WafInvalidOperationException The operation isn't valid.
                                                                                • *
                                                                                • 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.
                                                                                • *
                                                                                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                • *
                                                                                * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                * Retrieves an array of the Amazon Resource Names (ARNs) for the regional resources that are associated with the * specified web ACL. *

                                                                                *

                                                                                * For Amazon CloudFront, don't use this call. Instead, use the CloudFront call * ListDistributionsByWebACLId. For information, see ListDistributionsByWebACLId in the Amazon CloudFront API Reference. *

                                                                                *

                                                                                * Required permissions for customer-managed IAM policies *

                                                                                *

                                                                                * This call requires permissions that are specific to the protected resource type. For details, see Permissions for ListResourcesForWebACL in the WAF Developer Guide. *

                                                                                * * @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. *
                                                                                  *
                                                                                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                • *
                                                                                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                • *
                                                                                • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                  *
                                                                                    *
                                                                                  • *

                                                                                    * You specified a parameter name or value that isn't valid. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                    *
                                                                                  • *
                                                                                  • *

                                                                                    * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                    *
                                                                                  • *
                                                                                  • *

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

                                                                                    *
                                                                                  • *
                                                                                  • WafInvalidOperationException The operation isn't valid.
                                                                                  • *
                                                                                  • 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.
                                                                                  • *
                                                                                  • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                  • *
                                                                                  * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                  * Retrieves an array of RuleGroupSummary objects for the rule groups that you manage. *

                                                                                  * * @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. *
                                                                                    *
                                                                                  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                  • *
                                                                                  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                    *
                                                                                      *
                                                                                    • *

                                                                                      * You specified a parameter name or value that isn't valid. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                      *
                                                                                    • *
                                                                                    • *

                                                                                      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                      *
                                                                                    • *
                                                                                    • *

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

                                                                                      *
                                                                                    • *
                                                                                    • WafInvalidOperationException The operation isn't valid.
                                                                                    • *
                                                                                    • 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.
                                                                                    • *
                                                                                    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                    • *
                                                                                    * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                    * Retrieves the TagInfoForResource for the specified 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 Amazon Web * Services resource, up to 50 tags for a resource. *

                                                                                    *

                                                                                    * You can tag the Amazon Web Services resources that you manage through WAF: web ACLs, rule groups, IP sets, and * regex pattern sets. You can't manage or view tags through the WAF console. *

                                                                                    * * @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. *
                                                                                      *
                                                                                    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                    • *
                                                                                    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                      *
                                                                                        *
                                                                                      • *

                                                                                        * You specified a parameter name or value that isn't valid. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                        *
                                                                                      • *
                                                                                      • *

                                                                                        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                        *
                                                                                      • *
                                                                                      • *

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

                                                                                        *
                                                                                      • *
                                                                                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                      • *
                                                                                      • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                                                                                      • *
                                                                                      • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                                                                                      • *
                                                                                      • WafInvalidOperationException The operation isn't valid.
                                                                                      • *
                                                                                      • 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.
                                                                                      • *
                                                                                      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                      • *
                                                                                      * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                      * Retrieves an array of WebACLSummary objects for the web ACLs that you manage. *

                                                                                      * * @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. *
                                                                                        *
                                                                                      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                      • *
                                                                                      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                        *
                                                                                          *
                                                                                        • *

                                                                                          * You specified a parameter name or value that isn't valid. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                          *
                                                                                        • *
                                                                                        • *

                                                                                          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                          *
                                                                                        • *
                                                                                        • *

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

                                                                                          *
                                                                                        • *
                                                                                        • WafInvalidOperationException The operation isn't valid.
                                                                                        • *
                                                                                        • 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.
                                                                                        • *
                                                                                        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                        • *
                                                                                        * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                        * Enables the specified LoggingConfiguration, to start logging from a web ACL, according to the * configuration provided. *

                                                                                        * *

                                                                                        * This operation completely replaces any mutable specifications that you already have for a logging configuration * with the ones that you provide to this call. *

                                                                                        *

                                                                                        * To modify an existing logging configuration, do the following: *

                                                                                        *
                                                                                          *
                                                                                        1. *

                                                                                          * Retrieve it by calling GetLoggingConfiguration *

                                                                                          *
                                                                                        2. *
                                                                                        3. *

                                                                                          * Update its settings as needed *

                                                                                          *
                                                                                        4. *
                                                                                        5. *

                                                                                          * Provide the complete logging configuration specification to this call *

                                                                                          *
                                                                                        6. *
                                                                                        *
                                                                                        *

                                                                                        * You can define one logging destination per web ACL. *

                                                                                        *
                                                                                        *

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

                                                                                        *
                                                                                          *
                                                                                        1. *

                                                                                          * Create your logging destination. You can use an Amazon CloudWatch Logs log group, an Amazon Simple Storage * Service (Amazon S3) bucket, or an Amazon Kinesis Data Firehose. *

                                                                                          *

                                                                                          * The name that you give the destination must start with aws-waf-logs-. Depending on the type of * destination, you might need to configure additional settings or permissions. *

                                                                                          *

                                                                                          * For configuration requirements and pricing information for each destination type, see Logging web ACL traffic in the * WAF Developer Guide. *

                                                                                          *
                                                                                        2. *
                                                                                        3. *

                                                                                          * Associate your logging destination to your web ACL using a PutLoggingConfiguration request. *

                                                                                          *
                                                                                        4. *
                                                                                        *

                                                                                        * When you successfully enable logging using a PutLoggingConfiguration request, WAF creates an * additional role or policy that is required to write logs to the logging destination. For an Amazon CloudWatch * Logs log group, WAF creates a resource policy on the log group. For an Amazon S3 bucket, WAF creates a bucket * policy. For an Amazon Kinesis Data Firehose, WAF creates a service-linked role. *

                                                                                        *

                                                                                        * For additional information about web ACL logging, see Logging web ACL traffic information * in the 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. *
                                                                                          *
                                                                                        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                        • *
                                                                                        • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                        • *
                                                                                        • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                        • *
                                                                                        • WafServiceLinkedRoleErrorException 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 call to 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.
                                                                                        • *
                                                                                        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                          *
                                                                                            *
                                                                                          • *

                                                                                            * You specified a parameter name or value that isn't valid. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                            *
                                                                                          • *
                                                                                          • *

                                                                                            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                            *
                                                                                          • *
                                                                                          • *

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

                                                                                            *
                                                                                          • *
                                                                                          • WafInvalidOperationException The operation isn't valid.
                                                                                          • *
                                                                                          • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                                                                                          • *
                                                                                          • WafLogDestinationPermissionIssueException The operation failed because you don't have the permissions * that your logging configuration requires. For information, see Logging web ACL traffic * information in the 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.
                                                                                          • *
                                                                                          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                          • *
                                                                                          * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                          * Defines the versions of your managed rule set that you are offering to the customers. Customers see your * offerings as managed rule groups with versioning. *

                                                                                          * *

                                                                                          * This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web * Services Marketplace sellers. *

                                                                                          *

                                                                                          * Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group * offerings for your customers. The APIs are ListManagedRuleSets, GetManagedRuleSet, * PutManagedRuleSetVersions, and UpdateManagedRuleSetVersionExpiryDate. *

                                                                                          *
                                                                                          *

                                                                                          * Customers retrieve their managed rule group list by calling ListAvailableManagedRuleGroups. The name that * you provide here for your managed rule set is the name the customer sees for the corresponding managed rule * group. Customers can retrieve the available versions for a managed rule group by calling * ListAvailableManagedRuleGroupVersions. You provide a rule group specification for each version. For each * managed rule set, you must specify a version that you recommend using. *

                                                                                          *

                                                                                          * To initiate the expiration of a managed rule group version, use UpdateManagedRuleSetVersionExpiryDate. *

                                                                                          * * @param putManagedRuleSetVersionsRequest * @return A Java Future containing the result of the PutManagedRuleSetVersions operation returned by the service.
                                                                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                                            *
                                                                                          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                          • *
                                                                                          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                            *
                                                                                              *
                                                                                            • *

                                                                                              * You specified a parameter name or value that isn't valid. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                              *
                                                                                            • *
                                                                                            • *

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

                                                                                              *
                                                                                            • *
                                                                                            • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                            • *
                                                                                            • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                            • *
                                                                                            • WafInvalidOperationException The operation isn't valid.
                                                                                            • *
                                                                                            • 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.
                                                                                            • *
                                                                                            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                            • *
                                                                                            * @sample Wafv2AsyncClient.PutManagedRuleSetVersions * @see AWS API Documentation */ @Override public CompletableFuture putManagedRuleSetVersions( PutManagedRuleSetVersionsRequest putManagedRuleSetVersionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putManagedRuleSetVersionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putManagedRuleSetVersionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutManagedRuleSetVersions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutManagedRuleSetVersionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutManagedRuleSetVersions").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutManagedRuleSetVersionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putManagedRuleSetVersionsRequest)); 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); } } /** *

                                                                                            * Attaches an IAM policy to the specified resource. Use this to share a rule group across accounts. *

                                                                                            *

                                                                                            * You must be the owner of the rule group to perform this operation. *

                                                                                            *

                                                                                            * This action is subject to the following restrictions: *

                                                                                            *
                                                                                              *
                                                                                            • *

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

                                                                                              *
                                                                                            • *
                                                                                            • *

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

                                                                                              *
                                                                                            • *
                                                                                            • *

                                                                                              * The user making the request must be the owner of the rule group. *

                                                                                              *
                                                                                            • *
                                                                                            * * @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. *
                                                                                              *
                                                                                            • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                            • *
                                                                                            • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                            • *
                                                                                            • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                              *
                                                                                                *
                                                                                              • *

                                                                                                * You specified a parameter name or value that isn't valid. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                *
                                                                                              • *
                                                                                              • *

                                                                                                * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                *
                                                                                              • *
                                                                                              • *

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

                                                                                                *
                                                                                              • *
                                                                                              • WafInvalidPermissionPolicyException The operation failed because the specified policy isn't in the * proper format.

                                                                                                *

                                                                                                * The policy specifications must conform to the following: *

                                                                                                *
                                                                                                  *
                                                                                                • *

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

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * The policy must include specifications for Effect, Action, and * Principal. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * Effect must specify Allow. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * Action must specify wafv2:CreateWebACL, wafv2:UpdateWebACL, and * wafv2:PutFirewallManagerRuleGroups and may optionally specify * wafv2:GetRuleGroup. WAF rejects any extra actions or wildcard actions in the policy. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * The policy must not include a Resource parameter. *

                                                                                                  *
                                                                                                • *
                                                                                                *

                                                                                                * For more information, see IAM Policies.

                                                                                              • *
                                                                                              • 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.
                                                                                              • *
                                                                                              • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                              • *
                                                                                              * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                              * Associates tags with the specified Amazon Web Services 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 Amazon Web * Services resource, up to 50 tags for a resource. *

                                                                                              *

                                                                                              * You can tag the Amazon Web Services resources that you manage through WAF: web ACLs, rule groups, IP sets, and * regex pattern sets. You can't manage or view tags through the WAF console. *

                                                                                              * * @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. *
                                                                                                *
                                                                                              • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                              • *
                                                                                              • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                *
                                                                                                  *
                                                                                                • *

                                                                                                  * You specified a parameter name or value that isn't valid. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

                                                                                                  * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                  *
                                                                                                • *
                                                                                                • *

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

                                                                                                  *
                                                                                                • *
                                                                                                • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                                                                                                • *
                                                                                                • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                • *
                                                                                                • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                                                                                                • *
                                                                                                • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                                                                                                • *
                                                                                                • WafInvalidOperationException The operation isn't valid.
                                                                                                • *
                                                                                                • 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.
                                                                                                • *
                                                                                                • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                • *
                                                                                                * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                                * Disassociates tags from an Amazon Web Services resource. Tags are key:value pairs that you can associate with * Amazon Web Services resources. For example, the tag key might be "customer" and the tag value might be * "companyA." You can specify one or more tags to add to each container. You can add up to 50 tags to each Amazon * Web Services resource. *

                                                                                                * * @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. *
                                                                                                  *
                                                                                                • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                                • *
                                                                                                • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                  *
                                                                                                    *
                                                                                                  • *

                                                                                                    * You specified a parameter name or value that isn't valid. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

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

                                                                                                    *
                                                                                                  • *
                                                                                                  • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                  • *
                                                                                                  • WafTagOperationException An error occurred during the tagging operation. Retry your request.
                                                                                                  • *
                                                                                                  • WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an * internal error. Retry your request.
                                                                                                  • *
                                                                                                  • WafInvalidOperationException The operation isn't valid.
                                                                                                  • *
                                                                                                  • 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.
                                                                                                  • *
                                                                                                  • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                  • *
                                                                                                  * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                                  * Updates the specified IPSet. *

                                                                                                  * *

                                                                                                  * This operation completely replaces the mutable specifications that you already have for the IP set with the ones * that you provide to this call. *

                                                                                                  *

                                                                                                  * To modify an IP set, do the following: *

                                                                                                  *
                                                                                                    *
                                                                                                  1. *

                                                                                                    * Retrieve it by calling GetIPSet *

                                                                                                    *
                                                                                                  2. *
                                                                                                  3. *

                                                                                                    * Update its settings as needed *

                                                                                                    *
                                                                                                  4. *
                                                                                                  5. *

                                                                                                    * Provide the complete IP set specification to this call *

                                                                                                    *
                                                                                                  6. *
                                                                                                  *
                                                                                                  *

                                                                                                  * Temporary inconsistencies during updates *

                                                                                                  *

                                                                                                  * When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate * to all areas where the resources are stored. The propagation time can be from a few seconds to a number of * minutes. *

                                                                                                  *

                                                                                                  * The following are examples of the temporary inconsistencies that you might notice during change propagation: *

                                                                                                  *
                                                                                                    *
                                                                                                  • *

                                                                                                    * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating * that the web ACL is unavailable. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web * ACL is used and not in another. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * After you change a rule action setting, you might see the old action in some places and the new action in others. *

                                                                                                    *
                                                                                                  • *
                                                                                                  • *

                                                                                                    * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in * one area while still allowed in another. *

                                                                                                    *
                                                                                                  • *
                                                                                                  * * @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. *
                                                                                                    *
                                                                                                  • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                                  • *
                                                                                                  • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                    *
                                                                                                      *
                                                                                                    • *

                                                                                                      * You specified a parameter name or value that isn't valid. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

                                                                                                      * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

                                                                                                      * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                      *
                                                                                                    • *
                                                                                                    • *

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

                                                                                                      *
                                                                                                    • *
                                                                                                    • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                    • *
                                                                                                    • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
                                                                                                    • *
                                                                                                    • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                                    • *
                                                                                                    • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                                                                                                    • *
                                                                                                    • WafInvalidOperationException The operation isn't valid.
                                                                                                    • *
                                                                                                    • 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.
                                                                                                    • *
                                                                                                    • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                    • *
                                                                                                    * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                                    * Updates the expiration information for your managed rule set. Use this to initiate the expiration of a managed * rule group version. After you initiate expiration for a version, WAF excludes it from the response to * ListAvailableManagedRuleGroupVersions for the managed rule group. *

                                                                                                    * *

                                                                                                    * This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web * Services Marketplace sellers. *

                                                                                                    *

                                                                                                    * Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group * offerings for your customers. The APIs are ListManagedRuleSets, GetManagedRuleSet, * PutManagedRuleSetVersions, and UpdateManagedRuleSetVersionExpiryDate. *

                                                                                                    *
                                                                                                    * * @param updateManagedRuleSetVersionExpiryDateRequest * @return A Java Future containing the result of the UpdateManagedRuleSetVersionExpiryDate operation returned by * the service.
                                                                                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
                                                                                                      *
                                                                                                    • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                                    • *
                                                                                                    • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                      *
                                                                                                        *
                                                                                                      • *

                                                                                                        * You specified a parameter name or value that isn't valid. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

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

                                                                                                        *
                                                                                                      • *
                                                                                                      • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                      • *
                                                                                                      • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                                      • *
                                                                                                      • WafInvalidOperationException The operation isn't valid.
                                                                                                      • *
                                                                                                      • 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.
                                                                                                      • *
                                                                                                      • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                      • *
                                                                                                      * @sample Wafv2AsyncClient.UpdateManagedRuleSetVersionExpiryDate * @see AWS API Documentation */ @Override public CompletableFuture updateManagedRuleSetVersionExpiryDate( UpdateManagedRuleSetVersionExpiryDateRequest updateManagedRuleSetVersionExpiryDateRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateManagedRuleSetVersionExpiryDateRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateManagedRuleSetVersionExpiryDateRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateManagedRuleSetVersionExpiryDate"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, UpdateManagedRuleSetVersionExpiryDateResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateManagedRuleSetVersionExpiryDate").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateManagedRuleSetVersionExpiryDateRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateManagedRuleSetVersionExpiryDateRequest)); 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); } } /** *

                                                                                                      * Updates the specified RegexPatternSet. *

                                                                                                      * *

                                                                                                      * This operation completely replaces the mutable specifications that you already have for the regex pattern set * with the ones that you provide to this call. *

                                                                                                      *

                                                                                                      * To modify a regex pattern set, do the following: *

                                                                                                      *
                                                                                                        *
                                                                                                      1. *

                                                                                                        * Retrieve it by calling GetRegexPatternSet *

                                                                                                        *
                                                                                                      2. *
                                                                                                      3. *

                                                                                                        * Update its settings as needed *

                                                                                                        *
                                                                                                      4. *
                                                                                                      5. *

                                                                                                        * Provide the complete regex pattern set specification to this call *

                                                                                                        *
                                                                                                      6. *
                                                                                                      *
                                                                                                      *

                                                                                                      * Temporary inconsistencies during updates *

                                                                                                      *

                                                                                                      * When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate * to all areas where the resources are stored. The propagation time can be from a few seconds to a number of * minutes. *

                                                                                                      *

                                                                                                      * The following are examples of the temporary inconsistencies that you might notice during change propagation: *

                                                                                                      *
                                                                                                        *
                                                                                                      • *

                                                                                                        * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating * that the web ACL is unavailable. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web * ACL is used and not in another. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * After you change a rule action setting, you might see the old action in some places and the new action in others. *

                                                                                                        *
                                                                                                      • *
                                                                                                      • *

                                                                                                        * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in * one area while still allowed in another. *

                                                                                                        *
                                                                                                      • *
                                                                                                      * * @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. *
                                                                                                        *
                                                                                                      • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                                      • *
                                                                                                      • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                        *
                                                                                                          *
                                                                                                        • *

                                                                                                          * You specified a parameter name or value that isn't valid. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

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

                                                                                                          *
                                                                                                        • *
                                                                                                        • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                        • *
                                                                                                        • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
                                                                                                        • *
                                                                                                        • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                                        • *
                                                                                                        • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                                                                                                        • *
                                                                                                        • WafInvalidOperationException The operation isn't valid.
                                                                                                        • *
                                                                                                        • 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.
                                                                                                        • *
                                                                                                        • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                        • *
                                                                                                        * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                                        * Updates the specified RuleGroup. *

                                                                                                        * *

                                                                                                        * This operation completely replaces the mutable specifications that you already have for the rule group with the * ones that you provide to this call. *

                                                                                                        *

                                                                                                        * To modify a rule group, do the following: *

                                                                                                        *
                                                                                                          *
                                                                                                        1. *

                                                                                                          * Retrieve it by calling GetRuleGroup *

                                                                                                          *
                                                                                                        2. *
                                                                                                        3. *

                                                                                                          * Update its settings as needed *

                                                                                                          *
                                                                                                        4. *
                                                                                                        5. *

                                                                                                          * Provide the complete rule group specification to this call *

                                                                                                          *
                                                                                                        6. *
                                                                                                        *
                                                                                                        *

                                                                                                        * A rule group defines a collection of rules to inspect and control web requests that you can use in a * WebACL. When you create a rule group, you define an immutable capacity limit. If you update a rule group, * you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity * requirements. *

                                                                                                        *

                                                                                                        * Temporary inconsistencies during updates *

                                                                                                        *

                                                                                                        * When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate * to all areas where the resources are stored. The propagation time can be from a few seconds to a number of * minutes. *

                                                                                                        *

                                                                                                        * The following are examples of the temporary inconsistencies that you might notice during change propagation: *

                                                                                                        *
                                                                                                          *
                                                                                                        • *

                                                                                                          * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating * that the web ACL is unavailable. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web * ACL is used and not in another. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * After you change a rule action setting, you might see the old action in some places and the new action in others. *

                                                                                                          *
                                                                                                        • *
                                                                                                        • *

                                                                                                          * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in * one area while still allowed in another. *

                                                                                                          *
                                                                                                        • *
                                                                                                        * * @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. *
                                                                                                          *
                                                                                                        • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                                        • *
                                                                                                        • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                          *
                                                                                                            *
                                                                                                          • *

                                                                                                            * You specified a parameter name or value that isn't valid. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

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

                                                                                                            *
                                                                                                          • *
                                                                                                          • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                          • *
                                                                                                          • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
                                                                                                          • *
                                                                                                          • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                                          • *
                                                                                                          • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                                                                                                          • *
                                                                                                          • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
                                                                                                          • *
                                                                                                          • WafSubscriptionNotFoundException You tried to use a managed rule group that's available by * subscription, but you aren't subscribed to it yet.
                                                                                                          • *
                                                                                                          • WafInvalidOperationException The operation isn't valid.
                                                                                                          • *
                                                                                                          • WafConfigurationWarningException The operation failed because you are inspecting the web request * body, headers, or cookies without specifying how to handle oversize components. Rules that inspect the * body must either provide an OversizeHandling configuration or they must be preceded by a * SizeConstraintStatement that blocks the body content from being too large. Rules that * inspect the headers or cookies must provide an OversizeHandling configuration.

                                                                                                            *

                                                                                                            * Provide the handling configuration and retry your operation. *

                                                                                                            *

                                                                                                            * Alternately, you can suppress this warning by adding the following tag to the resource that you provide * to this operation: Tag (key:WAF:OversizeFieldsHandlingConstraintOptOut, value: * true).

                                                                                                          • *
                                                                                                          • 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.
                                                                                                          • *
                                                                                                          • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                          • *
                                                                                                          * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } /** *

                                                                                                          * Updates the specified WebACL. While updating a web ACL, WAF provides continuous coverage to the resources * that you have associated with the web ACL. *

                                                                                                          * *

                                                                                                          * This operation completely replaces the mutable specifications that you already have for the web ACL with the ones * that you provide to this call. *

                                                                                                          *

                                                                                                          * To modify a web ACL, do the following: *

                                                                                                          *
                                                                                                            *
                                                                                                          1. *

                                                                                                            * Retrieve it by calling GetWebACL *

                                                                                                            *
                                                                                                          2. *
                                                                                                          3. *

                                                                                                            * Update its settings as needed *

                                                                                                            *
                                                                                                          4. *
                                                                                                          5. *

                                                                                                            * Provide the complete web ACL specification to this call *

                                                                                                            *
                                                                                                          6. *
                                                                                                          *
                                                                                                          *

                                                                                                          * A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement * that defines what to look for in web requests and an action that WAF applies to requests that match the * statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match * any of the rules. The rules in a web ACL can be a combination of the types Rule, RuleGroup, and * managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The * resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, * an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified * Access instance. *

                                                                                                          *

                                                                                                          * Temporary inconsistencies during updates *

                                                                                                          *

                                                                                                          * When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate * to all areas where the resources are stored. The propagation time can be from a few seconds to a number of * minutes. *

                                                                                                          *

                                                                                                          * The following are examples of the temporary inconsistencies that you might notice during change propagation: *

                                                                                                          *
                                                                                                            *
                                                                                                          • *

                                                                                                            * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating * that the web ACL is unavailable. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web * ACL is used and not in another. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * After you change a rule action setting, you might see the old action in some places and the new action in others. *

                                                                                                            *
                                                                                                          • *
                                                                                                          • *

                                                                                                            * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in * one area while still allowed in another. *

                                                                                                            *
                                                                                                          • *
                                                                                                          * * @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. *
                                                                                                            *
                                                                                                          • WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a * system problem. Retry your request.
                                                                                                          • *
                                                                                                          • WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the * request. For example:

                                                                                                            *
                                                                                                              *
                                                                                                            • *

                                                                                                              * You specified a parameter name or value that isn't valid. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

                                                                                                              * You tried to update a WebACL with a DefaultAction that isn't among the types * available at DefaultAction. *

                                                                                                              *
                                                                                                            • *
                                                                                                            • *

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

                                                                                                              *
                                                                                                            • *
                                                                                                            • WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate.
                                                                                                            • *
                                                                                                            • WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to * save is a duplicate of an existing one.
                                                                                                            • *
                                                                                                            • WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a * resource that has changed since you last retrieved it. Get the resource again, make any changes you need * to make to the new copy, and retry your operation.
                                                                                                            • *
                                                                                                            • WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource * limit. For example, the maximum number of WebACL objects that you can create for an Amazon * Web Services account. For more information, see WAF quotas in the WAF * Developer Guide.
                                                                                                            • *
                                                                                                            • WafInvalidResourceException WAF couldn’t perform the operation because the resource that you * requested isn’t valid. Check the resource, and try again.
                                                                                                            • *
                                                                                                            • WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation. * If you've just created a resource that you're using in this operation, you might just need to wait a few * minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the * resources that you are specifying in your request parameters and then retry the operation.
                                                                                                            • *
                                                                                                            • WafSubscriptionNotFoundException You tried to use a managed rule group that's available by * subscription, but you aren't subscribed to it yet.
                                                                                                            • *
                                                                                                            • WafInvalidOperationException The operation isn't valid.
                                                                                                            • *
                                                                                                            • WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the * managed rule group has expired. You can retrieve the available versions for the managed rule group by * calling ListAvailableManagedRuleGroupVersions.
                                                                                                            • *
                                                                                                            • WafConfigurationWarningException The operation failed because you are inspecting the web request * body, headers, or cookies without specifying how to handle oversize components. Rules that inspect the * body must either provide an OversizeHandling configuration or they must be preceded by a * SizeConstraintStatement that blocks the body content from being too large. Rules that * inspect the headers or cookies must provide an OversizeHandling configuration.

                                                                                                              *

                                                                                                              * Provide the handling configuration and retry your operation. *

                                                                                                              *

                                                                                                              * Alternately, you can suppress this warning by adding the following tag to the resource that you provide * to this operation: Tag (key:WAF:OversizeFieldsHandlingConstraintOptOut, value: * true).

                                                                                                            • *
                                                                                                            • 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.
                                                                                                            • *
                                                                                                            • Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                                                                                            • *
                                                                                                            * @sample Wafv2AsyncClient.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, "WAFV2"); 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); } } @Override public final Wafv2ServiceClientConfiguration serviceClientConfiguration() { return new Wafv2ServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()).build(); } @Override public final String serviceName() { return SERVICE_NAME; } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(Wafv2Exception::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("WAFOptimisticLockException") .exceptionBuilderSupplier(WafOptimisticLockException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFSubscriptionNotFoundException") .exceptionBuilderSupplier(WafSubscriptionNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFConfigurationWarningException") .exceptionBuilderSupplier(WafConfigurationWarningException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFAssociatedItemException") .exceptionBuilderSupplier(WafAssociatedItemException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFLimitsExceededException") .exceptionBuilderSupplier(WafLimitsExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidParameterException") .exceptionBuilderSupplier(WafInvalidParameterException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFDuplicateItemException") .exceptionBuilderSupplier(WafDuplicateItemException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFNonexistentItemException") .exceptionBuilderSupplier(WafNonexistentItemException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFUnsupportedAggregateKeyTypeException") .exceptionBuilderSupplier(WafUnsupportedAggregateKeyTypeException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidPermissionPolicyException") .exceptionBuilderSupplier(WafInvalidPermissionPolicyException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFLogDestinationPermissionIssueException") .exceptionBuilderSupplier(WafLogDestinationPermissionIssueException::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()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFExpiredManagedRuleGroupVersionException") .exceptionBuilderSupplier(WafExpiredManagedRuleGroupVersionException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WAFInvalidResourceException") .exceptionBuilderSupplier(WafInvalidResourceException::builder).httpStatusCode(400).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 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(); } Wafv2ServiceClientConfigurationBuilder serviceConfigBuilder = new Wafv2ServiceClientConfigurationBuilder(configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } 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