com.amazonaws.services.ec2.AmazonEC2AsyncClient Maven / Gradle / Ivy
Show all versions of aws-java-sdk-osgi Show documentation
/*
 * Copyright 2010-2016 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.ec2;
import com.amazonaws.services.ec2.model.*;
import com.amazonaws.annotation.ThreadSafe;
/**
 * Interface for accessing Amazon EC2 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.
 * 
 * Amazon Elastic Compute Cloud 
 * 
 * Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing
 * capacity in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates
 * your need to invest in hardware up front, so you can develop and deploy
 * applications faster.
 * 
 */
@ThreadSafe
public class AmazonEC2AsyncClient extends AmazonEC2Client implements
        AmazonEC2Async {
    private static final int DEFAULT_THREAD_POOL_SIZE = 50;
    private final java.util.concurrent.ExecutorService executorService;
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2. A credentials provider chain will be used that searches for
     * credentials in this order:
     * 
     * - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
 
     * - Java System Properties - aws.accessKeyId and aws.secretKey
 
     * - Credential profiles file at the default location (~/.aws/credentials)
     * shared by all AWS SDKs and the AWS CLI
 
     * - Instance profile credentials delivered through the Amazon EC2
     * metadata service
 
     * 
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * 50 threads (to match the default maximum number of concurrent connections
     * to the service).
     *
     * @see com.amazonaws.auth.DefaultAWSCredentialsProviderChain
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonEC2AsyncClient() {
        this(new com.amazonaws.auth.DefaultAWSCredentialsProviderChain());
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2. A credentials provider chain will be used that searches for
     * credentials in this order:
     * 
     * - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
 
     * - Java System Properties - aws.accessKeyId and aws.secretKey
 
     * - Credential profiles file at the default location (~/.aws/credentials)
     * shared by all AWS SDKs and the AWS CLI
 
     * - Instance profile credentials delivered through the Amazon EC2
     * metadata service
 
     * 
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * a number of threads equal to the maximum number of concurrent connections
     * configured via {@code ClientConfiguration.getMaxConnections()}.
     *
     * @param clientConfiguration
     *        The client configuration options controlling how this client
     *        connects to Amazon EC2 (ex: proxy settings, retry counts, etc).
     *
     * @see com.amazonaws.auth.DefaultAWSCredentialsProviderChain
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.ClientConfiguration clientConfiguration) {
        this(new com.amazonaws.auth.DefaultAWSCredentialsProviderChain(),
                clientConfiguration, java.util.concurrent.Executors
                        .newFixedThreadPool(clientConfiguration
                                .getMaxConnections()));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the specified AWS account credentials.
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * 50 threads (to match the default maximum number of concurrent connections
     * to the service).
     *
     * @param awsCredentials
     *        The AWS credentials (access key ID and secret key) to use when
     *        authenticating with AWS services.
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonEC2AsyncClient(com.amazonaws.auth.AWSCredentials awsCredentials) {
        this(awsCredentials, java.util.concurrent.Executors
                .newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the specified AWS account credentials and executor service.
     * Default client settings will be used.
     *
     * @param awsCredentials
     *        The AWS credentials (access key ID and secret key) to use when
     *        authenticating with AWS services.
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.auth.AWSCredentials awsCredentials,
            java.util.concurrent.ExecutorService executorService) {
        this(awsCredentials, configFactory.getConfig(), executorService);
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the specified AWS account credentials, executor service, and
     * client configuration options.
     *
     * @param awsCredentials
     *        The AWS credentials (access key ID and secret key) to use when
     *        authenticating with AWS services.
     * @param clientConfiguration
     *        Client configuration options (ex: max retry limit, proxy settings,
     *        etc).
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.auth.AWSCredentials awsCredentials,
            com.amazonaws.ClientConfiguration clientConfiguration,
            java.util.concurrent.ExecutorService executorService) {
        super(awsCredentials, clientConfiguration);
        this.executorService = executorService;
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the specified AWS account credentials provider. Default client
     * settings will be used.
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * 50 threads (to match the default maximum number of concurrent connections
     * to the service).
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider) {
        this(awsCredentialsProvider, java.util.concurrent.Executors
                .newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the provided AWS account credentials provider and client
     * configuration options.
     * 
     * Asynchronous methods are delegated to a fixed-size thread pool containing
     * a number of threads equal to the maximum number of concurrent connections
     * configured via {@code ClientConfiguration.getMaxConnections()}.
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @param clientConfiguration
     *        Client configuration options (ex: max retry limit, proxy settings,
     *        etc).
     *
     * @see com.amazonaws.auth.DefaultAWSCredentialsProviderChain
     * @see java.util.concurrent.Executors#newFixedThreadPool(int)
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider,
            com.amazonaws.ClientConfiguration clientConfiguration) {
        this(awsCredentialsProvider, clientConfiguration,
                java.util.concurrent.Executors
                        .newFixedThreadPool(clientConfiguration
                                .getMaxConnections()));
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the specified AWS account credentials provider and executor
     * service. Default client settings will be used.
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider,
            java.util.concurrent.ExecutorService executorService) {
        this(awsCredentialsProvider, configFactory.getConfig(), executorService);
    }
    /**
     * Constructs a new asynchronous client to invoke service methods on Amazon
     * EC2 using the specified AWS account credentials provider, executor
     * service, and client configuration options.
     *
     * @param awsCredentialsProvider
     *        The AWS credentials provider which will provide credentials to
     *        authenticate requests with AWS services.
     * @param clientConfiguration
     *        Client configuration options (ex: max retry limit, proxy settings,
     *        etc).
     * @param executorService
     *        The executor service by which all asynchronous requests will be
     *        executed.
     */
    public AmazonEC2AsyncClient(
            com.amazonaws.auth.AWSCredentialsProvider awsCredentialsProvider,
            com.amazonaws.ClientConfiguration clientConfiguration,
            java.util.concurrent.ExecutorService executorService) {
        super(awsCredentialsProvider, clientConfiguration);
        this.executorService = executorService;
    }
    /**
     * 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 java.util.concurrent.ExecutorService getExecutorService() {
        return executorService;
    }
    @Override
    public java.util.concurrent.Future acceptVpcPeeringConnectionAsync(
            AcceptVpcPeeringConnectionRequest request) {
        return acceptVpcPeeringConnectionAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future acceptVpcPeeringConnectionAsync(
            final AcceptVpcPeeringConnectionRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AcceptVpcPeeringConnectionResult call()
                            throws Exception {
                        AcceptVpcPeeringConnectionResult result;
                        try {
                            result = acceptVpcPeeringConnection(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the AcceptVpcPeeringConnection
     * operation.
     *
     * @see #acceptVpcPeeringConnectionAsync(AcceptVpcPeeringConnectionRequest)
     */
    @Override
    public java.util.concurrent.Future acceptVpcPeeringConnectionAsync() {
        return acceptVpcPeeringConnectionAsync(new AcceptVpcPeeringConnectionRequest());
    }
    /**
     * Simplified method form for invoking the AcceptVpcPeeringConnection
     * operation with an AsyncHandler.
     *
     * @see #acceptVpcPeeringConnectionAsync(AcceptVpcPeeringConnectionRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future acceptVpcPeeringConnectionAsync(
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return acceptVpcPeeringConnectionAsync(
                new AcceptVpcPeeringConnectionRequest(), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future allocateAddressAsync(
            AllocateAddressRequest request) {
        return allocateAddressAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future allocateAddressAsync(
            final AllocateAddressRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AllocateAddressResult call() throws Exception {
                        AllocateAddressResult result;
                        try {
                            result = allocateAddress(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the AllocateAddress operation.
     *
     * @see #allocateAddressAsync(AllocateAddressRequest)
     */
    @Override
    public java.util.concurrent.Future allocateAddressAsync() {
        return allocateAddressAsync(new AllocateAddressRequest());
    }
    /**
     * Simplified method form for invoking the AllocateAddress operation with an
     * AsyncHandler.
     *
     * @see #allocateAddressAsync(AllocateAddressRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future allocateAddressAsync(
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return allocateAddressAsync(new AllocateAddressRequest(), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future allocateHostsAsync(
            AllocateHostsRequest request) {
        return allocateHostsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future allocateHostsAsync(
            final AllocateHostsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AllocateHostsResult call() throws Exception {
                        AllocateHostsResult result;
                        try {
                            result = allocateHosts(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future assignPrivateIpAddressesAsync(
            AssignPrivateIpAddressesRequest request) {
        return assignPrivateIpAddressesAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future assignPrivateIpAddressesAsync(
            final AssignPrivateIpAddressesRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AssignPrivateIpAddressesResult call()
                            throws Exception {
                        AssignPrivateIpAddressesResult result;
                        try {
                            result = assignPrivateIpAddresses(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future associateAddressAsync(
            AssociateAddressRequest request) {
        return associateAddressAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future associateAddressAsync(
            final AssociateAddressRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AssociateAddressResult call() throws Exception {
                        AssociateAddressResult result;
                        try {
                            result = associateAddress(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future associateDhcpOptionsAsync(
            AssociateDhcpOptionsRequest request) {
        return associateDhcpOptionsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future associateDhcpOptionsAsync(
            final AssociateDhcpOptionsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AssociateDhcpOptionsResult call() throws Exception {
                        AssociateDhcpOptionsResult result;
                        try {
                            result = associateDhcpOptions(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future associateRouteTableAsync(
            AssociateRouteTableRequest request) {
        return associateRouteTableAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future associateRouteTableAsync(
            final AssociateRouteTableRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AssociateRouteTableResult call() throws Exception {
                        AssociateRouteTableResult result;
                        try {
                            result = associateRouteTable(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future attachClassicLinkVpcAsync(
            AttachClassicLinkVpcRequest request) {
        return attachClassicLinkVpcAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future attachClassicLinkVpcAsync(
            final AttachClassicLinkVpcRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AttachClassicLinkVpcResult call() throws Exception {
                        AttachClassicLinkVpcResult result;
                        try {
                            result = attachClassicLinkVpc(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future attachInternetGatewayAsync(
            AttachInternetGatewayRequest request) {
        return attachInternetGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future attachInternetGatewayAsync(
            final AttachInternetGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AttachInternetGatewayResult call() throws Exception {
                        AttachInternetGatewayResult result;
                        try {
                            result = attachInternetGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future attachNetworkInterfaceAsync(
            AttachNetworkInterfaceRequest request) {
        return attachNetworkInterfaceAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future attachNetworkInterfaceAsync(
            final AttachNetworkInterfaceRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AttachNetworkInterfaceResult call() throws Exception {
                        AttachNetworkInterfaceResult result;
                        try {
                            result = attachNetworkInterface(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future attachVolumeAsync(
            AttachVolumeRequest request) {
        return attachVolumeAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future attachVolumeAsync(
            final AttachVolumeRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AttachVolumeResult call() throws Exception {
                        AttachVolumeResult result;
                        try {
                            result = attachVolume(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future attachVpnGatewayAsync(
            AttachVpnGatewayRequest request) {
        return attachVpnGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future attachVpnGatewayAsync(
            final AttachVpnGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AttachVpnGatewayResult call() throws Exception {
                        AttachVpnGatewayResult result;
                        try {
                            result = attachVpnGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future authorizeSecurityGroupEgressAsync(
            AuthorizeSecurityGroupEgressRequest request) {
        return authorizeSecurityGroupEgressAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future authorizeSecurityGroupEgressAsync(
            final AuthorizeSecurityGroupEgressRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AuthorizeSecurityGroupEgressResult call()
                            throws Exception {
                        AuthorizeSecurityGroupEgressResult result;
                        try {
                            result = authorizeSecurityGroupEgress(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future authorizeSecurityGroupIngressAsync(
            AuthorizeSecurityGroupIngressRequest request) {
        return authorizeSecurityGroupIngressAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future authorizeSecurityGroupIngressAsync(
            final AuthorizeSecurityGroupIngressRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public AuthorizeSecurityGroupIngressResult call()
                            throws Exception {
                        AuthorizeSecurityGroupIngressResult result;
                        try {
                            result = authorizeSecurityGroupIngress(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future bundleInstanceAsync(
            BundleInstanceRequest request) {
        return bundleInstanceAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future bundleInstanceAsync(
            final BundleInstanceRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public BundleInstanceResult call() throws Exception {
                        BundleInstanceResult result;
                        try {
                            result = bundleInstance(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future cancelBundleTaskAsync(
            CancelBundleTaskRequest request) {
        return cancelBundleTaskAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelBundleTaskAsync(
            final CancelBundleTaskRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelBundleTaskResult call() throws Exception {
                        CancelBundleTaskResult result;
                        try {
                            result = cancelBundleTask(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future cancelConversionTaskAsync(
            CancelConversionTaskRequest request) {
        return cancelConversionTaskAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelConversionTaskAsync(
            final CancelConversionTaskRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelConversionTaskResult call() throws Exception {
                        CancelConversionTaskResult result;
                        try {
                            result = cancelConversionTask(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future cancelExportTaskAsync(
            CancelExportTaskRequest request) {
        return cancelExportTaskAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelExportTaskAsync(
            final CancelExportTaskRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelExportTaskResult call() throws Exception {
                        CancelExportTaskResult result;
                        try {
                            result = cancelExportTask(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future cancelImportTaskAsync(
            CancelImportTaskRequest request) {
        return cancelImportTaskAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelImportTaskAsync(
            final CancelImportTaskRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelImportTaskResult call() throws Exception {
                        CancelImportTaskResult result;
                        try {
                            result = cancelImportTask(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the CancelImportTask operation.
     *
     * @see #cancelImportTaskAsync(CancelImportTaskRequest)
     */
    @Override
    public java.util.concurrent.Future cancelImportTaskAsync() {
        return cancelImportTaskAsync(new CancelImportTaskRequest());
    }
    /**
     * Simplified method form for invoking the CancelImportTask operation with
     * an AsyncHandler.
     *
     * @see #cancelImportTaskAsync(CancelImportTaskRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future cancelImportTaskAsync(
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return cancelImportTaskAsync(new CancelImportTaskRequest(),
                asyncHandler);
    }
    @Override
    public java.util.concurrent.Future cancelReservedInstancesListingAsync(
            CancelReservedInstancesListingRequest request) {
        return cancelReservedInstancesListingAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelReservedInstancesListingAsync(
            final CancelReservedInstancesListingRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelReservedInstancesListingResult call()
                            throws Exception {
                        CancelReservedInstancesListingResult result;
                        try {
                            result = cancelReservedInstancesListing(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future cancelSpotFleetRequestsAsync(
            CancelSpotFleetRequestsRequest request) {
        return cancelSpotFleetRequestsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelSpotFleetRequestsAsync(
            final CancelSpotFleetRequestsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelSpotFleetRequestsResult call()
                            throws Exception {
                        CancelSpotFleetRequestsResult result;
                        try {
                            result = cancelSpotFleetRequests(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future cancelSpotInstanceRequestsAsync(
            CancelSpotInstanceRequestsRequest request) {
        return cancelSpotInstanceRequestsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future cancelSpotInstanceRequestsAsync(
            final CancelSpotInstanceRequestsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CancelSpotInstanceRequestsResult call()
                            throws Exception {
                        CancelSpotInstanceRequestsResult result;
                        try {
                            result = cancelSpotInstanceRequests(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future confirmProductInstanceAsync(
            ConfirmProductInstanceRequest request) {
        return confirmProductInstanceAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future confirmProductInstanceAsync(
            final ConfirmProductInstanceRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public ConfirmProductInstanceResult call() throws Exception {
                        ConfirmProductInstanceResult result;
                        try {
                            result = confirmProductInstance(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future copyImageAsync(
            CopyImageRequest request) {
        return copyImageAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future copyImageAsync(
            final CopyImageRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CopyImageResult call() throws Exception {
                        CopyImageResult result;
                        try {
                            result = copyImage(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future copySnapshotAsync(
            CopySnapshotRequest request) {
        return copySnapshotAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future copySnapshotAsync(
            final CopySnapshotRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CopySnapshotResult call() throws Exception {
                        CopySnapshotResult result;
                        try {
                            result = copySnapshot(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createCustomerGatewayAsync(
            CreateCustomerGatewayRequest request) {
        return createCustomerGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createCustomerGatewayAsync(
            final CreateCustomerGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateCustomerGatewayResult call() throws Exception {
                        CreateCustomerGatewayResult result;
                        try {
                            result = createCustomerGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createDhcpOptionsAsync(
            CreateDhcpOptionsRequest request) {
        return createDhcpOptionsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createDhcpOptionsAsync(
            final CreateDhcpOptionsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateDhcpOptionsResult call() throws Exception {
                        CreateDhcpOptionsResult result;
                        try {
                            result = createDhcpOptions(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createFlowLogsAsync(
            CreateFlowLogsRequest request) {
        return createFlowLogsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createFlowLogsAsync(
            final CreateFlowLogsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateFlowLogsResult call() throws Exception {
                        CreateFlowLogsResult result;
                        try {
                            result = createFlowLogs(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createImageAsync(
            CreateImageRequest request) {
        return createImageAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createImageAsync(
            final CreateImageRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateImageResult call() throws Exception {
                        CreateImageResult result;
                        try {
                            result = createImage(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createInstanceExportTaskAsync(
            CreateInstanceExportTaskRequest request) {
        return createInstanceExportTaskAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createInstanceExportTaskAsync(
            final CreateInstanceExportTaskRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateInstanceExportTaskResult call()
                            throws Exception {
                        CreateInstanceExportTaskResult result;
                        try {
                            result = createInstanceExportTask(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createInternetGatewayAsync(
            CreateInternetGatewayRequest request) {
        return createInternetGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createInternetGatewayAsync(
            final CreateInternetGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateInternetGatewayResult call() throws Exception {
                        CreateInternetGatewayResult result;
                        try {
                            result = createInternetGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the CreateInternetGateway operation.
     *
     * @see #createInternetGatewayAsync(CreateInternetGatewayRequest)
     */
    @Override
    public java.util.concurrent.Future createInternetGatewayAsync() {
        return createInternetGatewayAsync(new CreateInternetGatewayRequest());
    }
    /**
     * Simplified method form for invoking the CreateInternetGateway operation
     * with an AsyncHandler.
     *
     * @see #createInternetGatewayAsync(CreateInternetGatewayRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future createInternetGatewayAsync(
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return createInternetGatewayAsync(new CreateInternetGatewayRequest(),
                asyncHandler);
    }
    @Override
    public java.util.concurrent.Future createKeyPairAsync(
            CreateKeyPairRequest request) {
        return createKeyPairAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createKeyPairAsync(
            final CreateKeyPairRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateKeyPairResult call() throws Exception {
                        CreateKeyPairResult result;
                        try {
                            result = createKeyPair(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createNatGatewayAsync(
            CreateNatGatewayRequest request) {
        return createNatGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createNatGatewayAsync(
            final CreateNatGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateNatGatewayResult call() throws Exception {
                        CreateNatGatewayResult result;
                        try {
                            result = createNatGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createNetworkAclAsync(
            CreateNetworkAclRequest request) {
        return createNetworkAclAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createNetworkAclAsync(
            final CreateNetworkAclRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateNetworkAclResult call() throws Exception {
                        CreateNetworkAclResult result;
                        try {
                            result = createNetworkAcl(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createNetworkAclEntryAsync(
            CreateNetworkAclEntryRequest request) {
        return createNetworkAclEntryAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createNetworkAclEntryAsync(
            final CreateNetworkAclEntryRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateNetworkAclEntryResult call() throws Exception {
                        CreateNetworkAclEntryResult result;
                        try {
                            result = createNetworkAclEntry(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createNetworkInterfaceAsync(
            CreateNetworkInterfaceRequest request) {
        return createNetworkInterfaceAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createNetworkInterfaceAsync(
            final CreateNetworkInterfaceRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateNetworkInterfaceResult call() throws Exception {
                        CreateNetworkInterfaceResult result;
                        try {
                            result = createNetworkInterface(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createPlacementGroupAsync(
            CreatePlacementGroupRequest request) {
        return createPlacementGroupAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createPlacementGroupAsync(
            final CreatePlacementGroupRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreatePlacementGroupResult call() throws Exception {
                        CreatePlacementGroupResult result;
                        try {
                            result = createPlacementGroup(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createReservedInstancesListingAsync(
            CreateReservedInstancesListingRequest request) {
        return createReservedInstancesListingAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createReservedInstancesListingAsync(
            final CreateReservedInstancesListingRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateReservedInstancesListingResult call()
                            throws Exception {
                        CreateReservedInstancesListingResult result;
                        try {
                            result = createReservedInstancesListing(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createRouteAsync(
            CreateRouteRequest request) {
        return createRouteAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createRouteAsync(
            final CreateRouteRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateRouteResult call() throws Exception {
                        CreateRouteResult result;
                        try {
                            result = createRoute(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createRouteTableAsync(
            CreateRouteTableRequest request) {
        return createRouteTableAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createRouteTableAsync(
            final CreateRouteTableRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateRouteTableResult call() throws Exception {
                        CreateRouteTableResult result;
                        try {
                            result = createRouteTable(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createSecurityGroupAsync(
            CreateSecurityGroupRequest request) {
        return createSecurityGroupAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createSecurityGroupAsync(
            final CreateSecurityGroupRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateSecurityGroupResult call() throws Exception {
                        CreateSecurityGroupResult result;
                        try {
                            result = createSecurityGroup(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createSnapshotAsync(
            CreateSnapshotRequest request) {
        return createSnapshotAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createSnapshotAsync(
            final CreateSnapshotRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateSnapshotResult call() throws Exception {
                        CreateSnapshotResult result;
                        try {
                            result = createSnapshot(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createSpotDatafeedSubscriptionAsync(
            CreateSpotDatafeedSubscriptionRequest request) {
        return createSpotDatafeedSubscriptionAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createSpotDatafeedSubscriptionAsync(
            final CreateSpotDatafeedSubscriptionRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateSpotDatafeedSubscriptionResult call()
                            throws Exception {
                        CreateSpotDatafeedSubscriptionResult result;
                        try {
                            result = createSpotDatafeedSubscription(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createSubnetAsync(
            CreateSubnetRequest request) {
        return createSubnetAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createSubnetAsync(
            final CreateSubnetRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateSubnetResult call() throws Exception {
                        CreateSubnetResult result;
                        try {
                            result = createSubnet(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createTagsAsync(
            CreateTagsRequest request) {
        return createTagsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createTagsAsync(
            final CreateTagsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateTagsResult call() throws Exception {
                        CreateTagsResult result;
                        try {
                            result = createTags(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createVolumeAsync(
            CreateVolumeRequest request) {
        return createVolumeAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVolumeAsync(
            final CreateVolumeRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVolumeResult call() throws Exception {
                        CreateVolumeResult result;
                        try {
                            result = createVolume(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createVpcAsync(
            CreateVpcRequest request) {
        return createVpcAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVpcAsync(
            final CreateVpcRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVpcResult call() throws Exception {
                        CreateVpcResult result;
                        try {
                            result = createVpc(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createVpcEndpointAsync(
            CreateVpcEndpointRequest request) {
        return createVpcEndpointAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVpcEndpointAsync(
            final CreateVpcEndpointRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVpcEndpointResult call() throws Exception {
                        CreateVpcEndpointResult result;
                        try {
                            result = createVpcEndpoint(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createVpcPeeringConnectionAsync(
            CreateVpcPeeringConnectionRequest request) {
        return createVpcPeeringConnectionAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVpcPeeringConnectionAsync(
            final CreateVpcPeeringConnectionRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVpcPeeringConnectionResult call()
                            throws Exception {
                        CreateVpcPeeringConnectionResult result;
                        try {
                            result = createVpcPeeringConnection(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    /**
     * Simplified method form for invoking the CreateVpcPeeringConnection
     * operation.
     *
     * @see #createVpcPeeringConnectionAsync(CreateVpcPeeringConnectionRequest)
     */
    @Override
    public java.util.concurrent.Future createVpcPeeringConnectionAsync() {
        return createVpcPeeringConnectionAsync(new CreateVpcPeeringConnectionRequest());
    }
    /**
     * Simplified method form for invoking the CreateVpcPeeringConnection
     * operation with an AsyncHandler.
     *
     * @see #createVpcPeeringConnectionAsync(CreateVpcPeeringConnectionRequest,
     *      com.amazonaws.handlers.AsyncHandler)
     */
    public java.util.concurrent.Future createVpcPeeringConnectionAsync(
            com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return createVpcPeeringConnectionAsync(
                new CreateVpcPeeringConnectionRequest(), asyncHandler);
    }
    @Override
    public java.util.concurrent.Future createVpnConnectionAsync(
            CreateVpnConnectionRequest request) {
        return createVpnConnectionAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVpnConnectionAsync(
            final CreateVpnConnectionRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVpnConnectionResult call() throws Exception {
                        CreateVpnConnectionResult result;
                        try {
                            result = createVpnConnection(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createVpnConnectionRouteAsync(
            CreateVpnConnectionRouteRequest request) {
        return createVpnConnectionRouteAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVpnConnectionRouteAsync(
            final CreateVpnConnectionRouteRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVpnConnectionRouteResult call()
                            throws Exception {
                        CreateVpnConnectionRouteResult result;
                        try {
                            result = createVpnConnectionRoute(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future createVpnGatewayAsync(
            CreateVpnGatewayRequest request) {
        return createVpnGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future createVpnGatewayAsync(
            final CreateVpnGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public CreateVpnGatewayResult call() throws Exception {
                        CreateVpnGatewayResult result;
                        try {
                            result = createVpnGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteCustomerGatewayAsync(
            DeleteCustomerGatewayRequest request) {
        return deleteCustomerGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteCustomerGatewayAsync(
            final DeleteCustomerGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteCustomerGatewayResult call() throws Exception {
                        DeleteCustomerGatewayResult result;
                        try {
                            result = deleteCustomerGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteDhcpOptionsAsync(
            DeleteDhcpOptionsRequest request) {
        return deleteDhcpOptionsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteDhcpOptionsAsync(
            final DeleteDhcpOptionsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteDhcpOptionsResult call() throws Exception {
                        DeleteDhcpOptionsResult result;
                        try {
                            result = deleteDhcpOptions(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteFlowLogsAsync(
            DeleteFlowLogsRequest request) {
        return deleteFlowLogsAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteFlowLogsAsync(
            final DeleteFlowLogsRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteFlowLogsResult call() throws Exception {
                        DeleteFlowLogsResult result;
                        try {
                            result = deleteFlowLogs(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteInternetGatewayAsync(
            DeleteInternetGatewayRequest request) {
        return deleteInternetGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteInternetGatewayAsync(
            final DeleteInternetGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteInternetGatewayResult call() throws Exception {
                        DeleteInternetGatewayResult result;
                        try {
                            result = deleteInternetGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteKeyPairAsync(
            DeleteKeyPairRequest request) {
        return deleteKeyPairAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteKeyPairAsync(
            final DeleteKeyPairRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteKeyPairResult call() throws Exception {
                        DeleteKeyPairResult result;
                        try {
                            result = deleteKeyPair(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteNatGatewayAsync(
            DeleteNatGatewayRequest request) {
        return deleteNatGatewayAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteNatGatewayAsync(
            final DeleteNatGatewayRequest request,
            final com.amazonaws.handlers.AsyncHandler asyncHandler) {
        return executorService
                .submit(new java.util.concurrent.Callable() {
                    @Override
                    public DeleteNatGatewayResult call() throws Exception {
                        DeleteNatGatewayResult result;
                        try {
                            result = deleteNatGateway(request);
                        } catch (Exception ex) {
                            if (asyncHandler != null) {
                                asyncHandler.onError(ex);
                            }
                            throw ex;
                        }
                        if (asyncHandler != null) {
                            asyncHandler.onSuccess(request, result);
                        }
                        return result;
                    }
                });
    }
    @Override
    public java.util.concurrent.Future deleteNetworkAclAsync(
            DeleteNetworkAclRequest request) {
        return deleteNetworkAclAsync(request, null);
    }
    @Override
    public java.util.concurrent.Future deleteNetworkAclAsync(
            final DeleteNetworkAclRequest request,
            final com.amazonaws.handlers.AsyncHandler