/* * Copyright 2012-2017 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 org.w3c.dom.*; import java.net.*; import java.util.*; import javax.annotation.Generated; import org.apache.commons.logging.*; import com.amazonaws.*; import com.amazonaws.annotation.SdkInternalApi; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.internal.auth.*; import com.amazonaws.metrics.*; import com.amazonaws.regions.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.protocol.json.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.annotation.ThreadSafe; import com.amazonaws.client.AwsSyncClientParams; import com.amazonaws.services.importexport.AmazonImportExportClientBuilder; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.importexport.model.*; import com.amazonaws.services.importexport.model.transform.*; /** * Client for accessing AWS Import/Export. All service calls made using this client are blocking, and will not return * until the service call completes. * <p> * <fullname>AWS Import/Export Service</fullname> 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. */ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AmazonImportExportClient extends AmazonWebServiceClient implements AmazonImportExport { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AmazonImportExport.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "importexport"; /** Client configuration factory providing ClientConfigurations tailored to this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); /** * List of exception unmarshallers for all modeled exceptions */ protected final List<Unmarshaller<AmazonServiceException, Node>> exceptionUnmarshallers = new ArrayList<Unmarshaller<AmazonServiceException, Node>>(); /** * Constructs a new client to invoke service methods on AWS Import/Export. A credentials provider chain will be used * that searches for credentials in this order: * <ul> * <li>Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY</li> * <li>Java System Properties - aws.accessKeyId and aws.secretKey</li> * <li>Instance profile credentials delivered through the Amazon EC2 metadata service</li> * </ul> * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AmazonImportExportClientBuilder#defaultClient()} */ @Deprecated public AmazonImportExportClient() { this(DefaultAWSCredentialsProviderChain.getInstance(), configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Import/Export. A credentials provider chain will be used * that searches for credentials in this order: * <ul> * <li>Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY</li> * <li>Java System Properties - aws.accessKeyId and aws.secretKey</li> * <li>Instance profile credentials delivered through the Amazon EC2 metadata service</li> * </ul> * * <p> * 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 AWS Import/Export (ex: proxy * settings, retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AmazonImportExportClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AmazonImportExportClient(ClientConfiguration clientConfiguration) { this(DefaultAWSCredentialsProviderChain.getInstance(), clientConfiguration); } /** * Constructs a new client to invoke service methods on AWS Import/Export using the specified AWS account * credentials. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when authenticating with AWS services. * @deprecated use {@link AmazonImportExportClientBuilder#withCredentials(AWSCredentialsProvider)} for example: * {@code AmazonImportExportClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();} */ @Deprecated public AmazonImportExportClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Import/Export using the specified AWS account * credentials and client configuration options. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to AWS Import/Export (ex: proxy * settings, retry counts, etc.). * @deprecated use {@link AmazonImportExportClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AmazonImportExportClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AmazonImportExportClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials); init(); } /** * Constructs a new client to invoke service methods on AWS Import/Export using the specified AWS account * credentials provider. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @deprecated use {@link AmazonImportExportClientBuilder#withCredentials(AWSCredentialsProvider)} */ @Deprecated public AmazonImportExportClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Import/Export using the specified AWS account * credentials provider and client configuration options. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to AWS Import/Export (ex: proxy * settings, retry counts, etc.). * @deprecated use {@link AmazonImportExportClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AmazonImportExportClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AmazonImportExportClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on AWS Import/Export using the specified AWS account * credentials provider, client configuration options, and request metric collector. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to AWS Import/Export (ex: proxy * settings, retry counts, etc.). * @param requestMetricCollector * optional request metric collector * @deprecated use {@link AmazonImportExportClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AmazonImportExportClientBuilder#withClientConfiguration(ClientConfiguration)} and * {@link AmazonImportExportClientBuilder#withMetricsCollector(RequestMetricCollector)} */ @Deprecated public AmazonImportExportClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } public static AmazonImportExportClientBuilder builder() { return AmazonImportExportClientBuilder.standard(); } /** * Constructs a new client to invoke service methods on AWS Import/Export using the specified parameters. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AmazonImportExportClient(AwsSyncClientParams clientParams) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); init(); } private void init() { exceptionUnmarshallers.add(new MissingCustomsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidVersionExceptionUnmarshaller()); exceptionUnmarshallers.add(new MultipleRegionsExceptionUnmarshaller()); exceptionUnmarshallers.add(new CreateJobQuotaExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new UnableToUpdateJobIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchBucketExceptionUnmarshaller()); exceptionUnmarshallers.add(new BucketPermissionExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidCustomsExceptionUnmarshaller()); exceptionUnmarshallers.add(new UnableToCancelJobIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new CanceledJobIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new ExpiredJobIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidJobIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidManifestFieldExceptionUnmarshaller()); exceptionUnmarshallers.add(new MissingParameterExceptionUnmarshaller()); exceptionUnmarshallers.add(new MissingManifestFieldExceptionUnmarshaller()); exceptionUnmarshallers.add(new MalformedManifestExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidAccessKeyIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidAddressExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidFileSystemExceptionUnmarshaller()); exceptionUnmarshallers.add(new StandardErrorUnmarshaller(com.amazonaws.services.importexport.model.AmazonImportExportException.class)); setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly this.setEndpoint("https://importexport.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/importexport/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/importexport/request.handler2s")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** * 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 * Input structure for the CancelJob operation. * @return Result of the CancelJob operation returned by the service. * @throws InvalidJobIdException * The JOBID was missing, not found, or not associated with the AWS account. * @throws ExpiredJobIdException * Indicates that the specified job has expired out of the system. * @throws CanceledJobIdException * The specified job ID has been canceled and is no longer valid. * @throws UnableToCancelJobIdException * AWS Import/Export cannot cancel the job * @throws InvalidAccessKeyIdException * The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The * manifest and the request authentication must use the same AWS Access Key ID. * @throws InvalidVersionException * The client tool version is invalid. * @sample AmazonImportExport.CancelJob */ @Override public CancelJobResult cancelJob(CancelJobRequest request) { request = beforeClientExecution(request); return executeCancelJob(request); } @SdkInternalApi final CancelJobResult executeCancelJob(CancelJobRequest cancelJobRequest) { ExecutionContext executionContext = createExecutionContext(cancelJobRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CancelJobRequest> request = null; Response<CancelJobResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CancelJobRequestMarshaller().marshall(super.beforeMarshalling(cancelJobRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CancelJobResult> responseHandler = new StaxResponseHandler<CancelJobResult>(new CancelJobResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * 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 * Input structure for the CreateJob operation. * @return Result of the CreateJob operation returned by the service. * @throws MissingParameterException * One or more required parameters was missing from the request. * @throws InvalidParameterException * One or more parameters had an invalid value. * @throws InvalidAccessKeyIdException * The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The * manifest and the request authentication must use the same AWS Access Key ID. * @throws InvalidAddressException * The address specified in the manifest is invalid. * @throws InvalidManifestFieldException * One or more manifest fields was invalid. Please correct and resubmit. * @throws MissingManifestFieldException * One or more required fields were missing from the manifest file. Please correct and resubmit. * @throws NoSuchBucketException * The specified bucket does not exist. Create the specified bucket or change the manifest's bucket, * exportBucket, or logBucket field to a bucket that the account, as specified by the manifest's Access Key * ID, has write permissions to. * @throws MissingCustomsException * One or more required customs parameters was missing from the manifest. * @throws InvalidCustomsException * One or more customs parameters was invalid. Please correct and resubmit. * @throws InvalidFileSystemException * File system specified in export manifest is invalid. * @throws MultipleRegionsException * Your manifest file contained buckets from multiple regions. A job is restricted to buckets from one * region. Please correct and resubmit. * @throws BucketPermissionException * The account specified does not have the appropriate bucket permissions. * @throws MalformedManifestException * Your manifest is not well-formed. * @throws CreateJobQuotaExceededException * Each account can create only a certain number of jobs per day. If you need to create more than this, * please contact awsimportexport@amazon.com to explain your particular use case. * @throws InvalidJobIdException * The JOBID was missing, not found, or not associated with the AWS account. * @throws InvalidVersionException * The client tool version is invalid. * @sample AmazonImportExport.CreateJob */ @Override public CreateJobResult createJob(CreateJobRequest request) { request = beforeClientExecution(request); return executeCreateJob(request); } @SdkInternalApi final CreateJobResult executeCreateJob(CreateJobRequest createJobRequest) { ExecutionContext executionContext = createExecutionContext(createJobRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateJobRequest> request = null; Response<CreateJobResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateJobRequestMarshaller().marshall(super.beforeMarshalling(createJobRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateJobResult> responseHandler = new StaxResponseHandler<CreateJobResult>(new CreateJobResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * This operation generates a pre-paid UPS shipping label that you will use to ship your device to AWS for * processing. * * @param getShippingLabelRequest * @return Result of the GetShippingLabel operation returned by the service. * @throws InvalidJobIdException * The JOBID was missing, not found, or not associated with the AWS account. * @throws ExpiredJobIdException * Indicates that the specified job has expired out of the system. * @throws CanceledJobIdException * The specified job ID has been canceled and is no longer valid. * @throws InvalidAccessKeyIdException * The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The * manifest and the request authentication must use the same AWS Access Key ID. * @throws InvalidAddressException * The address specified in the manifest is invalid. * @throws InvalidVersionException * The client tool version is invalid. * @throws InvalidParameterException * One or more parameters had an invalid value. * @sample AmazonImportExport.GetShippingLabel */ @Override public GetShippingLabelResult getShippingLabel(GetShippingLabelRequest request) { request = beforeClientExecution(request); return executeGetShippingLabel(request); } @SdkInternalApi final GetShippingLabelResult executeGetShippingLabel(GetShippingLabelRequest getShippingLabelRequest) { ExecutionContext executionContext = createExecutionContext(getShippingLabelRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetShippingLabelRequest> request = null; Response<GetShippingLabelResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetShippingLabelRequestMarshaller().marshall(super.beforeMarshalling(getShippingLabelRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetShippingLabelResult> responseHandler = new StaxResponseHandler<GetShippingLabelResult>( new GetShippingLabelResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * 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 * Input structure for the GetStatus operation. * @return Result of the GetStatus operation returned by the service. * @throws InvalidJobIdException * The JOBID was missing, not found, or not associated with the AWS account. * @throws ExpiredJobIdException * Indicates that the specified job has expired out of the system. * @throws CanceledJobIdException * The specified job ID has been canceled and is no longer valid. * @throws InvalidAccessKeyIdException * The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The * manifest and the request authentication must use the same AWS Access Key ID. * @throws InvalidVersionException * The client tool version is invalid. * @sample AmazonImportExport.GetStatus */ @Override public GetStatusResult getStatus(GetStatusRequest request) { request = beforeClientExecution(request); return executeGetStatus(request); } @SdkInternalApi final GetStatusResult executeGetStatus(GetStatusRequest getStatusRequest) { ExecutionContext executionContext = createExecutionContext(getStatusRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetStatusRequest> request = null; Response<GetStatusResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetStatusRequestMarshaller().marshall(super.beforeMarshalling(getStatusRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetStatusResult> responseHandler = new StaxResponseHandler<GetStatusResult>(new GetStatusResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * 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 * Input structure for the ListJobs operation. * @return Result of the ListJobs operation returned by the service. * @throws InvalidParameterException * One or more parameters had an invalid value. * @throws InvalidAccessKeyIdException * The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The * manifest and the request authentication must use the same AWS Access Key ID. * @throws InvalidVersionException * The client tool version is invalid. * @sample AmazonImportExport.ListJobs */ @Override public ListJobsResult listJobs(ListJobsRequest request) { request = beforeClientExecution(request); return executeListJobs(request); } @SdkInternalApi final ListJobsResult executeListJobs(ListJobsRequest listJobsRequest) { ExecutionContext executionContext = createExecutionContext(listJobsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListJobsRequest> request = null; Response<ListJobsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListJobsRequestMarshaller().marshall(super.beforeMarshalling(listJobsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListJobsResult> responseHandler = new StaxResponseHandler<ListJobsResult>(new ListJobsResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public ListJobsResult listJobs() { return listJobs(new ListJobsRequest()); } /** * 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 * Input structure for the UpateJob operation. * @return Result of the UpdateJob operation returned by the service. * @throws MissingParameterException * One or more required parameters was missing from the request. * @throws InvalidParameterException * One or more parameters had an invalid value. * @throws InvalidAccessKeyIdException * The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The * manifest and the request authentication must use the same AWS Access Key ID. * @throws InvalidAddressException * The address specified in the manifest is invalid. * @throws InvalidManifestFieldException * One or more manifest fields was invalid. Please correct and resubmit. * @throws InvalidJobIdException * The JOBID was missing, not found, or not associated with the AWS account. * @throws MissingManifestFieldException * One or more required fields were missing from the manifest file. Please correct and resubmit. * @throws NoSuchBucketException * The specified bucket does not exist. Create the specified bucket or change the manifest's bucket, * exportBucket, or logBucket field to a bucket that the account, as specified by the manifest's Access Key * ID, has write permissions to. * @throws ExpiredJobIdException * Indicates that the specified job has expired out of the system. * @throws CanceledJobIdException * The specified job ID has been canceled and is no longer valid. * @throws MissingCustomsException * One or more required customs parameters was missing from the manifest. * @throws InvalidCustomsException * One or more customs parameters was invalid. Please correct and resubmit. * @throws InvalidFileSystemException * File system specified in export manifest is invalid. * @throws MultipleRegionsException * Your manifest file contained buckets from multiple regions. A job is restricted to buckets from one * region. Please correct and resubmit. * @throws BucketPermissionException * The account specified does not have the appropriate bucket permissions. * @throws MalformedManifestException * Your manifest is not well-formed. * @throws UnableToUpdateJobIdException * AWS Import/Export cannot update the job * @throws InvalidVersionException * The client tool version is invalid. * @sample AmazonImportExport.UpdateJob */ @Override public UpdateJobResult updateJob(UpdateJobRequest request) { request = beforeClientExecution(request); return executeUpdateJob(request); } @SdkInternalApi final UpdateJobResult executeUpdateJob(UpdateJobRequest updateJobRequest) { ExecutionContext executionContext = createExecutionContext(updateJobRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<UpdateJobRequest> request = null; Response<UpdateJobResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateJobRequestMarshaller().marshall(super.beforeMarshalling(updateJobRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<UpdateJobResult> responseHandler = new StaxResponseHandler<UpdateJobResult>(new UpdateJobResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, request, typically used for debugging issues * where a service isn't acting as expected. This data isn't considered part of the result data returned by an * operation, so it's available through this separate, diagnostic interface. * <p> * Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic * information for an executed request, you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none is available. */ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be overriden at the request level. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> invoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { executionContext.setCredentialsProvider(CredentialUtils.getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext); } /** * Invoke with no authentication. Credentials are not required and any credentials set on the client or request will * be ignored for this operation. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> anonymousInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext); } /** * Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the * ExecutionContext beforehand. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> doInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); DefaultErrorResponseHandler errorResponseHandler = new DefaultErrorResponseHandler(exceptionUnmarshallers); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }