/* * 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.support; 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.support.AWSSupportClientBuilder; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.support.model.*; import com.amazonaws.services.support.model.transform.*; /** * Client for accessing AWS Support. All service calls made using this client are blocking, and will not return until * the service call completes. * <p> * <fullname>AWS Support</fullname> * <p> * The AWS Support API reference is intended for programmers who need detailed information about the AWS Support * operations and data types. This service enables you to manage your AWS Support cases programmatically. It uses HTTP * methods that return results in JSON format. * </p> * <p> * The AWS Support service also exposes a set of <a href="http://aws.amazon.com/premiumsupport/trustedadvisor/">Trusted * Advisor</a> features. You can retrieve a list of checks and their descriptions, get check results, specify checks to * refresh, and get the refresh status of checks. * </p> * <p> * The following list describes the AWS Support case management operations: * </p> * <ul> * <li> * <p> * <b>Service names, issue categories, and available severity levels. </b>The <a>DescribeServices</a> and * <a>DescribeSeverityLevels</a> operations return AWS service names, service codes, service categories, and problem * severity levels. You use these values when you call the <a>CreateCase</a> operation. * </p> * </li> * <li> * <p> * <b>Case creation, case details, and case resolution.</b> The <a>CreateCase</a>, <a>DescribeCases</a>, * <a>DescribeAttachment</a>, and <a>ResolveCase</a> operations create AWS Support cases, retrieve information about * cases, and resolve cases. * </p> * </li> * <li> * <p> * <b>Case communication.</b> The <a>DescribeCommunications</a>, <a>AddCommunicationToCase</a>, and * <a>AddAttachmentsToSet</a> operations retrieve and add communications and attachments to AWS Support cases. * </p> * </li> * </ul> * <p> * The following list describes the operations available from the AWS Support service for Trusted Advisor: * </p> * <ul> * <li> * <p> * <a>DescribeTrustedAdvisorChecks</a> returns the list of checks that run against your AWS resources. * </p> * </li> * <li> * <p> * Using the <code>checkId</code> for a specific check returned by <a>DescribeTrustedAdvisorChecks</a>, you can call * <a>DescribeTrustedAdvisorCheckResult</a> to obtain the results for the check you specified. * </p> * </li> * <li> * <p> * <a>DescribeTrustedAdvisorCheckSummaries</a> returns summarized results for one or more Trusted Advisor checks. * </p> * </li> * <li> * <p> * <a>RefreshTrustedAdvisorCheck</a> requests that Trusted Advisor rerun a specified check. * </p> * </li> * <li> * <p> * <a>DescribeTrustedAdvisorCheckRefreshStatuses</a> reports the refresh status of one or more checks. * </p> * </li> * </ul> * <p> * For authentication of requests, AWS Support uses <a * href="http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature Version 4 Signing Process</a>. * </p> * <p> * See <a href="http://docs.aws.amazon.com/awssupport/latest/user/Welcome.html">About the AWS Support API</a> in the * <i>AWS Support User Guide</i> for information about how to use this service to create and manage your support cases, * and how to call Trusted Advisor for results of checks on your resources. * </p> */ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AWSSupportClient extends AmazonWebServiceClient implements AWSSupport { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AWSSupport.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "support"; /** Client configuration factory providing ClientConfigurations tailored to this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); private final com.amazonaws.protocol.json.SdkJsonProtocolFactory protocolFactory = new com.amazonaws.protocol.json.SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.1") .withSupportsCbor(false) .withSupportsIon(false) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AttachmentSetIdNotFound").withModeledClass( com.amazonaws.services.support.model.AttachmentSetIdNotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("CaseCreationLimitExceeded").withModeledClass( com.amazonaws.services.support.model.CaseCreationLimitExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AttachmentIdNotFound").withModeledClass( com.amazonaws.services.support.model.AttachmentIdNotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AttachmentSetExpired").withModeledClass( com.amazonaws.services.support.model.AttachmentSetExpiredException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AttachmentLimitExceeded").withModeledClass( com.amazonaws.services.support.model.AttachmentLimitExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("CaseIdNotFound").withModeledClass( com.amazonaws.services.support.model.CaseIdNotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("DescribeAttachmentLimitExceeded").withModeledClass( com.amazonaws.services.support.model.DescribeAttachmentLimitExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InternalServerError").withModeledClass( com.amazonaws.services.support.model.InternalServerErrorException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("AttachmentSetSizeLimitExceeded").withModeledClass( com.amazonaws.services.support.model.AttachmentSetSizeLimitExceededException.class)) .withBaseServiceExceptionClass(com.amazonaws.services.support.model.AWSSupportException.class)); /** * Constructs a new client to invoke service methods on AWS Support. 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 AWSSupportClientBuilder#defaultClient()} */ @Deprecated public AWSSupportClient() { this(DefaultAWSCredentialsProviderChain.getInstance(), configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Support. 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 Support (ex: proxy settings, * retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AWSSupportClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AWSSupportClient(ClientConfiguration clientConfiguration) { this(DefaultAWSCredentialsProviderChain.getInstance(), clientConfiguration); } /** * Constructs a new client to invoke service methods on AWS Support 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 AWSSupportClientBuilder#withCredentials(AWSCredentialsProvider)} for example: * {@code AWSSupportClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();} */ @Deprecated public AWSSupportClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Support 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 Support (ex: proxy settings, * retry counts, etc.). * @deprecated use {@link AWSSupportClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AWSSupportClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AWSSupportClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials); init(); } /** * Constructs a new client to invoke service methods on AWS Support 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 AWSSupportClientBuilder#withCredentials(AWSCredentialsProvider)} */ @Deprecated public AWSSupportClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Support 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 Support (ex: proxy settings, * retry counts, etc.). * @deprecated use {@link AWSSupportClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AWSSupportClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AWSSupportClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on AWS Support 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 Support (ex: proxy settings, * retry counts, etc.). * @param requestMetricCollector * optional request metric collector * @deprecated use {@link AWSSupportClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AWSSupportClientBuilder#withClientConfiguration(ClientConfiguration)} and * {@link AWSSupportClientBuilder#withMetricsCollector(RequestMetricCollector)} */ @Deprecated public AWSSupportClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } public static AWSSupportClientBuilder builder() { return AWSSupportClientBuilder.standard(); } /** * Constructs a new client to invoke service methods on AWS Support 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. */ AWSSupportClient(AwsSyncClientParams clientParams) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly setEndpoint("https://support.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/support/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/support/request.handler2s")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** * <p> * Adds one or more attachments to an attachment set. If an <code>attachmentSetId</code> is not specified, a new * attachment set is created, and the ID of the set is returned in the response. If an <code>attachmentSetId</code> * is specified, the attachments are added to the specified set, if it exists. * </p> * <p> * An attachment set is a temporary container for attachments that are to be added to a case or case communication. * The set is available for one hour after it is created; the <code>expiryTime</code> returned in the response * indicates when the set expires. The maximum number of attachments in a set is 3, and the maximum size of any * attachment in the set is 5 MB. * </p> * * @param addAttachmentsToSetRequest * @return Result of the AddAttachmentsToSet operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws AttachmentSetIdNotFoundException * An attachment set with the specified ID could not be found. * @throws AttachmentSetExpiredException * The expiration time of the attachment set has passed. The set expires 1 hour after it is created. * @throws AttachmentSetSizeLimitExceededException * A limit for the size of an attachment set has been exceeded. The limits are 3 attachments and 5 MB per * attachment. * @throws AttachmentLimitExceededException * The limit for the number of attachment sets created in a short period of time has been exceeded. * @sample AWSSupport.AddAttachmentsToSet * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/AddAttachmentsToSet" target="_top">AWS * API Documentation</a> */ @Override public AddAttachmentsToSetResult addAttachmentsToSet(AddAttachmentsToSetRequest request) { request = beforeClientExecution(request); return executeAddAttachmentsToSet(request); } @SdkInternalApi final AddAttachmentsToSetResult executeAddAttachmentsToSet(AddAttachmentsToSetRequest addAttachmentsToSetRequest) { ExecutionContext executionContext = createExecutionContext(addAttachmentsToSetRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<AddAttachmentsToSetRequest> request = null; Response<AddAttachmentsToSetResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new AddAttachmentsToSetRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(addAttachmentsToSetRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<AddAttachmentsToSetResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new AddAttachmentsToSetResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Adds additional customer communication to an AWS Support case. You use the <code>caseId</code> value to identify * the case to add communication to. You can list a set of email addresses to copy on the communication using the * <code>ccEmailAddresses</code> value. The <code>communicationBody</code> value contains the text of the * communication. * </p> * <p> * The response indicates the success or failure of the request. * </p> * <p> * This operation implements a subset of the features of the AWS Support Center. * </p> * * @param addCommunicationToCaseRequest * To be written. * @return Result of the AddCommunicationToCase operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws CaseIdNotFoundException * The requested <code>caseId</code> could not be located. * @throws AttachmentSetIdNotFoundException * An attachment set with the specified ID could not be found. * @throws AttachmentSetExpiredException * The expiration time of the attachment set has passed. The set expires 1 hour after it is created. * @sample AWSSupport.AddCommunicationToCase * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/AddCommunicationToCase" target="_top">AWS * API Documentation</a> */ @Override public AddCommunicationToCaseResult addCommunicationToCase(AddCommunicationToCaseRequest request) { request = beforeClientExecution(request); return executeAddCommunicationToCase(request); } @SdkInternalApi final AddCommunicationToCaseResult executeAddCommunicationToCase(AddCommunicationToCaseRequest addCommunicationToCaseRequest) { ExecutionContext executionContext = createExecutionContext(addCommunicationToCaseRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<AddCommunicationToCaseRequest> request = null; Response<AddCommunicationToCaseResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new AddCommunicationToCaseRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(addCommunicationToCaseRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<AddCommunicationToCaseResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new AddCommunicationToCaseResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a new case in the AWS Support Center. This operation is modeled on the behavior of the AWS Support Center * <a href="https://console.aws.amazon.com/support/home#/case/create">Create Case</a> page. Its parameters require * you to specify the following information: * </p> * <ul> * <li> * <p> * <b>issueType.</b> The type of issue for the case. You can specify either "customer-service" or "technical." If * you do not indicate a value, the default is "technical." * </p> * </li> * <li> * <p> * <b>serviceCode.</b> The code for an AWS service. You obtain the <code>serviceCode</code> by calling * <a>DescribeServices</a>. * </p> * </li> * <li> * <p> * <b>categoryCode.</b> The category for the service defined for the <code>serviceCode</code> value. You also obtain * the category code for a service by calling <a>DescribeServices</a>. Each AWS service defines its own set of * category codes. * </p> * </li> * <li> * <p> * <b>severityCode.</b> A value that indicates the urgency of the case, which in turn determines the response time * according to your service level agreement with AWS Support. You obtain the SeverityCode by calling * <a>DescribeSeverityLevels</a>. * </p> * </li> * <li> * <p> * <b>subject.</b> The <b>Subject</b> field on the AWS Support Center <a * href="https://console.aws.amazon.com/support/home#/case/create">Create Case</a> page. * </p> * </li> * <li> * <p> * <b>communicationBody.</b> The <b>Description</b> field on the AWS Support Center <a * href="https://console.aws.amazon.com/support/home#/case/create">Create Case</a> page. * </p> * </li> * <li> * <p> * <b>attachmentSetId.</b> The ID of a set of attachments that has been created by using <a>AddAttachmentsToSet</a>. * </p> * </li> * <li> * <p> * <b>language.</b> The human language in which AWS Support handles the case. English and Japanese are currently * supported. * </p> * </li> * <li> * <p> * <b>ccEmailAddresses.</b> The AWS Support Center <b>CC</b> field on the <a * href="https://console.aws.amazon.com/support/home#/case/create">Create Case</a> page. You can list email * addresses to be copied on any correspondence about the case. The account that opens the case is already * identified by passing the AWS Credentials in the HTTP POST method or in a method or function call from one of the * programming languages supported by an <a href="http://aws.amazon.com/tools/">AWS SDK</a>. * </p> * </li> * </ul> * <note> * <p> * To add additional communication or attachments to an existing case, use <a>AddCommunicationToCase</a>. * </p> * </note> * <p> * A successful <a>CreateCase</a> request returns an AWS Support case number. Case numbers are used by the * <a>DescribeCases</a> operation to retrieve existing AWS Support cases. * </p> * * @param createCaseRequest * @return Result of the CreateCase operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws CaseCreationLimitExceededException * The case creation limit for the account has been exceeded. * @throws AttachmentSetIdNotFoundException * An attachment set with the specified ID could not be found. * @throws AttachmentSetExpiredException * The expiration time of the attachment set has passed. The set expires 1 hour after it is created. * @sample AWSSupport.CreateCase * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/CreateCase" target="_top">AWS API * Documentation</a> */ @Override public CreateCaseResult createCase(CreateCaseRequest request) { request = beforeClientExecution(request); return executeCreateCase(request); } @SdkInternalApi final CreateCaseResult executeCreateCase(CreateCaseRequest createCaseRequest) { ExecutionContext executionContext = createExecutionContext(createCaseRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateCaseRequest> request = null; Response<CreateCaseResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateCaseRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createCaseRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<CreateCaseResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateCaseResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns the attachment that has the specified ID. Attachment IDs are generated by the case management system when * you add an attachment to a case or case communication. Attachment IDs are returned in the * <a>AttachmentDetails</a> objects that are returned by the <a>DescribeCommunications</a> operation. * </p> * * @param describeAttachmentRequest * @return Result of the DescribeAttachment operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws DescribeAttachmentLimitExceededException * The limit for the number of <a>DescribeAttachment</a> requests in a short period of time has been * exceeded. * @throws AttachmentIdNotFoundException * An attachment with the specified ID could not be found. * @sample AWSSupport.DescribeAttachment * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeAttachment" target="_top">AWS API * Documentation</a> */ @Override public DescribeAttachmentResult describeAttachment(DescribeAttachmentRequest request) { request = beforeClientExecution(request); return executeDescribeAttachment(request); } @SdkInternalApi final DescribeAttachmentResult executeDescribeAttachment(DescribeAttachmentRequest describeAttachmentRequest) { ExecutionContext executionContext = createExecutionContext(describeAttachmentRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeAttachmentRequest> request = null; Response<DescribeAttachmentResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeAttachmentRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeAttachmentRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeAttachmentResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeAttachmentResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of cases that you specify by passing one or more case IDs. In addition, you can filter the cases * by date by setting values for the <code>afterTime</code> and <code>beforeTime</code> request parameters. You can * set values for the <code>includeResolvedCases</code> and <code>includeCommunications</code> request parameters to * control how much information is returned. * </p> * <p> * Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for * data might cause an error. * </p> * <p> * The response returns the following in JSON format: * </p> * <ul> * <li> * <p> * One or more <a>CaseDetails</a> data types. * </p> * </li> * <li> * <p> * One or more <code>nextToken</code> values, which specify where to paginate the returned records represented by * the <code>CaseDetails</code> objects. * </p> * </li> * </ul> * * @param describeCasesRequest * @return Result of the DescribeCases operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws CaseIdNotFoundException * The requested <code>caseId</code> could not be located. * @sample AWSSupport.DescribeCases * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeCases" target="_top">AWS API * Documentation</a> */ @Override public DescribeCasesResult describeCases(DescribeCasesRequest request) { request = beforeClientExecution(request); return executeDescribeCases(request); } @SdkInternalApi final DescribeCasesResult executeDescribeCases(DescribeCasesRequest describeCasesRequest) { ExecutionContext executionContext = createExecutionContext(describeCasesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeCasesRequest> request = null; Response<DescribeCasesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeCasesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeCasesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeCasesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeCasesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeCasesResult describeCases() { return describeCases(new DescribeCasesRequest()); } /** * <p> * Returns communications (and attachments) for one or more support cases. You can use the <code>afterTime</code> * and <code>beforeTime</code> parameters to filter by date. You can use the <code>caseId</code> parameter to * restrict the results to a particular case. * </p> * <p> * Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for * data might cause an error. * </p> * <p> * You can use the <code>maxResults</code> and <code>nextToken</code> parameters to control the pagination of the * result set. Set <code>maxResults</code> to the number of cases you want displayed on each page, and use * <code>nextToken</code> to specify the resumption of pagination. * </p> * * @param describeCommunicationsRequest * @return Result of the DescribeCommunications operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws CaseIdNotFoundException * The requested <code>caseId</code> could not be located. * @sample AWSSupport.DescribeCommunications * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeCommunications" target="_top">AWS * API Documentation</a> */ @Override public DescribeCommunicationsResult describeCommunications(DescribeCommunicationsRequest request) { request = beforeClientExecution(request); return executeDescribeCommunications(request); } @SdkInternalApi final DescribeCommunicationsResult executeDescribeCommunications(DescribeCommunicationsRequest describeCommunicationsRequest) { ExecutionContext executionContext = createExecutionContext(describeCommunicationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeCommunicationsRequest> request = null; Response<DescribeCommunicationsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeCommunicationsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeCommunicationsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeCommunicationsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeCommunicationsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns the current list of AWS services and a list of service categories that applies to each one. You then use * service names and categories in your <a>CreateCase</a> requests. Each AWS service has its own set of categories. * </p> * <p> * The service codes and category codes correspond to the values that are displayed in the <b>Service</b> and * <b>Category</b> drop-down lists on the AWS Support Center <a * href="https://console.aws.amazon.com/support/home#/case/create">Create Case</a> page. The values in those fields, * however, do not necessarily match the service codes and categories returned by the <code>DescribeServices</code> * request. Always use the service codes and categories obtained programmatically. This practice ensures that you * always have the most recent set of service and category codes. * </p> * * @param describeServicesRequest * @return Result of the DescribeServices operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.DescribeServices * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeServices" target="_top">AWS API * Documentation</a> */ @Override public DescribeServicesResult describeServices(DescribeServicesRequest request) { request = beforeClientExecution(request); return executeDescribeServices(request); } @SdkInternalApi final DescribeServicesResult executeDescribeServices(DescribeServicesRequest describeServicesRequest) { ExecutionContext executionContext = createExecutionContext(describeServicesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeServicesRequest> request = null; Response<DescribeServicesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeServicesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeServicesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeServicesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeServicesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeServicesResult describeServices() { return describeServices(new DescribeServicesRequest()); } /** * <p> * Returns the list of severity levels that you can assign to an AWS Support case. The severity level for a case is * also a field in the <a>CaseDetails</a> data type included in any <a>CreateCase</a> request. * </p> * * @param describeSeverityLevelsRequest * @return Result of the DescribeSeverityLevels operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.DescribeSeverityLevels * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeSeverityLevels" target="_top">AWS * API Documentation</a> */ @Override public DescribeSeverityLevelsResult describeSeverityLevels(DescribeSeverityLevelsRequest request) { request = beforeClientExecution(request); return executeDescribeSeverityLevels(request); } @SdkInternalApi final DescribeSeverityLevelsResult executeDescribeSeverityLevels(DescribeSeverityLevelsRequest describeSeverityLevelsRequest) { ExecutionContext executionContext = createExecutionContext(describeSeverityLevelsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeSeverityLevelsRequest> request = null; Response<DescribeSeverityLevelsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeSeverityLevelsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeSeverityLevelsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeSeverityLevelsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeSeverityLevelsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeSeverityLevelsResult describeSeverityLevels() { return describeSeverityLevels(new DescribeSeverityLevelsRequest()); } /** * <p> * Returns the refresh status of the Trusted Advisor checks that have the specified check IDs. Check IDs can be * obtained by calling <a>DescribeTrustedAdvisorChecks</a>. * </p> * <note> * <p> * Some checks are refreshed automatically, and their refresh statuses cannot be retrieved by using this operation. * Use of the <code>DescribeTrustedAdvisorCheckRefreshStatuses</code> operation for these checks causes an * <code>InvalidParameterValue</code> error. * </p> * </note> * * @param describeTrustedAdvisorCheckRefreshStatusesRequest * @return Result of the DescribeTrustedAdvisorCheckRefreshStatuses operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.DescribeTrustedAdvisorCheckRefreshStatuses * @see <a * href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeTrustedAdvisorCheckRefreshStatuses" * target="_top">AWS API Documentation</a> */ @Override public DescribeTrustedAdvisorCheckRefreshStatusesResult describeTrustedAdvisorCheckRefreshStatuses(DescribeTrustedAdvisorCheckRefreshStatusesRequest request) { request = beforeClientExecution(request); return executeDescribeTrustedAdvisorCheckRefreshStatuses(request); } @SdkInternalApi final DescribeTrustedAdvisorCheckRefreshStatusesResult executeDescribeTrustedAdvisorCheckRefreshStatuses( DescribeTrustedAdvisorCheckRefreshStatusesRequest describeTrustedAdvisorCheckRefreshStatusesRequest) { ExecutionContext executionContext = createExecutionContext(describeTrustedAdvisorCheckRefreshStatusesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeTrustedAdvisorCheckRefreshStatusesRequest> request = null; Response<DescribeTrustedAdvisorCheckRefreshStatusesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeTrustedAdvisorCheckRefreshStatusesRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(describeTrustedAdvisorCheckRefreshStatusesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeTrustedAdvisorCheckRefreshStatusesResult>> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeTrustedAdvisorCheckRefreshStatusesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns the results of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by * calling <a>DescribeTrustedAdvisorChecks</a>. * </p> * <p> * The response contains a <a>TrustedAdvisorCheckResult</a> object, which contains these three objects: * </p> * <ul> * <li> * <p> * <a>TrustedAdvisorCategorySpecificSummary</a> * </p> * </li> * <li> * <p> * <a>TrustedAdvisorResourceDetail</a> * </p> * </li> * <li> * <p> * <a>TrustedAdvisorResourcesSummary</a> * </p> * </li> * </ul> * <p> * In addition, the response contains these fields: * </p> * <ul> * <li> * <p> * <b>status.</b> The alert status of the check: "ok" (green), "warning" (yellow), "error" (red), or * "not_available". * </p> * </li> * <li> * <p> * <b>timestamp.</b> The time of the last refresh of the check. * </p> * </li> * <li> * <p> * <b>checkId.</b> The unique identifier for the check. * </p> * </li> * </ul> * * @param describeTrustedAdvisorCheckResultRequest * @return Result of the DescribeTrustedAdvisorCheckResult operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.DescribeTrustedAdvisorCheckResult * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeTrustedAdvisorCheckResult" * target="_top">AWS API Documentation</a> */ @Override public DescribeTrustedAdvisorCheckResultResult describeTrustedAdvisorCheckResult(DescribeTrustedAdvisorCheckResultRequest request) { request = beforeClientExecution(request); return executeDescribeTrustedAdvisorCheckResult(request); } @SdkInternalApi final DescribeTrustedAdvisorCheckResultResult executeDescribeTrustedAdvisorCheckResult( DescribeTrustedAdvisorCheckResultRequest describeTrustedAdvisorCheckResultRequest) { ExecutionContext executionContext = createExecutionContext(describeTrustedAdvisorCheckResultRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeTrustedAdvisorCheckResultRequest> request = null; Response<DescribeTrustedAdvisorCheckResultResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeTrustedAdvisorCheckResultRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(describeTrustedAdvisorCheckResultRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeTrustedAdvisorCheckResultResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeTrustedAdvisorCheckResultResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns the summaries of the results of the Trusted Advisor checks that have the specified check IDs. Check IDs * can be obtained by calling <a>DescribeTrustedAdvisorChecks</a>. * </p> * <p> * The response contains an array of <a>TrustedAdvisorCheckSummary</a> objects. * </p> * * @param describeTrustedAdvisorCheckSummariesRequest * @return Result of the DescribeTrustedAdvisorCheckSummaries operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.DescribeTrustedAdvisorCheckSummaries * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeTrustedAdvisorCheckSummaries" * target="_top">AWS API Documentation</a> */ @Override public DescribeTrustedAdvisorCheckSummariesResult describeTrustedAdvisorCheckSummaries(DescribeTrustedAdvisorCheckSummariesRequest request) { request = beforeClientExecution(request); return executeDescribeTrustedAdvisorCheckSummaries(request); } @SdkInternalApi final DescribeTrustedAdvisorCheckSummariesResult executeDescribeTrustedAdvisorCheckSummaries( DescribeTrustedAdvisorCheckSummariesRequest describeTrustedAdvisorCheckSummariesRequest) { ExecutionContext executionContext = createExecutionContext(describeTrustedAdvisorCheckSummariesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeTrustedAdvisorCheckSummariesRequest> request = null; Response<DescribeTrustedAdvisorCheckSummariesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeTrustedAdvisorCheckSummariesRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(describeTrustedAdvisorCheckSummariesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeTrustedAdvisorCheckSummariesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeTrustedAdvisorCheckSummariesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns information about all available Trusted Advisor checks, including name, ID, category, description, and * metadata. You must specify a language code; English ("en") and Japanese ("ja") are currently supported. The * response contains a <a>TrustedAdvisorCheckDescription</a> for each check. * </p> * * @param describeTrustedAdvisorChecksRequest * @return Result of the DescribeTrustedAdvisorChecks operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.DescribeTrustedAdvisorChecks * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/DescribeTrustedAdvisorChecks" * target="_top">AWS API Documentation</a> */ @Override public DescribeTrustedAdvisorChecksResult describeTrustedAdvisorChecks(DescribeTrustedAdvisorChecksRequest request) { request = beforeClientExecution(request); return executeDescribeTrustedAdvisorChecks(request); } @SdkInternalApi final DescribeTrustedAdvisorChecksResult executeDescribeTrustedAdvisorChecks(DescribeTrustedAdvisorChecksRequest describeTrustedAdvisorChecksRequest) { ExecutionContext executionContext = createExecutionContext(describeTrustedAdvisorChecksRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DescribeTrustedAdvisorChecksRequest> request = null; Response<DescribeTrustedAdvisorChecksResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeTrustedAdvisorChecksRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(describeTrustedAdvisorChecksRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DescribeTrustedAdvisorChecksResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeTrustedAdvisorChecksResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Requests a refresh of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by * calling <a>DescribeTrustedAdvisorChecks</a>. * </p> * <note> * <p> * Some checks are refreshed automatically, and they cannot be refreshed by using this operation. Use of the * <code>RefreshTrustedAdvisorCheck</code> operation for these checks causes an <code>InvalidParameterValue</code> * error. * </p> * </note> * <p> * The response contains a <a>TrustedAdvisorCheckRefreshStatus</a> object, which contains these fields: * </p> * <ul> * <li> * <p> * <b>status.</b> The refresh status of the check: "none", "enqueued", "processing", "success", or "abandoned". * </p> * </li> * <li> * <p> * <b>millisUntilNextRefreshable.</b> The amount of time, in milliseconds, until the check is eligible for refresh. * </p> * </li> * <li> * <p> * <b>checkId.</b> The unique identifier for the check. * </p> * </li> * </ul> * * @param refreshTrustedAdvisorCheckRequest * @return Result of the RefreshTrustedAdvisorCheck operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @sample AWSSupport.RefreshTrustedAdvisorCheck * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/RefreshTrustedAdvisorCheck" * target="_top">AWS API Documentation</a> */ @Override public RefreshTrustedAdvisorCheckResult refreshTrustedAdvisorCheck(RefreshTrustedAdvisorCheckRequest request) { request = beforeClientExecution(request); return executeRefreshTrustedAdvisorCheck(request); } @SdkInternalApi final RefreshTrustedAdvisorCheckResult executeRefreshTrustedAdvisorCheck(RefreshTrustedAdvisorCheckRequest refreshTrustedAdvisorCheckRequest) { ExecutionContext executionContext = createExecutionContext(refreshTrustedAdvisorCheckRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<RefreshTrustedAdvisorCheckRequest> request = null; Response<RefreshTrustedAdvisorCheckResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new RefreshTrustedAdvisorCheckRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(refreshTrustedAdvisorCheckRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<RefreshTrustedAdvisorCheckResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new RefreshTrustedAdvisorCheckResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Takes a <code>caseId</code> and returns the initial state of the case along with the state of the case after the * call to <a>ResolveCase</a> completed. * </p> * * @param resolveCaseRequest * @return Result of the ResolveCase operation returned by the service. * @throws InternalServerErrorException * An internal server error occurred. * @throws CaseIdNotFoundException * The requested <code>caseId</code> could not be located. * @sample AWSSupport.ResolveCase * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/support-2013-04-15/ResolveCase" target="_top">AWS API * Documentation</a> */ @Override public ResolveCaseResult resolveCase(ResolveCaseRequest request) { request = beforeClientExecution(request); return executeResolveCase(request); } @SdkInternalApi final ResolveCaseResult executeResolveCase(ResolveCaseRequest resolveCaseRequest) { ExecutionContext executionContext = createExecutionContext(resolveCaseRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ResolveCaseRequest> request = null; Response<ResolveCaseResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ResolveCaseRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(resolveCaseRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<ResolveCaseResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ResolveCaseResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public ResolveCaseResult resolveCase() { return resolveCase(new ResolveCaseRequest()); } /** * 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); HttpResponseHandler<AmazonServiceException> errorResponseHandler = protocolFactory.createErrorResponseHandler(new JsonErrorResponseMetadata()); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }