/* * Copyright 2018-2023 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 com.amazonaws.services.accessanalyzer; import javax.annotation.Generated; import com.amazonaws.services.accessanalyzer.model.*; import com.amazonaws.client.AwsAsyncClientParams; import com.amazonaws.annotation.ThreadSafe; import java.util.concurrent.ExecutorService; /** * Client for accessing Access Analyzer asynchronously. Each asynchronous method will return a Java Future object * representing the asynchronous operation; overloads which accept an {@code AsyncHandler} can be used to receive * notification when an asynchronous operation completes. *

*

* Identity and Access Management Access Analyzer helps identify potential resource-access risks by enabling you to * identify any policies that grant access to an external principal. It does this by using logic-based reasoning to * analyze resource-based policies in your Amazon Web Services environment. An external principal can be another Amazon * Web Services account, a root user, an IAM user or role, a federated user, an Amazon Web Services service, or an * anonymous user. You can also use IAM Access Analyzer to preview and validate public and cross-account access to your * resources before deploying permissions changes. This guide describes the Identity and Access Management Access * Analyzer operations that you can call programmatically. For general information about IAM Access Analyzer, see Identity and Access Management * Access Analyzer in the IAM User Guide. *

*

* To start using IAM Access Analyzer, you first need to create an analyzer. *

*/ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AWSAccessAnalyzerAsyncClient extends AWSAccessAnalyzerClient implements AWSAccessAnalyzerAsync { private static final int DEFAULT_THREAD_POOL_SIZE = 50; private final java.util.concurrent.ExecutorService executorService; public static AWSAccessAnalyzerAsyncClientBuilder asyncBuilder() { return AWSAccessAnalyzerAsyncClientBuilder.standard(); } /** * Constructs a new asynchronous client to invoke service methods on Access Analyzer using the specified parameters. * * @param asyncClientParams * Object providing client parameters. */ AWSAccessAnalyzerAsyncClient(AwsAsyncClientParams asyncClientParams) { this(asyncClientParams, false); } /** * Constructs a new asynchronous client to invoke service methods on Access Analyzer using the specified parameters. * * @param asyncClientParams * Object providing client parameters. * @param endpointDiscoveryEnabled * true will enable endpoint discovery if the service supports it. */ AWSAccessAnalyzerAsyncClient(AwsAsyncClientParams asyncClientParams, boolean endpointDiscoveryEnabled) { super(asyncClientParams, endpointDiscoveryEnabled); this.executorService = asyncClientParams.getExecutor(); } /** * Returns the executor service used by this client to execute async requests. * * @return The executor service used by this client to execute async requests. */ public ExecutorService getExecutorService() { return executorService; } @Override public java.util.concurrent.Future applyArchiveRuleAsync(ApplyArchiveRuleRequest request) { return applyArchiveRuleAsync(request, null); } @Override public java.util.concurrent.Future applyArchiveRuleAsync(final ApplyArchiveRuleRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ApplyArchiveRuleRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ApplyArchiveRuleResult call() throws Exception { ApplyArchiveRuleResult result = null; try { result = executeApplyArchiveRule(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future cancelPolicyGenerationAsync(CancelPolicyGenerationRequest request) { return cancelPolicyGenerationAsync(request, null); } @Override public java.util.concurrent.Future cancelPolicyGenerationAsync(final CancelPolicyGenerationRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final CancelPolicyGenerationRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public CancelPolicyGenerationResult call() throws Exception { CancelPolicyGenerationResult result = null; try { result = executeCancelPolicyGeneration(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future createAccessPreviewAsync(CreateAccessPreviewRequest request) { return createAccessPreviewAsync(request, null); } @Override public java.util.concurrent.Future createAccessPreviewAsync(final CreateAccessPreviewRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final CreateAccessPreviewRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public CreateAccessPreviewResult call() throws Exception { CreateAccessPreviewResult result = null; try { result = executeCreateAccessPreview(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future createAnalyzerAsync(CreateAnalyzerRequest request) { return createAnalyzerAsync(request, null); } @Override public java.util.concurrent.Future createAnalyzerAsync(final CreateAnalyzerRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final CreateAnalyzerRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public CreateAnalyzerResult call() throws Exception { CreateAnalyzerResult result = null; try { result = executeCreateAnalyzer(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future createArchiveRuleAsync(CreateArchiveRuleRequest request) { return createArchiveRuleAsync(request, null); } @Override public java.util.concurrent.Future createArchiveRuleAsync(final CreateArchiveRuleRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final CreateArchiveRuleRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public CreateArchiveRuleResult call() throws Exception { CreateArchiveRuleResult result = null; try { result = executeCreateArchiveRule(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future deleteAnalyzerAsync(DeleteAnalyzerRequest request) { return deleteAnalyzerAsync(request, null); } @Override public java.util.concurrent.Future deleteAnalyzerAsync(final DeleteAnalyzerRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final DeleteAnalyzerRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public DeleteAnalyzerResult call() throws Exception { DeleteAnalyzerResult result = null; try { result = executeDeleteAnalyzer(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future deleteArchiveRuleAsync(DeleteArchiveRuleRequest request) { return deleteArchiveRuleAsync(request, null); } @Override public java.util.concurrent.Future deleteArchiveRuleAsync(final DeleteArchiveRuleRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final DeleteArchiveRuleRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public DeleteArchiveRuleResult call() throws Exception { DeleteArchiveRuleResult result = null; try { result = executeDeleteArchiveRule(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future getAccessPreviewAsync(GetAccessPreviewRequest request) { return getAccessPreviewAsync(request, null); } @Override public java.util.concurrent.Future getAccessPreviewAsync(final GetAccessPreviewRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final GetAccessPreviewRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public GetAccessPreviewResult call() throws Exception { GetAccessPreviewResult result = null; try { result = executeGetAccessPreview(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future getAnalyzedResourceAsync(GetAnalyzedResourceRequest request) { return getAnalyzedResourceAsync(request, null); } @Override public java.util.concurrent.Future getAnalyzedResourceAsync(final GetAnalyzedResourceRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final GetAnalyzedResourceRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public GetAnalyzedResourceResult call() throws Exception { GetAnalyzedResourceResult result = null; try { result = executeGetAnalyzedResource(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future getAnalyzerAsync(GetAnalyzerRequest request) { return getAnalyzerAsync(request, null); } @Override public java.util.concurrent.Future getAnalyzerAsync(final GetAnalyzerRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final GetAnalyzerRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public GetAnalyzerResult call() throws Exception { GetAnalyzerResult result = null; try { result = executeGetAnalyzer(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future getArchiveRuleAsync(GetArchiveRuleRequest request) { return getArchiveRuleAsync(request, null); } @Override public java.util.concurrent.Future getArchiveRuleAsync(final GetArchiveRuleRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final GetArchiveRuleRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public GetArchiveRuleResult call() throws Exception { GetArchiveRuleResult result = null; try { result = executeGetArchiveRule(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future getFindingAsync(GetFindingRequest request) { return getFindingAsync(request, null); } @Override public java.util.concurrent.Future getFindingAsync(final GetFindingRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final GetFindingRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public GetFindingResult call() throws Exception { GetFindingResult result = null; try { result = executeGetFinding(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future getGeneratedPolicyAsync(GetGeneratedPolicyRequest request) { return getGeneratedPolicyAsync(request, null); } @Override public java.util.concurrent.Future getGeneratedPolicyAsync(final GetGeneratedPolicyRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final GetGeneratedPolicyRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public GetGeneratedPolicyResult call() throws Exception { GetGeneratedPolicyResult result = null; try { result = executeGetGeneratedPolicy(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listAccessPreviewFindingsAsync(ListAccessPreviewFindingsRequest request) { return listAccessPreviewFindingsAsync(request, null); } @Override public java.util.concurrent.Future listAccessPreviewFindingsAsync(final ListAccessPreviewFindingsRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListAccessPreviewFindingsRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListAccessPreviewFindingsResult call() throws Exception { ListAccessPreviewFindingsResult result = null; try { result = executeListAccessPreviewFindings(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listAccessPreviewsAsync(ListAccessPreviewsRequest request) { return listAccessPreviewsAsync(request, null); } @Override public java.util.concurrent.Future listAccessPreviewsAsync(final ListAccessPreviewsRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListAccessPreviewsRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListAccessPreviewsResult call() throws Exception { ListAccessPreviewsResult result = null; try { result = executeListAccessPreviews(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listAnalyzedResourcesAsync(ListAnalyzedResourcesRequest request) { return listAnalyzedResourcesAsync(request, null); } @Override public java.util.concurrent.Future listAnalyzedResourcesAsync(final ListAnalyzedResourcesRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListAnalyzedResourcesRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListAnalyzedResourcesResult call() throws Exception { ListAnalyzedResourcesResult result = null; try { result = executeListAnalyzedResources(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listAnalyzersAsync(ListAnalyzersRequest request) { return listAnalyzersAsync(request, null); } @Override public java.util.concurrent.Future listAnalyzersAsync(final ListAnalyzersRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListAnalyzersRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListAnalyzersResult call() throws Exception { ListAnalyzersResult result = null; try { result = executeListAnalyzers(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listArchiveRulesAsync(ListArchiveRulesRequest request) { return listArchiveRulesAsync(request, null); } @Override public java.util.concurrent.Future listArchiveRulesAsync(final ListArchiveRulesRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListArchiveRulesRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListArchiveRulesResult call() throws Exception { ListArchiveRulesResult result = null; try { result = executeListArchiveRules(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listFindingsAsync(ListFindingsRequest request) { return listFindingsAsync(request, null); } @Override public java.util.concurrent.Future listFindingsAsync(final ListFindingsRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListFindingsRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListFindingsResult call() throws Exception { ListFindingsResult result = null; try { result = executeListFindings(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listPolicyGenerationsAsync(ListPolicyGenerationsRequest request) { return listPolicyGenerationsAsync(request, null); } @Override public java.util.concurrent.Future listPolicyGenerationsAsync(final ListPolicyGenerationsRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListPolicyGenerationsRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListPolicyGenerationsResult call() throws Exception { ListPolicyGenerationsResult result = null; try { result = executeListPolicyGenerations(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future listTagsForResourceAsync(ListTagsForResourceRequest request) { return listTagsForResourceAsync(request, null); } @Override public java.util.concurrent.Future listTagsForResourceAsync(final ListTagsForResourceRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ListTagsForResourceRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ListTagsForResourceResult call() throws Exception { ListTagsForResourceResult result = null; try { result = executeListTagsForResource(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future startPolicyGenerationAsync(StartPolicyGenerationRequest request) { return startPolicyGenerationAsync(request, null); } @Override public java.util.concurrent.Future startPolicyGenerationAsync(final StartPolicyGenerationRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final StartPolicyGenerationRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public StartPolicyGenerationResult call() throws Exception { StartPolicyGenerationResult result = null; try { result = executeStartPolicyGeneration(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future startResourceScanAsync(StartResourceScanRequest request) { return startResourceScanAsync(request, null); } @Override public java.util.concurrent.Future startResourceScanAsync(final StartResourceScanRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final StartResourceScanRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public StartResourceScanResult call() throws Exception { StartResourceScanResult result = null; try { result = executeStartResourceScan(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future tagResourceAsync(TagResourceRequest request) { return tagResourceAsync(request, null); } @Override public java.util.concurrent.Future tagResourceAsync(final TagResourceRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final TagResourceRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public TagResourceResult call() throws Exception { TagResourceResult result = null; try { result = executeTagResource(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future untagResourceAsync(UntagResourceRequest request) { return untagResourceAsync(request, null); } @Override public java.util.concurrent.Future untagResourceAsync(final UntagResourceRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final UntagResourceRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public UntagResourceResult call() throws Exception { UntagResourceResult result = null; try { result = executeUntagResource(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future updateArchiveRuleAsync(UpdateArchiveRuleRequest request) { return updateArchiveRuleAsync(request, null); } @Override public java.util.concurrent.Future updateArchiveRuleAsync(final UpdateArchiveRuleRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final UpdateArchiveRuleRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public UpdateArchiveRuleResult call() throws Exception { UpdateArchiveRuleResult result = null; try { result = executeUpdateArchiveRule(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future updateFindingsAsync(UpdateFindingsRequest request) { return updateFindingsAsync(request, null); } @Override public java.util.concurrent.Future updateFindingsAsync(final UpdateFindingsRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final UpdateFindingsRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public UpdateFindingsResult call() throws Exception { UpdateFindingsResult result = null; try { result = executeUpdateFindings(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } @Override public java.util.concurrent.Future validatePolicyAsync(ValidatePolicyRequest request) { return validatePolicyAsync(request, null); } @Override public java.util.concurrent.Future validatePolicyAsync(final ValidatePolicyRequest request, final com.amazonaws.handlers.AsyncHandler asyncHandler) { final ValidatePolicyRequest finalRequest = beforeClientExecution(request); return executorService.submit(new java.util.concurrent.Callable() { @Override public ValidatePolicyResult call() throws Exception { ValidatePolicyResult result = null; try { result = executeValidatePolicy(finalRequest); } catch (Exception ex) { if (asyncHandler != null) { asyncHandler.onError(ex); } throw ex; } if (asyncHandler != null) { asyncHandler.onSuccess(finalRequest, result); } return result; } }); } /** * Shuts down the client, releasing all managed resources. This includes forcibly terminating all pending * asynchronous service calls. Clients who wish to give pending asynchronous service calls time to complete should * call {@code getExecutorService().shutdown()} followed by {@code getExecutorService().awaitTermination()} prior to * calling this method. */ @Override public void shutdown() { super.shutdown(); executorService.shutdownNow(); } }