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

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

/*
 * 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