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

com.amazonaws.services.importexport.AmazonImportExportAsyncClient Maven / Gradle / Ivy

Go to download

The Amazon Web Services SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. The AWS Java SDK allows developers to code against APIs for all of Amazon's infrastructure web services (Amazon S3, Amazon EC2, Amazon SQS, Amazon Relational Database Service, Amazon AutoScaling, etc).

The newest version!
/*
 * Copyright 2010-2014 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.importexport;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.handlers.AsyncHandler;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;

import com.amazonaws.services.importexport.model.*;

/**
 * Asynchronous client for accessing AmazonImportExport.
 * All asynchronous calls made using this client are non-blocking. Callers could either
 * process the result and handle the exceptions in the worker thread by providing a callback handler
 * when making the call, or use the returned Future object to check the result of the call in the calling thread.
 * AWS Import/Export Service 

* AWS Import/Export accelerates transferring large amounts of data * between the AWS cloud and portable storage devices that you mail to * us. AWS Import/Export transfers data directly onto and off of your * storage devices using Amazon's high-speed internal network and * bypassing the Internet. For large data sets, AWS Import/Export is * often faster than Internet transfer and more cost effective than * upgrading your connectivity. *

*/ public class AmazonImportExportAsyncClient extends AmazonImportExportClient implements AmazonImportExportAsync { /** * Executor service for executing asynchronous requests. */ private ExecutorService executorService; private static final int DEFAULT_THREAD_POOL_SIZE = 50; /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport. 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
  • *
  • Instance profile credentials delivered through the Amazon EC2 metadata service
  • *
* *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ public AmazonImportExportAsyncClient() { this(new DefaultAWSCredentialsProviderChain()); } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport. 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
  • *
  • Instance profile credentials delivered through the Amazon EC2 metadata service
  • *
* *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonImportExport * (ex: proxy settings, retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain */ public AmazonImportExportAsyncClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration, Executors.newFixedThreadPool(clientConfiguration.getMaxConnections())); } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials. * Default client settings will be used, and a fixed size thread pool will be * created for executing the asynchronous tasks. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @param awsCredentials The AWS credentials (access key ID and secret key) to use * when authenticating with AWS services. */ public AmazonImportExportAsyncClient(AWSCredentials awsCredentials) { this(awsCredentials, Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE)); } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials * and executor service. Default client settings will be used. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @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 AmazonImportExportAsyncClient(AWSCredentials awsCredentials, ExecutorService executorService) { super(awsCredentials); this.executorService = executorService; } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials, * executor service, and client configuration options. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @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 AmazonImportExportAsyncClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration, ExecutorService executorService) { super(awsCredentials, clientConfiguration); this.executorService = executorService; } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials provider. * Default client settings will be used, and a fixed size thread pool will be * created for executing the asynchronous tasks. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. */ public AmazonImportExportAsyncClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE)); } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials provider * and executor service. Default client settings will be used. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @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 AmazonImportExportAsyncClient(AWSCredentialsProvider awsCredentialsProvider, ExecutorService executorService) { this(awsCredentialsProvider, new ClientConfiguration(), executorService); } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials * provider and client configuration options. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @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). */ public AmazonImportExportAsyncClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, Executors.newFixedThreadPool(clientConfiguration.getMaxConnections())); } /** * Constructs a new asynchronous client to invoke service methods on * AmazonImportExport using the specified AWS account credentials * provider, executor service, and client configuration options. * *

* All calls made using this new client object are non-blocking, and will immediately * return a Java Future object that the caller can later check to see if the service * call has actually completed. * * @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 AmazonImportExportAsyncClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, ExecutorService executorService) { super(awsCredentialsProvider, clientConfiguration); this.executorService = executorService; } /** * Returns the executor service used by this async client to execute * requests. * * @return The executor service used by this async client to execute * requests. */ public ExecutorService getExecutorService() { return executorService; } /** * 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 getExecutorService().shutdown() followed by * getExecutorService().awaitTermination() prior to calling this method. */ @Override public void shutdown() { super.shutdown(); executorService.shutdownNow(); } /** *

* This operation initiates the process of scheduling an upload or * download of your data. You include in the request a manifest that * describes the data transfer specifics. The response to the request * includes a job ID, which you can use in other operations, a signature * that you use to identify your storage device, and the address where * you should ship your storage device. *

* * @param createJobRequest Container for the necessary parameters to * execute the CreateJob operation on AmazonImportExport. * * @return A Java Future object containing the response from the * CreateJob service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future createJobAsync(final CreateJobRequest createJobRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public CreateJobResult call() throws Exception { return createJob(createJobRequest); } }); } /** *

* This operation initiates the process of scheduling an upload or * download of your data. You include in the request a manifest that * describes the data transfer specifics. The response to the request * includes a job ID, which you can use in other operations, a signature * that you use to identify your storage device, and the address where * you should ship your storage device. *

* * @param createJobRequest Container for the necessary parameters to * execute the CreateJob operation on AmazonImportExport. * @param asyncHandler Asynchronous callback handler for events in the * life-cycle of the request. Users could provide the implementation of * the four callback methods in this interface to process the operation * result or handle the exception. * * @return A Java Future object containing the response from the * CreateJob service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future createJobAsync( final CreateJobRequest createJobRequest, final AsyncHandler asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public CreateJobResult call() throws Exception { CreateJobResult result; try { result = createJob(createJobRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(createJobRequest, result); return result; } }); } /** *

* This operation cancels a specified job. Only the job owner can cancel * it. The operation fails if the job has already started or is complete. *

* * @param cancelJobRequest Container for the necessary parameters to * execute the CancelJob operation on AmazonImportExport. * * @return A Java Future object containing the response from the * CancelJob service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future cancelJobAsync(final CancelJobRequest cancelJobRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public CancelJobResult call() throws Exception { return cancelJob(cancelJobRequest); } }); } /** *

* This operation cancels a specified job. Only the job owner can cancel * it. The operation fails if the job has already started or is complete. *

* * @param cancelJobRequest Container for the necessary parameters to * execute the CancelJob operation on AmazonImportExport. * @param asyncHandler Asynchronous callback handler for events in the * life-cycle of the request. Users could provide the implementation of * the four callback methods in this interface to process the operation * result or handle the exception. * * @return A Java Future object containing the response from the * CancelJob service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future cancelJobAsync( final CancelJobRequest cancelJobRequest, final AsyncHandler asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public CancelJobResult call() throws Exception { CancelJobResult result; try { result = cancelJob(cancelJobRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(cancelJobRequest, result); return result; } }); } /** *

* This operation returns information about a job, including where the * job is in the processing pipeline, the status of the results, and the * signature value associated with the job. You can only return * information about jobs you own. *

* * @param getStatusRequest Container for the necessary parameters to * execute the GetStatus operation on AmazonImportExport. * * @return A Java Future object containing the response from the * GetStatus service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future getStatusAsync(final GetStatusRequest getStatusRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public GetStatusResult call() throws Exception { return getStatus(getStatusRequest); } }); } /** *

* This operation returns information about a job, including where the * job is in the processing pipeline, the status of the results, and the * signature value associated with the job. You can only return * information about jobs you own. *

* * @param getStatusRequest Container for the necessary parameters to * execute the GetStatus operation on AmazonImportExport. * @param asyncHandler Asynchronous callback handler for events in the * life-cycle of the request. Users could provide the implementation of * the four callback methods in this interface to process the operation * result or handle the exception. * * @return A Java Future object containing the response from the * GetStatus service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future getStatusAsync( final GetStatusRequest getStatusRequest, final AsyncHandler asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public GetStatusResult call() throws Exception { GetStatusResult result; try { result = getStatus(getStatusRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(getStatusRequest, result); return result; } }); } /** *

* This operation returns the jobs associated with the requester. AWS * Import/Export lists the jobs in reverse chronological order based on * the date of creation. For example if Job Test1 was created 2009Dec30 * and Test2 was created 2010Feb05, the ListJobs operation would return * Test2 followed by Test1. *

* * @param listJobsRequest Container for the necessary parameters to * execute the ListJobs operation on AmazonImportExport. * * @return A Java Future object containing the response from the ListJobs * service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future listJobsAsync(final ListJobsRequest listJobsRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public ListJobsResult call() throws Exception { return listJobs(listJobsRequest); } }); } /** *

* This operation returns the jobs associated with the requester. AWS * Import/Export lists the jobs in reverse chronological order based on * the date of creation. For example if Job Test1 was created 2009Dec30 * and Test2 was created 2010Feb05, the ListJobs operation would return * Test2 followed by Test1. *

* * @param listJobsRequest Container for the necessary parameters to * execute the ListJobs operation on AmazonImportExport. * @param asyncHandler Asynchronous callback handler for events in the * life-cycle of the request. Users could provide the implementation of * the four callback methods in this interface to process the operation * result or handle the exception. * * @return A Java Future object containing the response from the ListJobs * service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future listJobsAsync( final ListJobsRequest listJobsRequest, final AsyncHandler asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public ListJobsResult call() throws Exception { ListJobsResult result; try { result = listJobs(listJobsRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listJobsRequest, result); return result; } }); } /** *

* You use this operation to change the parameters specified in the * original manifest file by supplying a new manifest file. The manifest * file attached to this request replaces the original manifest file. You * can only use the operation after a CreateJob request but before the * data transfer starts and you can only use it on jobs you own. *

* * @param updateJobRequest Container for the necessary parameters to * execute the UpdateJob operation on AmazonImportExport. * * @return A Java Future object containing the response from the * UpdateJob service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future updateJobAsync(final UpdateJobRequest updateJobRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public UpdateJobResult call() throws Exception { return updateJob(updateJobRequest); } }); } /** *

* You use this operation to change the parameters specified in the * original manifest file by supplying a new manifest file. The manifest * file attached to this request replaces the original manifest file. You * can only use the operation after a CreateJob request but before the * data transfer starts and you can only use it on jobs you own. *

* * @param updateJobRequest Container for the necessary parameters to * execute the UpdateJob operation on AmazonImportExport. * @param asyncHandler Asynchronous callback handler for events in the * life-cycle of the request. Users could provide the implementation of * the four callback methods in this interface to process the operation * result or handle the exception. * * @return A Java Future object containing the response from the * UpdateJob service method, as returned by AmazonImportExport. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonImportExport indicating * either a problem with the data in the request, or a server side issue. */ public Future updateJobAsync( final UpdateJobRequest updateJobRequest, final AsyncHandler asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable() { public UpdateJobResult call() throws Exception { UpdateJobResult result; try { result = updateJob(updateJobRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(updateJobRequest, result); return result; } }); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy