com.amazonaws
Class AmazonWebServiceClient

java.lang.Object
  extended by com.amazonaws.AmazonWebServiceClient
Direct Known Subclasses:
AmazonAutoScalingClient, AmazonCloudFormationClient, AmazonCloudFrontClient, AmazonCloudFrontClient, AmazonCloudSearchClient, AmazonCloudSearchClient, AmazonCloudWatchClient, AmazonDirectConnectClient, AmazonDynamoDBClient, AmazonDynamoDBClient, AmazonEC2Client, AmazonElastiCacheClient, AmazonElasticLoadBalancingClient, AmazonElasticMapReduceClient, AmazonElasticTranscoderClient, AmazonGlacierClient, AmazonIdentityManagementClient, AmazonImportExportClient, AmazonKinesisClient, AmazonRDSClient, AmazonRedshiftClient, AmazonRoute53Client, AmazonS3Client, AmazonSimpleDBClient, AmazonSimpleEmailServiceClient, AmazonSimpleWorkflowClient, AmazonSNSClient, AmazonSQSClient, AWSCloudTrailClient, AWSElasticBeanstalkClient, AWSOpsWorksClient, AWSSecurityTokenServiceClient, AWSStorageGatewayClient, AWSSupportClient, DataPipelineClient

public abstract class AmazonWebServiceClient
extends Object

Abstract base class for Amazon Web Service Java clients.

Responsible for basic client capabilities that are the same across all AWS SDK Java clients (ex: setting the client endpoint).


Field Summary
protected  AmazonHttpClient client
          Low level client for sending requests to AWS services.
protected  ClientConfiguration clientConfiguration
          The client configuration
protected  URI endpoint
          The service endpoint to which this client will send requests.
static boolean LOGGING_AWS_REQUEST_METRIC
           
protected  List<RequestHandler2> requestHandler2s
          Optional request handlers for additional request processing.
protected  int timeOffset
          Optional offset (in seconds) to use when signing requests
 
Constructor Summary
AmazonWebServiceClient(ClientConfiguration clientConfiguration)
          Constructs a new AmazonWebServiceClient object using the specified configuration.
AmazonWebServiceClient(ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector)
          Constructs a new AmazonWebServiceClient object using the specified configuration and request metric collector.
 
Method Summary
 void addRequestHandler(RequestHandler requestHandler)
          Deprecated. by addRequestHandler(RequestHandler2). Appends a request handler to the list of registered handlers that are run as part of a request's lifecycle.
 void addRequestHandler(RequestHandler2 requestHandler2)
          Appends a request handler to the list of registered handlers that are run as part of a request's lifecycle.
protected  void configSigner(String serviceName, String regionId)
          Deprecated. this method is now a no-op, as overriding the signer from sublcass is no longer supported.
protected  void configSigner(URI uri)
          Deprecated. this method is now a no-op, as overriding the signer from sublcass is no longer supported.
protected
<T> HttpRequest
convertToHttpRequest(Request<T> request, HttpMethodName methodName)
          Deprecated. 
protected  ExecutionContext createExecutionContext()
          Deprecated. by createExecutionContext(AmazonWebServiceRequest). This method exists only for backward compatiblity reason, so that clients compiled against the older version of this class won't get NoSuchMethodError at runtime. However, calling this methods would effectively ignore and disable the request metric collector, if any, specified at the request level. Request metric collector specified at the service client or AWS SDK level will still be honored.
protected  ExecutionContext createExecutionContext(AmazonWebServiceRequest req)
           
protected  ExecutionContext createExecutionContext(Request<?> req)
           
protected  void endClientExecution(AWSRequestMetrics awsRequestMetrics, Request<?> request, Response<?> response)
          Convenient method to end the client execution without logging the awsRequestMetrics.
protected  void endClientExecution(AWSRequestMetrics awsRequestMetrics, Request<?> request, Response<?> response, boolean loggingAwsRequestMetrics)
          Common routine to end a client AWS request/response execution and collect the request metrics.
protected  RequestMetricCollector findRequestMetricCollector(Request<?> req)
          Returns the most specific request metric collector, starting from the request level, then client level, then finally the AWS SDK level.
 RequestMetricCollector getRequestMetricsCollector()
          Returns the client specific RequestMetricCollector; or null if there is none.
protected  String getServiceAbbreviation()
          Deprecated. by getServiceName().
 String getServiceName()
          Returns the service abbreviation for this service, used for identifying service endpoints by region, identifying the necessary signer, etc.
protected  String getServiceNameIntern()
          Internal method for implementing getServiceName().
protected  Signer getSigner()
          Returns the signer.
 Signer getSignerByURI(URI uri)
          Returns the signer based on the given URI and the current AWS client configuration.
 String getSignerRegionOverride()
          Returns the signer region override.
 int getTimeOffset()
          Returns the optional value for time offset for this client.
protected static boolean isProfilingEnabled()
           
protected  boolean isRequestMetricsEnabled(AmazonWebServiceRequest req)
          Returns true if request metric collection is applicable to the given request; false otherwise.
 void removeRequestHandler(RequestHandler requestHandler)
          Removes a request handler from the list of registered handlers that are run as part of a request's lifecycle.
 void removeRequestHandler(RequestHandler2 requestHandler2)
           
protected  RequestMetricCollector requestMetricCollector()
          Returns the client specific request metric collector if there is one; or the one at the AWS SDK level otherwise.
 void setConfiguration(ClientConfiguration clientConfiguration)
          Deprecated. by client configuration via the constructor. This method will be removed later on.
 void setEndpoint(String endpoint)
          Overrides the default endpoint for this client.
 void setEndpoint(String endpoint, String serviceName, String regionId)
          Deprecated.  
 void setRegion(Region region)
          An alternative to setEndpoint(String), sets the regional endpoint for this client's service calls.
 void setServiceNameIntern(String serviceName)
          An internal method used to explicitly override the service name computed by the default implementation.
 void setSignerRegionOverride(String signerRegionOverride)
          An internal method used to explicitly override the internal signer region computed by the default implementation.
 void setTimeOffset(int timeOffset)
          Sets the optional value for time offset for this client.
 void shutdown()
          Shuts down this client object, releasing any resources that might be held open.
 AmazonWebServiceClient withTimeOffset(int timeOffset)
          Sets the optional value for time offset for this client.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGING_AWS_REQUEST_METRIC

public static final boolean LOGGING_AWS_REQUEST_METRIC
See Also:
Constant Field Values

endpoint

protected volatile URI endpoint
The service endpoint to which this client will send requests.

Subclass should only read but not assign to this field, at least not without synchronization on the enclosing object for thread-safety reason.


clientConfiguration

protected ClientConfiguration clientConfiguration
The client configuration


client

protected AmazonHttpClient client
Low level client for sending requests to AWS services.


requestHandler2s

protected final List<RequestHandler2> requestHandler2s
Optional request handlers for additional request processing.


timeOffset

protected int timeOffset
Optional offset (in seconds) to use when signing requests

Constructor Detail

AmazonWebServiceClient

public AmazonWebServiceClient(ClientConfiguration clientConfiguration)
Constructs a new AmazonWebServiceClient object using the specified configuration.

Parameters:
clientConfiguration - The client configuration for this client.

AmazonWebServiceClient

public AmazonWebServiceClient(ClientConfiguration clientConfiguration,
                              RequestMetricCollector requestMetricCollector)
Constructs a new AmazonWebServiceClient object using the specified configuration and request metric collector.

Parameters:
clientConfiguration - The client configuration for this client.
requestMetricCollector - optional request metric collector to be used at the http client level; can be null.
Method Detail

getSigner

protected Signer getSigner()
Returns the signer.

Note, however, the signer configured for S3 is incomplete at this stage as the information on the S3 bucket and key is not yet known.


setEndpoint

public void setEndpoint(String endpoint)
                 throws IllegalArgumentException
Overrides the default endpoint for this client. Callers can use this method to control which AWS region they want to work with.

This method is not threadsafe. Endpoints should be configured when the client is created and before any service requests are made. Changing it afterwards creates inevitable race conditions for any service requests in transit.

Callers can pass in just the endpoint (ex: "ec2.amazonaws.com") or a full URL, including the protocol (ex: "https://ec2.amazonaws.com"). If the protocol is not specified here, the default protocol from this client's ClientConfiguration will be used, which by default is HTTPS.

For more information on using AWS regions with the AWS SDK for Java, and a complete list of all available endpoints for all AWS services, see: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3912

Parameters:
endpoint - The endpoint (ex: "ec2.amazonaws.com") or a full URL, including the protocol (ex: "https://ec2.amazonaws.com") of the region specific AWS endpoint this client will communicate with.
Throws:
IllegalArgumentException - If any problems are detected with the specified endpoint.

setEndpoint

@Deprecated
public void setEndpoint(String endpoint,
                                   String serviceName,
                                   String regionId)
Deprecated. 

An internal method that is not expected to be normally called except for AWS internal development purposes.

Overrides the default endpoint for this client ("http://dynamodb.us-east-1.amazonaws.com/") and explicitly provides an AWS region ID and AWS service name to use when the client calculates a signature for requests. In almost all cases, this region ID and service name are automatically determined from the endpoint, and callers should use the simpler one-argument form of setEndpoint instead of this method.

Callers can pass in just the endpoint (ex: "dynamodb.us-east-1.amazonaws.com/") or a full URL, including the protocol (ex: "http://dynamodb.us-east-1.amazonaws.com/"). If the protocol is not specified here, the default protocol from this client's ClientConfiguration will be used, which by default is HTTPS.

For more information on using AWS regions with the AWS SDK for Java, and a complete list of all available endpoints for all AWS services, see: http://developer.amazonwebservices.com/connect/entry.jspa?externalID= 3912

Parameters:
endpoint - The endpoint (ex: "dynamodb.us-east-1.amazonaws.com/") or a full URL, including the protocol (ex: "http://dynamodb.us-east-1.amazonaws.com/") of the region specific AWS endpoint this client will communicate with.
serviceName - This parameter is ignored.
regionId - The ID of the region in which this service resides AND the overriding region for signing purposes.
Throws:
IllegalArgumentException - If any problems are detected with the specified endpoint.

configSigner

@Deprecated
protected void configSigner(URI uri)
Deprecated. this method is now a no-op, as overriding the signer from sublcass is no longer supported.


configSigner

@Deprecated
protected void configSigner(String serviceName,
                                       String regionId)
Deprecated. this method is now a no-op, as overriding the signer from sublcass is no longer supported.


getSignerByURI

public Signer getSignerByURI(URI uri)
Returns the signer based on the given URI and the current AWS client configuration. Currently only the SQS client can have different region on a per request basis. For other AWS clients, the region remains the same on a per AWS client level.

Note, however, the signer returned for S3 is incomplete at this stage as the information on the S3 bucket and key is not yet known.


setRegion

public void setRegion(Region region)
               throws IllegalArgumentException
An alternative to setEndpoint(String), sets the regional endpoint for this client's service calls. Callers can use this method to control which AWS region they want to work with.

This method is not threadsafe. A region should be configured when the client is created and before any service requests are made. Changing it afterwards creates inevitable race conditions for any service requests in transit or retrying.

By default, all service endpoints in all regions use the https protocol. To use http instead, specify it in the ClientConfiguration supplied at construction.

Parameters:
region - The region this client will communicate with. See Region.getRegion(com.amazonaws.regions.Regions) for accessing a given region.
Throws:
IllegalArgumentException - If the given region is null, or if this service isn't available in the given region. See Region.isServiceSupported(String)
See Also:
Region.getRegion(com.amazonaws.regions.Regions), Region.createClient(Class, com.amazonaws.auth.AWSCredentialsProvider, ClientConfiguration)

setConfiguration

@Deprecated
public void setConfiguration(ClientConfiguration clientConfiguration)
Deprecated. by client configuration via the constructor. This method will be removed later on.


shutdown

public void shutdown()
Shuts down this client object, releasing any resources that might be held open. This is an optional method, and callers are not expected to call it, but can if they want to explicitly release any open resources. Once a client has been shutdown, it should not be used to make any more requests.


convertToHttpRequest

@Deprecated
protected <T> HttpRequest convertToHttpRequest(Request<T> request,
                                                          HttpMethodName methodName)
Deprecated. 

Converts a Request object into an HttpRequest object. Copies all the headers, parameters, etc. from the Request into the new HttpRequest.

Parameters:
request - The request to convert.
methodName - The HTTP method (GET, PUT, DELETE, HEAD) to use in the converted HttpRequest object.
Returns:
A new HttpRequest object created from the details of the specified Request object.

addRequestHandler

@Deprecated
public void addRequestHandler(RequestHandler requestHandler)
Deprecated. by addRequestHandler(RequestHandler2). Appends a request handler to the list of registered handlers that are run as part of a request's lifecycle.

Parameters:
requestHandler - The new handler to add to the current list of request handlers.

addRequestHandler

public void addRequestHandler(RequestHandler2 requestHandler2)
Appends a request handler to the list of registered handlers that are run as part of a request's lifecycle.

Parameters:
requestHandler2 - The new handler to add to the current list of request handlers.

removeRequestHandler

public void removeRequestHandler(RequestHandler requestHandler)
Removes a request handler from the list of registered handlers that are run as part of a request's lifecycle.

Parameters:
requestHandler - The handler to remove from the current list of request handlers.

removeRequestHandler

public void removeRequestHandler(RequestHandler2 requestHandler2)

createExecutionContext

protected ExecutionContext createExecutionContext(AmazonWebServiceRequest req)

createExecutionContext

protected final ExecutionContext createExecutionContext(Request<?> req)

createExecutionContext

@Deprecated
protected final ExecutionContext createExecutionContext()
Deprecated. by createExecutionContext(AmazonWebServiceRequest). This method exists only for backward compatiblity reason, so that clients compiled against the older version of this class won't get NoSuchMethodError at runtime. However, calling this methods would effectively ignore and disable the request metric collector, if any, specified at the request level. Request metric collector specified at the service client or AWS SDK level will still be honored.


isProfilingEnabled

protected static boolean isProfilingEnabled()

isRequestMetricsEnabled

protected final boolean isRequestMetricsEnabled(AmazonWebServiceRequest req)
Returns true if request metric collection is applicable to the given request; false otherwise.


setTimeOffset

public void setTimeOffset(int timeOffset)
Sets the optional value for time offset for this client. This value will be applied to all requests processed through this client. Value is in seconds, positive values imply the current clock is "fast", negative values imply clock is slow.

Parameters:
timeOffset - The optional value for time offset (in seconds) for this client.

withTimeOffset

public AmazonWebServiceClient withTimeOffset(int timeOffset)
Sets the optional value for time offset for this client. This value will be applied to all requests processed through this client. Value is in seconds, positive values imply the current clock is "fast", negative values imply clock is slow.

Parameters:
timeOffset - The optional value for time offset (in seconds) for this client.
Returns:
the updated web service client

getTimeOffset

public int getTimeOffset()
Returns the optional value for time offset for this client. This value will be applied to all requests processed through this client. Value is in seconds, positive values imply the current clock is "fast", negative values imply clock is slow.

Returns:
The optional value for time offset (in seconds) for this client.

getRequestMetricsCollector

public RequestMetricCollector getRequestMetricsCollector()
Returns the client specific RequestMetricCollector; or null if there is none.


requestMetricCollector

protected RequestMetricCollector requestMetricCollector()
Returns the client specific request metric collector if there is one; or the one at the AWS SDK level otherwise.


findRequestMetricCollector

protected final RequestMetricCollector findRequestMetricCollector(Request<?> req)
Returns the most specific request metric collector, starting from the request level, then client level, then finally the AWS SDK level.


endClientExecution

protected final void endClientExecution(AWSRequestMetrics awsRequestMetrics,
                                        Request<?> request,
                                        Response<?> response)
Convenient method to end the client execution without logging the awsRequestMetrics.


endClientExecution

protected final void endClientExecution(AWSRequestMetrics awsRequestMetrics,
                                        Request<?> request,
                                        Response<?> response,
                                        boolean loggingAwsRequestMetrics)
Common routine to end a client AWS request/response execution and collect the request metrics. Caller of this routine is responsible for starting the event for AWSRequestMetrics.Field.ClientExecuteTime and call this method in a try-finally block.

Parameters:
loggingAwsRequestMetrics - true to log the awsRequestMetrics; false otherwise.

getServiceAbbreviation

@Deprecated
protected String getServiceAbbreviation()
Deprecated. by getServiceName().


getServiceName

public String getServiceName()
Returns the service abbreviation for this service, used for identifying service endpoints by region, identifying the necessary signer, etc. Used to be call "getServiceAbbreviation".


getServiceNameIntern

protected String getServiceNameIntern()
Internal method for implementing getServiceName(). Method is protected by intent so peculiar subclass that don't follow the class naming convention can choose to return whatever service name as needed.


setServiceNameIntern

public final void setServiceNameIntern(String serviceName)
An internal method used to explicitly override the service name computed by the default implementation. This method is not expected to be normally called except for AWS internal development purposes.


getSignerRegionOverride

public final String getSignerRegionOverride()
Returns the signer region override.

See Also:
setSignerRegionOverride(String).

setSignerRegionOverride

public final void setSignerRegionOverride(String signerRegionOverride)
An internal method used to explicitly override the internal signer region computed by the default implementation. This method is not expected to be normally called except for AWS internal development purposes.



Copyright © 2016. All rights reserved.