/* * Copyright 2010-2016 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.sns; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.handlers.AsyncHandler; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.services.sns.model.*; /** * Interface for accessing Amazon Simple Notification Service asynchronously. * <fullname>Amazon Simple Notification Service</fullname> * <p> * Amazon Simple Notification Service (Amazon SNS) is a web service that enables * you to build distributed web-enabled applications. Applications can use * Amazon SNS to easily push real-time notification messages to interested * subscribers over multiple delivery protocols. For more information about this * product see <a * href="http://aws.amazon.com/sns/">http://aws.amazon.com/sns</a>. For detailed * information about Amazon SNS features and their associated API calls, see the * <a href="http://docs.aws.amazon.com/sns/latest/dg/">Amazon SNS Developer * Guide</a>. * </p> * <p> * We also provide SDKs that enable you to access Amazon SNS from your preferred * programming language. The SDKs contain functionality that automatically takes * care of tasks such as: cryptographically signing your service requests, * retrying requests, and handling error responses. For a list of available * SDKs, go to <a href="http://aws.amazon.com/tools/">Tools for Amazon Web * Services</a>. * </p> **/ public class AmazonSNSAsyncClient extends AmazonSNSClient implements AmazonSNSAsync { /** * Executor service for executing asynchronous requests. */ private ExecutorService executorService; private static final int DEFAULT_THREAD_POOL_SIZE = 10; /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service. 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 public AmazonSNSAsyncClient() { this(new DefaultAWSCredentialsProviderChain()); } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service. 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 Amazon Simple Notification Service * (ex: proxy settings, retry counts, etc.). * @see DefaultAWSCredentialsProviderChain */ @Deprecated public AmazonSNSAsyncClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration, Executors .newFixedThreadPool(clientConfiguration.getMaxConnections())); } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials. * Default client settings will be used, and a fixed size thread pool will * be created for executing the asynchronous tasks. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. */ public AmazonSNSAsyncClient(AWSCredentials awsCredentials) { this(awsCredentials, Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE)); } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials * and executor service. Default client settings will be used. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. * @param executorService The executor service by which all asynchronous * requests will be executed. */ public AmazonSNSAsyncClient(AWSCredentials awsCredentials, ExecutorService executorService) { super(awsCredentials); this.executorService = executorService; } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials, * executor service, and client configuration options. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. * @param clientConfiguration Client configuration options (ex: max retry * limit, proxy settings, etc). * @param executorService The executor service by which all asynchronous * requests will be executed. */ public AmazonSNSAsyncClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration, ExecutorService executorService) { super(awsCredentials, clientConfiguration); this.executorService = executorService; } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials * provider. Default client settings will be used, and a fixed size thread * pool will be created for executing the asynchronous tasks. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. */ public AmazonSNSAsyncClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE)); } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials * provider and executor service. Default client settings will be used. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param executorService The executor service by which all asynchronous * requests will be executed. */ public AmazonSNSAsyncClient(AWSCredentialsProvider awsCredentialsProvider, ExecutorService executorService) { this(awsCredentialsProvider, new ClientConfiguration(), executorService); } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials * provider and client configuration options. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration Client configuration options (ex: max retry * limit, proxy settings, etc). */ public AmazonSNSAsyncClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, Executors .newFixedThreadPool(clientConfiguration.getMaxConnections())); } /** * Constructs a new asynchronous client to invoke service methods on Amazon * Simple Notification Service using the specified AWS account credentials * provider, executor service, and client configuration options. * <p> * All calls made using this new client object are non-blocking, and will * immediately return a Java Future object that the caller can later check * to see if the service call has actually completed. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration Client configuration options (ex: max retry * limit, proxy settings, etc). * @param executorService The executor service by which all asynchronous * requests will be executed. */ public AmazonSNSAsyncClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, ExecutorService executorService) { super(awsCredentialsProvider, clientConfiguration); this.executorService = executorService; } /** * Returns the executor service used by this async client to execute * requests. * * @return The executor service used by this async client to execute * requests. */ public ExecutorService getExecutorService() { return executorService; } /** * Shuts down the client, releasing all managed resources. This includes * forcibly terminating all pending asynchronous service calls. Clients who * wish to give pending asynchronous service calls time to complete should * call getExecutorService().shutdown() followed by * getExecutorService().awaitTermination() prior to calling this method. */ @Override public void shutdown() { super.shutdown(); executorService.shutdownNow(); } /** * <p> * Adds a statement to a topic's access control policy, granting access for * the specified AWS accounts to the specified actions. * </p> * * @param addPermissionRequest * @return A Java Future object containing the response from the * AddPermission service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> addPermissionAsync(final AddPermissionRequest addPermissionRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { addPermission(addPermissionRequest); return null; } }); } /** * <p> * Adds a statement to a topic's access control policy, granting access for * the specified AWS accounts to the specified actions. * </p> * * @param addPermissionRequest * @return A Java Future object containing the response from the * AddPermission service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> addPermissionAsync(final AddPermissionRequest addPermissionRequest, final AsyncHandler<AddPermissionRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { addPermission(addPermissionRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(addPermissionRequest, result); return result; } }); } /** * <p> * Accepts a phone number and indicates whether the phone holder has opted * out of receiving SMS messages from your account. You cannot send SMS * messages to a number that is opted out. * </p> * <p> * To resume sending messages, you can opt in the number by using the * <code>OptInPhoneNumber</code> action. * </p> * * @param checkIfPhoneNumberIsOptedOutRequest <p> * The input for the <code>CheckIfPhoneNumberIsOptedOut</code> * action. * </p> * @return A Java Future object containing the response from the * CheckIfPhoneNumberIsOptedOut service method, as returned by * Amazon Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CheckIfPhoneNumberIsOptedOutResult> checkIfPhoneNumberIsOptedOutAsync( final CheckIfPhoneNumberIsOptedOutRequest checkIfPhoneNumberIsOptedOutRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CheckIfPhoneNumberIsOptedOutResult>() { public CheckIfPhoneNumberIsOptedOutResult call() throws Exception { return checkIfPhoneNumberIsOptedOut(checkIfPhoneNumberIsOptedOutRequest); } }); } /** * <p> * Accepts a phone number and indicates whether the phone holder has opted * out of receiving SMS messages from your account. You cannot send SMS * messages to a number that is opted out. * </p> * <p> * To resume sending messages, you can opt in the number by using the * <code>OptInPhoneNumber</code> action. * </p> * * @param checkIfPhoneNumberIsOptedOutRequest <p> * The input for the <code>CheckIfPhoneNumberIsOptedOut</code> * action. * </p> * @return A Java Future object containing the response from the * CheckIfPhoneNumberIsOptedOut service method, as returned by * Amazon Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CheckIfPhoneNumberIsOptedOutResult> checkIfPhoneNumberIsOptedOutAsync( final CheckIfPhoneNumberIsOptedOutRequest checkIfPhoneNumberIsOptedOutRequest, final AsyncHandler<CheckIfPhoneNumberIsOptedOutRequest, CheckIfPhoneNumberIsOptedOutResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CheckIfPhoneNumberIsOptedOutResult>() { public CheckIfPhoneNumberIsOptedOutResult call() throws Exception { CheckIfPhoneNumberIsOptedOutResult result = null; try { result = checkIfPhoneNumberIsOptedOut(checkIfPhoneNumberIsOptedOutRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(checkIfPhoneNumberIsOptedOutRequest, result); return result; } }); } /** * <p> * Verifies an endpoint owner's intent to receive messages by validating the * token sent to the endpoint by an earlier <code>Subscribe</code> action. * If the token is valid, the action creates a new subscription and returns * its Amazon Resource Name (ARN). This call requires an AWS signature only * when the <code>AuthenticateOnUnsubscribe</code> flag is set to "true". * </p> * * @param confirmSubscriptionRequest <p> * Input for ConfirmSubscription action. * </p> * @return A Java Future object containing the response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ConfirmSubscriptionResult> confirmSubscriptionAsync( final ConfirmSubscriptionRequest confirmSubscriptionRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ConfirmSubscriptionResult>() { public ConfirmSubscriptionResult call() throws Exception { return confirmSubscription(confirmSubscriptionRequest); } }); } /** * <p> * Verifies an endpoint owner's intent to receive messages by validating the * token sent to the endpoint by an earlier <code>Subscribe</code> action. * If the token is valid, the action creates a new subscription and returns * its Amazon Resource Name (ARN). This call requires an AWS signature only * when the <code>AuthenticateOnUnsubscribe</code> flag is set to "true". * </p> * * @param confirmSubscriptionRequest <p> * Input for ConfirmSubscription action. * </p> * @return A Java Future object containing the response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ConfirmSubscriptionResult> confirmSubscriptionAsync( final ConfirmSubscriptionRequest confirmSubscriptionRequest, final AsyncHandler<ConfirmSubscriptionRequest, ConfirmSubscriptionResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ConfirmSubscriptionResult>() { public ConfirmSubscriptionResult call() throws Exception { ConfirmSubscriptionResult result = null; try { result = confirmSubscription(confirmSubscriptionRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(confirmSubscriptionRequest, result); return result; } }); } /** * <p> * Creates a platform application object for one of the supported push * notification services, such as APNS and GCM, to which devices and mobile * apps may register. You must specify PlatformPrincipal and * PlatformCredential attributes when using the * <code>CreatePlatformApplication</code> action. The PlatformPrincipal is * received from the notification service. For APNS/APNS_SANDBOX, * PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not * applicable. For ADM, PlatformPrincipal is "client id". The * PlatformCredential is also received from the notification service. For * WNS, PlatformPrincipal is "Package Security Identifier". For MPNS, * PlatformPrincipal is "TLS certificate". For Baidu, PlatformPrincipal is * "API key". * </p> * <p> * For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, * PlatformCredential is "API key". For ADM, PlatformCredential is * "client secret". For WNS, PlatformCredential is "secret key". For MPNS, * PlatformCredential is "private key". For Baidu, PlatformCredential is * "secret key". The PlatformApplicationArn that is returned when using * <code>CreatePlatformApplication</code> is then used as an attribute for * the <code>CreatePlatformEndpoint</code> action. For more information, see * <a href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html"> * Using Amazon SNS Mobile Push Notifications</a>. For more information * about obtaining the PlatformPrincipal and PlatformCredential for each of * the supported push notification services, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html" * >Getting Started with Apple Push Notification Service</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-adm.html" * >Getting Started with Amazon Device Messaging</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-baidu.html" * >Getting Started with Baidu Cloud Push</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-gcm.html" * >Getting Started with Google Cloud Messaging for Android</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-mpns.html" * >Getting Started with MPNS</a>, or <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-wns.html" * >Getting Started with WNS</a>. * </p> * * @param createPlatformApplicationRequest <p> * Input for CreatePlatformApplication action. * </p> * @return A Java Future object containing the response from the * CreatePlatformApplication service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CreatePlatformApplicationResult> createPlatformApplicationAsync( final CreatePlatformApplicationRequest createPlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CreatePlatformApplicationResult>() { public CreatePlatformApplicationResult call() throws Exception { return createPlatformApplication(createPlatformApplicationRequest); } }); } /** * <p> * Creates a platform application object for one of the supported push * notification services, such as APNS and GCM, to which devices and mobile * apps may register. You must specify PlatformPrincipal and * PlatformCredential attributes when using the * <code>CreatePlatformApplication</code> action. The PlatformPrincipal is * received from the notification service. For APNS/APNS_SANDBOX, * PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not * applicable. For ADM, PlatformPrincipal is "client id". The * PlatformCredential is also received from the notification service. For * WNS, PlatformPrincipal is "Package Security Identifier". For MPNS, * PlatformPrincipal is "TLS certificate". For Baidu, PlatformPrincipal is * "API key". * </p> * <p> * For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, * PlatformCredential is "API key". For ADM, PlatformCredential is * "client secret". For WNS, PlatformCredential is "secret key". For MPNS, * PlatformCredential is "private key". For Baidu, PlatformCredential is * "secret key". The PlatformApplicationArn that is returned when using * <code>CreatePlatformApplication</code> is then used as an attribute for * the <code>CreatePlatformEndpoint</code> action. For more information, see * <a href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html"> * Using Amazon SNS Mobile Push Notifications</a>. For more information * about obtaining the PlatformPrincipal and PlatformCredential for each of * the supported push notification services, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html" * >Getting Started with Apple Push Notification Service</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-adm.html" * >Getting Started with Amazon Device Messaging</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-baidu.html" * >Getting Started with Baidu Cloud Push</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-gcm.html" * >Getting Started with Google Cloud Messaging for Android</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-mpns.html" * >Getting Started with MPNS</a>, or <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-wns.html" * >Getting Started with WNS</a>. * </p> * * @param createPlatformApplicationRequest <p> * Input for CreatePlatformApplication action. * </p> * @return A Java Future object containing the response from the * CreatePlatformApplication service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CreatePlatformApplicationResult> createPlatformApplicationAsync( final CreatePlatformApplicationRequest createPlatformApplicationRequest, final AsyncHandler<CreatePlatformApplicationRequest, CreatePlatformApplicationResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CreatePlatformApplicationResult>() { public CreatePlatformApplicationResult call() throws Exception { CreatePlatformApplicationResult result = null; try { result = createPlatformApplication(createPlatformApplicationRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(createPlatformApplicationRequest, result); return result; } }); } /** * <p> * Creates an endpoint for a device and mobile app on one of the supported * push notification services, such as GCM and APNS. * <code>CreatePlatformEndpoint</code> requires the PlatformApplicationArn * that is returned from <code>CreatePlatformApplication</code>. The * EndpointArn that is returned when using * <code>CreatePlatformEndpoint</code> can then be used by the * <code>Publish</code> action to send a message to a mobile app or by the * <code>Subscribe</code> action for subscription to a topic. The * <code>CreatePlatformEndpoint</code> action is idempotent, so if the * requester already owns an endpoint with the same device token and * attributes, that endpoint's ARN is returned without creating a new * endpoint. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * <p> * When using <code>CreatePlatformEndpoint</code> with Baidu, two attributes * must be provided: ChannelId and UserId. The token field must also contain * the ChannelId. For more information, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePushBaiduEndpoint.html" * >Creating an Amazon SNS Endpoint for Baidu</a>. * </p> * * @param createPlatformEndpointRequest <p> * Input for CreatePlatformEndpoint action. * </p> * @return A Java Future object containing the response from the * CreatePlatformEndpoint service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CreatePlatformEndpointResult> createPlatformEndpointAsync( final CreatePlatformEndpointRequest createPlatformEndpointRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CreatePlatformEndpointResult>() { public CreatePlatformEndpointResult call() throws Exception { return createPlatformEndpoint(createPlatformEndpointRequest); } }); } /** * <p> * Creates an endpoint for a device and mobile app on one of the supported * push notification services, such as GCM and APNS. * <code>CreatePlatformEndpoint</code> requires the PlatformApplicationArn * that is returned from <code>CreatePlatformApplication</code>. The * EndpointArn that is returned when using * <code>CreatePlatformEndpoint</code> can then be used by the * <code>Publish</code> action to send a message to a mobile app or by the * <code>Subscribe</code> action for subscription to a topic. The * <code>CreatePlatformEndpoint</code> action is idempotent, so if the * requester already owns an endpoint with the same device token and * attributes, that endpoint's ARN is returned without creating a new * endpoint. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * <p> * When using <code>CreatePlatformEndpoint</code> with Baidu, two attributes * must be provided: ChannelId and UserId. The token field must also contain * the ChannelId. For more information, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePushBaiduEndpoint.html" * >Creating an Amazon SNS Endpoint for Baidu</a>. * </p> * * @param createPlatformEndpointRequest <p> * Input for CreatePlatformEndpoint action. * </p> * @return A Java Future object containing the response from the * CreatePlatformEndpoint service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CreatePlatformEndpointResult> createPlatformEndpointAsync( final CreatePlatformEndpointRequest createPlatformEndpointRequest, final AsyncHandler<CreatePlatformEndpointRequest, CreatePlatformEndpointResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CreatePlatformEndpointResult>() { public CreatePlatformEndpointResult call() throws Exception { CreatePlatformEndpointResult result = null; try { result = createPlatformEndpoint(createPlatformEndpointRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(createPlatformEndpointRequest, result); return result; } }); } /** * <p> * Creates a topic to which notifications can be published. Users can create * at most 100,000 topics. For more information, see <a * href="http://aws.amazon.com/sns/">http://aws.amazon.com/sns</a>. This * action is idempotent, so if the requester already owns a topic with the * specified name, that topic's ARN is returned without creating a new * topic. * </p> * * @param createTopicRequest <p> * Input for CreateTopic action. * </p> * @return A Java Future object containing the response from the CreateTopic * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws TopicLimitExceededException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CreateTopicResult> createTopicAsync(final CreateTopicRequest createTopicRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CreateTopicResult>() { public CreateTopicResult call() throws Exception { return createTopic(createTopicRequest); } }); } /** * <p> * Creates a topic to which notifications can be published. Users can create * at most 100,000 topics. For more information, see <a * href="http://aws.amazon.com/sns/">http://aws.amazon.com/sns</a>. This * action is idempotent, so if the requester already owns a topic with the * specified name, that topic's ARN is returned without creating a new * topic. * </p> * * @param createTopicRequest <p> * Input for CreateTopic action. * </p> * @return A Java Future object containing the response from the CreateTopic * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws TopicLimitExceededException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<CreateTopicResult> createTopicAsync(final CreateTopicRequest createTopicRequest, final AsyncHandler<CreateTopicRequest, CreateTopicResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<CreateTopicResult>() { public CreateTopicResult call() throws Exception { CreateTopicResult result = null; try { result = createTopic(createTopicRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(createTopicRequest, result); return result; } }); } /** * <p> * Deletes the endpoint for a device and mobile app from Amazon SNS. This * action is idempotent. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * <p> * When you delete an endpoint that is also subscribed to a topic, then you * must also unsubscribe the endpoint from the topic. * </p> * * @param deleteEndpointRequest <p> * Input for DeleteEndpoint action. * </p> * @return A Java Future object containing the response from the * DeleteEndpoint service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> deleteEndpointAsync(final DeleteEndpointRequest deleteEndpointRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { deleteEndpoint(deleteEndpointRequest); return null; } }); } /** * <p> * Deletes the endpoint for a device and mobile app from Amazon SNS. This * action is idempotent. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * <p> * When you delete an endpoint that is also subscribed to a topic, then you * must also unsubscribe the endpoint from the topic. * </p> * * @param deleteEndpointRequest <p> * Input for DeleteEndpoint action. * </p> * @return A Java Future object containing the response from the * DeleteEndpoint service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> deleteEndpointAsync(final DeleteEndpointRequest deleteEndpointRequest, final AsyncHandler<DeleteEndpointRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { deleteEndpoint(deleteEndpointRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(deleteEndpointRequest, result); return result; } }); } /** * <p> * Deletes a platform application object for one of the supported push * notification services, such as APNS and GCM. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param deletePlatformApplicationRequest <p> * Input for DeletePlatformApplication action. * </p> * @return A Java Future object containing the response from the * DeletePlatformApplication service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> deletePlatformApplicationAsync( final DeletePlatformApplicationRequest deletePlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { deletePlatformApplication(deletePlatformApplicationRequest); return null; } }); } /** * <p> * Deletes a platform application object for one of the supported push * notification services, such as APNS and GCM. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param deletePlatformApplicationRequest <p> * Input for DeletePlatformApplication action. * </p> * @return A Java Future object containing the response from the * DeletePlatformApplication service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> deletePlatformApplicationAsync( final DeletePlatformApplicationRequest deletePlatformApplicationRequest, final AsyncHandler<DeletePlatformApplicationRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { deletePlatformApplication(deletePlatformApplicationRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(deletePlatformApplicationRequest, result); return result; } }); } /** * <p> * Deletes a topic and all its subscriptions. Deleting a topic might prevent * some messages previously sent to the topic from being delivered to * subscribers. This action is idempotent, so deleting a topic that does not * exist does not result in an error. * </p> * * @param deleteTopicRequest * @return A Java Future object containing the response from the DeleteTopic * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> deleteTopicAsync(final DeleteTopicRequest deleteTopicRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { deleteTopic(deleteTopicRequest); return null; } }); } /** * <p> * Deletes a topic and all its subscriptions. Deleting a topic might prevent * some messages previously sent to the topic from being delivered to * subscribers. This action is idempotent, so deleting a topic that does not * exist does not result in an error. * </p> * * @param deleteTopicRequest * @return A Java Future object containing the response from the DeleteTopic * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> deleteTopicAsync(final DeleteTopicRequest deleteTopicRequest, final AsyncHandler<DeleteTopicRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { deleteTopic(deleteTopicRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(deleteTopicRequest, result); return result; } }); } /** * <p> * Retrieves the endpoint attributes for a device on one of the supported * push notification services, such as GCM and APNS. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param getEndpointAttributesRequest <p> * Input for GetEndpointAttributes action. * </p> * @return A Java Future object containing the response from the * GetEndpointAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetEndpointAttributesResult> getEndpointAttributesAsync( final GetEndpointAttributesRequest getEndpointAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetEndpointAttributesResult>() { public GetEndpointAttributesResult call() throws Exception { return getEndpointAttributes(getEndpointAttributesRequest); } }); } /** * <p> * Retrieves the endpoint attributes for a device on one of the supported * push notification services, such as GCM and APNS. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param getEndpointAttributesRequest <p> * Input for GetEndpointAttributes action. * </p> * @return A Java Future object containing the response from the * GetEndpointAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetEndpointAttributesResult> getEndpointAttributesAsync( final GetEndpointAttributesRequest getEndpointAttributesRequest, final AsyncHandler<GetEndpointAttributesRequest, GetEndpointAttributesResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetEndpointAttributesResult>() { public GetEndpointAttributesResult call() throws Exception { GetEndpointAttributesResult result = null; try { result = getEndpointAttributes(getEndpointAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(getEndpointAttributesRequest, result); return result; } }); } /** * <p> * Retrieves the attributes of the platform application object for the * supported push notification services, such as APNS and GCM. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param getPlatformApplicationAttributesRequest <p> * Input for GetPlatformApplicationAttributes action. * </p> * @return A Java Future object containing the response from the * GetPlatformApplicationAttributes service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetPlatformApplicationAttributesResult> getPlatformApplicationAttributesAsync( final GetPlatformApplicationAttributesRequest getPlatformApplicationAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetPlatformApplicationAttributesResult>() { public GetPlatformApplicationAttributesResult call() throws Exception { return getPlatformApplicationAttributes(getPlatformApplicationAttributesRequest); } }); } /** * <p> * Retrieves the attributes of the platform application object for the * supported push notification services, such as APNS and GCM. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param getPlatformApplicationAttributesRequest <p> * Input for GetPlatformApplicationAttributes action. * </p> * @return A Java Future object containing the response from the * GetPlatformApplicationAttributes service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetPlatformApplicationAttributesResult> getPlatformApplicationAttributesAsync( final GetPlatformApplicationAttributesRequest getPlatformApplicationAttributesRequest, final AsyncHandler<GetPlatformApplicationAttributesRequest, GetPlatformApplicationAttributesResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetPlatformApplicationAttributesResult>() { public GetPlatformApplicationAttributesResult call() throws Exception { GetPlatformApplicationAttributesResult result = null; try { result = getPlatformApplicationAttributes(getPlatformApplicationAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(getPlatformApplicationAttributesRequest, result); return result; } }); } /** * <p> * Returns the settings for sending SMS messages from your account. * </p> * <p> * These settings are set with the <code>SetSMSAttributes</code> action. * </p> * * @param getSMSAttributesRequest <p> * The input for the <code>GetSMSAttributes</code> request. * </p> * @return A Java Future object containing the response from the * GetSMSAttributes service method, as returned by Amazon Simple * Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetSMSAttributesResult> getSMSAttributesAsync( final GetSMSAttributesRequest getSMSAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetSMSAttributesResult>() { public GetSMSAttributesResult call() throws Exception { return getSMSAttributes(getSMSAttributesRequest); } }); } /** * <p> * Returns the settings for sending SMS messages from your account. * </p> * <p> * These settings are set with the <code>SetSMSAttributes</code> action. * </p> * * @param getSMSAttributesRequest <p> * The input for the <code>GetSMSAttributes</code> request. * </p> * @return A Java Future object containing the response from the * GetSMSAttributes service method, as returned by Amazon Simple * Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetSMSAttributesResult> getSMSAttributesAsync( final GetSMSAttributesRequest getSMSAttributesRequest, final AsyncHandler<GetSMSAttributesRequest, GetSMSAttributesResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetSMSAttributesResult>() { public GetSMSAttributesResult call() throws Exception { GetSMSAttributesResult result = null; try { result = getSMSAttributes(getSMSAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(getSMSAttributesRequest, result); return result; } }); } /** * <p> * Returns all of the properties of a subscription. * </p> * * @param getSubscriptionAttributesRequest <p> * Input for GetSubscriptionAttributes. * </p> * @return A Java Future object containing the response from the * GetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetSubscriptionAttributesResult> getSubscriptionAttributesAsync( final GetSubscriptionAttributesRequest getSubscriptionAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetSubscriptionAttributesResult>() { public GetSubscriptionAttributesResult call() throws Exception { return getSubscriptionAttributes(getSubscriptionAttributesRequest); } }); } /** * <p> * Returns all of the properties of a subscription. * </p> * * @param getSubscriptionAttributesRequest <p> * Input for GetSubscriptionAttributes. * </p> * @return A Java Future object containing the response from the * GetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetSubscriptionAttributesResult> getSubscriptionAttributesAsync( final GetSubscriptionAttributesRequest getSubscriptionAttributesRequest, final AsyncHandler<GetSubscriptionAttributesRequest, GetSubscriptionAttributesResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetSubscriptionAttributesResult>() { public GetSubscriptionAttributesResult call() throws Exception { GetSubscriptionAttributesResult result = null; try { result = getSubscriptionAttributes(getSubscriptionAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(getSubscriptionAttributesRequest, result); return result; } }); } /** * <p> * Returns all of the properties of a topic. Topic properties returned might * differ based on the authorization of the user. * </p> * * @param getTopicAttributesRequest <p> * Input for GetTopicAttributes action. * </p> * @return A Java Future object containing the response from the * GetTopicAttributes service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetTopicAttributesResult> getTopicAttributesAsync( final GetTopicAttributesRequest getTopicAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetTopicAttributesResult>() { public GetTopicAttributesResult call() throws Exception { return getTopicAttributes(getTopicAttributesRequest); } }); } /** * <p> * Returns all of the properties of a topic. Topic properties returned might * differ based on the authorization of the user. * </p> * * @param getTopicAttributesRequest <p> * Input for GetTopicAttributes action. * </p> * @return A Java Future object containing the response from the * GetTopicAttributes service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<GetTopicAttributesResult> getTopicAttributesAsync( final GetTopicAttributesRequest getTopicAttributesRequest, final AsyncHandler<GetTopicAttributesRequest, GetTopicAttributesResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<GetTopicAttributesResult>() { public GetTopicAttributesResult call() throws Exception { GetTopicAttributesResult result = null; try { result = getTopicAttributes(getTopicAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(getTopicAttributesRequest, result); return result; } }); } /** * <p> * Lists the endpoints and endpoint attributes for devices in a supported * push notification service, such as GCM and APNS. The results for * <code>ListEndpointsByPlatformApplication</code> are paginated and return * a limited list of endpoints, up to 100. If additional records are * available after the first page results, then a NextToken string will be * returned. To receive the next page, you call * <code>ListEndpointsByPlatformApplication</code> again using the NextToken * string received from the previous call. When there are no more records to * return, NextToken will be null. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param listEndpointsByPlatformApplicationRequest <p> * Input for ListEndpointsByPlatformApplication action. * </p> * @return A Java Future object containing the response from the * ListEndpointsByPlatformApplication service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListEndpointsByPlatformApplicationResult> listEndpointsByPlatformApplicationAsync( final ListEndpointsByPlatformApplicationRequest listEndpointsByPlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListEndpointsByPlatformApplicationResult>() { public ListEndpointsByPlatformApplicationResult call() throws Exception { return listEndpointsByPlatformApplication(listEndpointsByPlatformApplicationRequest); } }); } /** * <p> * Lists the endpoints and endpoint attributes for devices in a supported * push notification service, such as GCM and APNS. The results for * <code>ListEndpointsByPlatformApplication</code> are paginated and return * a limited list of endpoints, up to 100. If additional records are * available after the first page results, then a NextToken string will be * returned. To receive the next page, you call * <code>ListEndpointsByPlatformApplication</code> again using the NextToken * string received from the previous call. When there are no more records to * return, NextToken will be null. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param listEndpointsByPlatformApplicationRequest <p> * Input for ListEndpointsByPlatformApplication action. * </p> * @return A Java Future object containing the response from the * ListEndpointsByPlatformApplication service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListEndpointsByPlatformApplicationResult> listEndpointsByPlatformApplicationAsync( final ListEndpointsByPlatformApplicationRequest listEndpointsByPlatformApplicationRequest, final AsyncHandler<ListEndpointsByPlatformApplicationRequest, ListEndpointsByPlatformApplicationResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListEndpointsByPlatformApplicationResult>() { public ListEndpointsByPlatformApplicationResult call() throws Exception { ListEndpointsByPlatformApplicationResult result = null; try { result = listEndpointsByPlatformApplication(listEndpointsByPlatformApplicationRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listEndpointsByPlatformApplicationRequest, result); return result; } }); } /** * <p> * Returns a list of phone numbers that are opted out, meaning you cannot * send SMS messages to them. * </p> * <p> * The results for <code>ListPhoneNumbersOptedOut</code> are paginated, and * each page returns up to 100 phone numbers. If additional phone numbers * are available after the first page of results, then a * <code>NextToken</code> string will be returned. To receive the next page, * you call <code>ListPhoneNumbersOptedOut</code> again using the * <code>NextToken</code> string received from the previous call. When there * are no more records to return, <code>NextToken</code> will be null. * </p> * * @param listPhoneNumbersOptedOutRequest <p> * The input for the <code>ListPhoneNumbersOptedOut</code> * action. * </p> * @return A Java Future object containing the response from the * ListPhoneNumbersOptedOut service method, as returned by Amazon * Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListPhoneNumbersOptedOutResult> listPhoneNumbersOptedOutAsync( final ListPhoneNumbersOptedOutRequest listPhoneNumbersOptedOutRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListPhoneNumbersOptedOutResult>() { public ListPhoneNumbersOptedOutResult call() throws Exception { return listPhoneNumbersOptedOut(listPhoneNumbersOptedOutRequest); } }); } /** * <p> * Returns a list of phone numbers that are opted out, meaning you cannot * send SMS messages to them. * </p> * <p> * The results for <code>ListPhoneNumbersOptedOut</code> are paginated, and * each page returns up to 100 phone numbers. If additional phone numbers * are available after the first page of results, then a * <code>NextToken</code> string will be returned. To receive the next page, * you call <code>ListPhoneNumbersOptedOut</code> again using the * <code>NextToken</code> string received from the previous call. When there * are no more records to return, <code>NextToken</code> will be null. * </p> * * @param listPhoneNumbersOptedOutRequest <p> * The input for the <code>ListPhoneNumbersOptedOut</code> * action. * </p> * @return A Java Future object containing the response from the * ListPhoneNumbersOptedOut service method, as returned by Amazon * Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListPhoneNumbersOptedOutResult> listPhoneNumbersOptedOutAsync( final ListPhoneNumbersOptedOutRequest listPhoneNumbersOptedOutRequest, final AsyncHandler<ListPhoneNumbersOptedOutRequest, ListPhoneNumbersOptedOutResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListPhoneNumbersOptedOutResult>() { public ListPhoneNumbersOptedOutResult call() throws Exception { ListPhoneNumbersOptedOutResult result = null; try { result = listPhoneNumbersOptedOut(listPhoneNumbersOptedOutRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listPhoneNumbersOptedOutRequest, result); return result; } }); } /** * <p> * Lists the platform application objects for the supported push * notification services, such as APNS and GCM. The results for * <code>ListPlatformApplications</code> are paginated and return a limited * list of applications, up to 100. If additional records are available * after the first page results, then a NextToken string will be returned. * To receive the next page, you call <code>ListPlatformApplications</code> * using the NextToken string received from the previous call. When there * are no more records to return, NextToken will be null. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param listPlatformApplicationsRequest <p> * Input for ListPlatformApplications action. * </p> * @return A Java Future object containing the response from the * ListPlatformApplications service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListPlatformApplicationsResult> listPlatformApplicationsAsync( final ListPlatformApplicationsRequest listPlatformApplicationsRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListPlatformApplicationsResult>() { public ListPlatformApplicationsResult call() throws Exception { return listPlatformApplications(listPlatformApplicationsRequest); } }); } /** * <p> * Lists the platform application objects for the supported push * notification services, such as APNS and GCM. The results for * <code>ListPlatformApplications</code> are paginated and return a limited * list of applications, up to 100. If additional records are available * after the first page results, then a NextToken string will be returned. * To receive the next page, you call <code>ListPlatformApplications</code> * using the NextToken string received from the previous call. When there * are no more records to return, NextToken will be null. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param listPlatformApplicationsRequest <p> * Input for ListPlatformApplications action. * </p> * @return A Java Future object containing the response from the * ListPlatformApplications service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListPlatformApplicationsResult> listPlatformApplicationsAsync( final ListPlatformApplicationsRequest listPlatformApplicationsRequest, final AsyncHandler<ListPlatformApplicationsRequest, ListPlatformApplicationsResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListPlatformApplicationsResult>() { public ListPlatformApplicationsResult call() throws Exception { ListPlatformApplicationsResult result = null; try { result = listPlatformApplications(listPlatformApplicationsRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listPlatformApplicationsRequest, result); return result; } }); } /** * <p> * Returns a list of the requester's subscriptions. Each call returns a * limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new <code>ListSubscriptions</code> * call to get further results. * </p> * * @param listSubscriptionsRequest <p> * Input for ListSubscriptions action. * </p> * @return A Java Future object containing the response from the * ListSubscriptions service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListSubscriptionsResult> listSubscriptionsAsync( final ListSubscriptionsRequest listSubscriptionsRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListSubscriptionsResult>() { public ListSubscriptionsResult call() throws Exception { return listSubscriptions(listSubscriptionsRequest); } }); } /** * <p> * Returns a list of the requester's subscriptions. Each call returns a * limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new <code>ListSubscriptions</code> * call to get further results. * </p> * * @param listSubscriptionsRequest <p> * Input for ListSubscriptions action. * </p> * @return A Java Future object containing the response from the * ListSubscriptions service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListSubscriptionsResult> listSubscriptionsAsync( final ListSubscriptionsRequest listSubscriptionsRequest, final AsyncHandler<ListSubscriptionsRequest, ListSubscriptionsResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListSubscriptionsResult>() { public ListSubscriptionsResult call() throws Exception { ListSubscriptionsResult result = null; try { result = listSubscriptions(listSubscriptionsRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listSubscriptionsRequest, result); return result; } }); } /** * <p> * Returns a list of the subscriptions to a specific topic. Each call * returns a limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new * <code>ListSubscriptionsByTopic</code> call to get further results. * </p> * * @param listSubscriptionsByTopicRequest <p> * Input for ListSubscriptionsByTopic action. * </p> * @return A Java Future object containing the response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListSubscriptionsByTopicResult> listSubscriptionsByTopicAsync( final ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListSubscriptionsByTopicResult>() { public ListSubscriptionsByTopicResult call() throws Exception { return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } }); } /** * <p> * Returns a list of the subscriptions to a specific topic. Each call * returns a limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new * <code>ListSubscriptionsByTopic</code> call to get further results. * </p> * * @param listSubscriptionsByTopicRequest <p> * Input for ListSubscriptionsByTopic action. * </p> * @return A Java Future object containing the response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListSubscriptionsByTopicResult> listSubscriptionsByTopicAsync( final ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest, final AsyncHandler<ListSubscriptionsByTopicRequest, ListSubscriptionsByTopicResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListSubscriptionsByTopicResult>() { public ListSubscriptionsByTopicResult call() throws Exception { ListSubscriptionsByTopicResult result = null; try { result = listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listSubscriptionsByTopicRequest, result); return result; } }); } /** * <p> * Returns a list of the requester's topics. Each call returns a limited * list of topics, up to 100. If there are more topics, a * <code>NextToken</code> is also returned. Use the <code>NextToken</code> * parameter in a new <code>ListTopics</code> call to get further results. * </p> * * @param listTopicsRequest * @return A Java Future object containing the response from the ListTopics * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListTopicsResult> listTopicsAsync(final ListTopicsRequest listTopicsRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListTopicsResult>() { public ListTopicsResult call() throws Exception { return listTopics(listTopicsRequest); } }); } /** * <p> * Returns a list of the requester's topics. Each call returns a limited * list of topics, up to 100. If there are more topics, a * <code>NextToken</code> is also returned. Use the <code>NextToken</code> * parameter in a new <code>ListTopics</code> call to get further results. * </p> * * @param listTopicsRequest * @return A Java Future object containing the response from the ListTopics * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<ListTopicsResult> listTopicsAsync(final ListTopicsRequest listTopicsRequest, final AsyncHandler<ListTopicsRequest, ListTopicsResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<ListTopicsResult>() { public ListTopicsResult call() throws Exception { ListTopicsResult result = null; try { result = listTopics(listTopicsRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(listTopicsRequest, result); return result; } }); } /** * <p> * Use this request to opt in a phone number that is opted out, which * enables you to resume sending SMS messages to the number. * </p> * <p> * You can opt in a phone number only once every 30 days. * </p> * * @param optInPhoneNumberRequest <p> * Input for the OptInPhoneNumber action. * </p> * @return A Java Future object containing the response from the * OptInPhoneNumber service method, as returned by Amazon Simple * Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<OptInPhoneNumberResult> optInPhoneNumberAsync( final OptInPhoneNumberRequest optInPhoneNumberRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<OptInPhoneNumberResult>() { public OptInPhoneNumberResult call() throws Exception { return optInPhoneNumber(optInPhoneNumberRequest); } }); } /** * <p> * Use this request to opt in a phone number that is opted out, which * enables you to resume sending SMS messages to the number. * </p> * <p> * You can opt in a phone number only once every 30 days. * </p> * * @param optInPhoneNumberRequest <p> * Input for the OptInPhoneNumber action. * </p> * @return A Java Future object containing the response from the * OptInPhoneNumber service method, as returned by Amazon Simple * Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<OptInPhoneNumberResult> optInPhoneNumberAsync( final OptInPhoneNumberRequest optInPhoneNumberRequest, final AsyncHandler<OptInPhoneNumberRequest, OptInPhoneNumberResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<OptInPhoneNumberResult>() { public OptInPhoneNumberResult call() throws Exception { OptInPhoneNumberResult result = null; try { result = optInPhoneNumber(optInPhoneNumberRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(optInPhoneNumberRequest, result); return result; } }); } /** * <p> * Sends a message to all of a topic's subscribed endpoints. When a * <code>messageId</code> is returned, the message has been saved and Amazon * SNS will attempt to deliver it to the topic's subscribers shortly. The * format of the outgoing message to each subscribed endpoint depends on the * notification protocol. * </p> * <p> * To use the <code>Publish</code> action for sending a message to a mobile * endpoint, such as an app on a Kindle device or mobile phone, you must * specify the EndpointArn for the TargetArn parameter. The EndpointArn is * returned when making a call with the <code>CreatePlatformEndpoint</code> * action. The second example below shows a request and response for * publishing to a mobile endpoint. * </p> * <p> * For more information about formatting messages, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html" * >Send Custom Platform-Specific Payloads in Messages to Mobile * Devices</a>. * </p> * * @param publishRequest <p> * Input for Publish action. * </p> * @return A Java Future object containing the response from the Publish * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<PublishResult> publishAsync(final PublishRequest publishRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<PublishResult>() { public PublishResult call() throws Exception { return publish(publishRequest); } }); } /** * <p> * Sends a message to all of a topic's subscribed endpoints. When a * <code>messageId</code> is returned, the message has been saved and Amazon * SNS will attempt to deliver it to the topic's subscribers shortly. The * format of the outgoing message to each subscribed endpoint depends on the * notification protocol. * </p> * <p> * To use the <code>Publish</code> action for sending a message to a mobile * endpoint, such as an app on a Kindle device or mobile phone, you must * specify the EndpointArn for the TargetArn parameter. The EndpointArn is * returned when making a call with the <code>CreatePlatformEndpoint</code> * action. The second example below shows a request and response for * publishing to a mobile endpoint. * </p> * <p> * For more information about formatting messages, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html" * >Send Custom Platform-Specific Payloads in Messages to Mobile * Devices</a>. * </p> * * @param publishRequest <p> * Input for Publish action. * </p> * @return A Java Future object containing the response from the Publish * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<PublishResult> publishAsync(final PublishRequest publishRequest, final AsyncHandler<PublishRequest, PublishResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<PublishResult>() { public PublishResult call() throws Exception { PublishResult result = null; try { result = publish(publishRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(publishRequest, result); return result; } }); } /** * <p> * Removes a statement from a topic's access control policy. * </p> * * @param removePermissionRequest <p> * Input for RemovePermission action. * </p> * @return A Java Future object containing the response from the * RemovePermission service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> removePermissionAsync(final RemovePermissionRequest removePermissionRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { removePermission(removePermissionRequest); return null; } }); } /** * <p> * Removes a statement from a topic's access control policy. * </p> * * @param removePermissionRequest <p> * Input for RemovePermission action. * </p> * @return A Java Future object containing the response from the * RemovePermission service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> removePermissionAsync( final RemovePermissionRequest removePermissionRequest, final AsyncHandler<RemovePermissionRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { removePermission(removePermissionRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(removePermissionRequest, result); return result; } }); } /** * <p> * Sets the attributes for an endpoint for a device on one of the supported * push notification services, such as GCM and APNS. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param setEndpointAttributesRequest <p> * Input for SetEndpointAttributes action. * </p> * @return A Java Future object containing the response from the * SetEndpointAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setEndpointAttributesAsync( final SetEndpointAttributesRequest setEndpointAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { setEndpointAttributes(setEndpointAttributesRequest); return null; } }); } /** * <p> * Sets the attributes for an endpoint for a device on one of the supported * push notification services, such as GCM and APNS. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param setEndpointAttributesRequest <p> * Input for SetEndpointAttributes action. * </p> * @return A Java Future object containing the response from the * SetEndpointAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setEndpointAttributesAsync( final SetEndpointAttributesRequest setEndpointAttributesRequest, final AsyncHandler<SetEndpointAttributesRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { setEndpointAttributes(setEndpointAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(setEndpointAttributesRequest, result); return result; } }); } /** * <p> * Sets the attributes of the platform application object for the supported * push notification services, such as APNS and GCM. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. For information on configuring * attributes for message delivery status, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/sns-msg-status.html">Using * Amazon SNS Application Attributes for Message Delivery Status</a>. * </p> * * @param setPlatformApplicationAttributesRequest <p> * Input for SetPlatformApplicationAttributes action. * </p> * @return A Java Future object containing the response from the * SetPlatformApplicationAttributes service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setPlatformApplicationAttributesAsync( final SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest); return null; } }); } /** * <p> * Sets the attributes of the platform application object for the supported * push notification services, such as APNS and GCM. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. For information on configuring * attributes for message delivery status, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/sns-msg-status.html">Using * Amazon SNS Application Attributes for Message Delivery Status</a>. * </p> * * @param setPlatformApplicationAttributesRequest <p> * Input for SetPlatformApplicationAttributes action. * </p> * @return A Java Future object containing the response from the * SetPlatformApplicationAttributes service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setPlatformApplicationAttributesAsync( final SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest, final AsyncHandler<SetPlatformApplicationAttributesRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(setPlatformApplicationAttributesRequest, result); return result; } }); } /** * <p> * Use this request to set the default settings for sending SMS messages and * receiving daily SMS usage reports. * </p> * <p> * You can override some of these settings for a single message when you use * the <code>Publish</code> action with the * <code>MessageAttributes.entry.N</code> parameter. For more information, * see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html" * >Sending an SMS Message</a> in the <i>Amazon SNS Developer Guide</i>. * </p> * * @param setSMSAttributesRequest <p> * The input for the SetSMSAttributes action. * </p> * @return A Java Future object containing the response from the * SetSMSAttributes service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws ThrottledException * @throws InternalErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<SetSMSAttributesResult> setSMSAttributesAsync( final SetSMSAttributesRequest setSMSAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<SetSMSAttributesResult>() { public SetSMSAttributesResult call() throws Exception { return setSMSAttributes(setSMSAttributesRequest); } }); } /** * <p> * Use this request to set the default settings for sending SMS messages and * receiving daily SMS usage reports. * </p> * <p> * You can override some of these settings for a single message when you use * the <code>Publish</code> action with the * <code>MessageAttributes.entry.N</code> parameter. For more information, * see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html" * >Sending an SMS Message</a> in the <i>Amazon SNS Developer Guide</i>. * </p> * * @param setSMSAttributesRequest <p> * The input for the SetSMSAttributes action. * </p> * @return A Java Future object containing the response from the * SetSMSAttributes service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws ThrottledException * @throws InternalErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<SetSMSAttributesResult> setSMSAttributesAsync( final SetSMSAttributesRequest setSMSAttributesRequest, final AsyncHandler<SetSMSAttributesRequest, SetSMSAttributesResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<SetSMSAttributesResult>() { public SetSMSAttributesResult call() throws Exception { SetSMSAttributesResult result = null; try { result = setSMSAttributes(setSMSAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(setSMSAttributesRequest, result); return result; } }); } /** * <p> * Allows a subscription owner to set an attribute of the topic to a new * value. * </p> * * @param setSubscriptionAttributesRequest <p> * Input for SetSubscriptionAttributes action. * </p> * @return A Java Future object containing the response from the * SetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setSubscriptionAttributesAsync( final SetSubscriptionAttributesRequest setSubscriptionAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { setSubscriptionAttributes(setSubscriptionAttributesRequest); return null; } }); } /** * <p> * Allows a subscription owner to set an attribute of the topic to a new * value. * </p> * * @param setSubscriptionAttributesRequest <p> * Input for SetSubscriptionAttributes action. * </p> * @return A Java Future object containing the response from the * SetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setSubscriptionAttributesAsync( final SetSubscriptionAttributesRequest setSubscriptionAttributesRequest, final AsyncHandler<SetSubscriptionAttributesRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { setSubscriptionAttributes(setSubscriptionAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(setSubscriptionAttributesRequest, result); return result; } }); } /** * <p> * Allows a topic owner to set an attribute of the topic to a new value. * </p> * * @param setTopicAttributesRequest <p> * Input for SetTopicAttributes action. * </p> * @return A Java Future object containing the response from the * SetTopicAttributes service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setTopicAttributesAsync( final SetTopicAttributesRequest setTopicAttributesRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { setTopicAttributes(setTopicAttributesRequest); return null; } }); } /** * <p> * Allows a topic owner to set an attribute of the topic to a new value. * </p> * * @param setTopicAttributesRequest <p> * Input for SetTopicAttributes action. * </p> * @return A Java Future object containing the response from the * SetTopicAttributes service method, as returned by Amazon Simple * Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> setTopicAttributesAsync( final SetTopicAttributesRequest setTopicAttributesRequest, final AsyncHandler<SetTopicAttributesRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { setTopicAttributes(setTopicAttributesRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(setTopicAttributesRequest, result); return result; } }); } /** * <p> * Prepares to subscribe an endpoint by sending the endpoint a confirmation * message. To actually create a subscription, the endpoint owner must call * the <code>ConfirmSubscription</code> action with the token from the * confirmation message. Confirmation tokens are valid for three days. * </p> * * @param subscribeRequest <p> * Input for Subscribe action. * </p> * @return A Java Future object containing the response from the Subscribe * service method, as returned by Amazon Simple Notification * Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<SubscribeResult> subscribeAsync(final SubscribeRequest subscribeRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<SubscribeResult>() { public SubscribeResult call() throws Exception { return subscribe(subscribeRequest); } }); } /** * <p> * Prepares to subscribe an endpoint by sending the endpoint a confirmation * message. To actually create a subscription, the endpoint owner must call * the <code>ConfirmSubscription</code> action with the token from the * confirmation message. Confirmation tokens are valid for three days. * </p> * * @param subscribeRequest <p> * Input for Subscribe action. * </p> * @return A Java Future object containing the response from the Subscribe * service method, as returned by Amazon Simple Notification * Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<SubscribeResult> subscribeAsync(final SubscribeRequest subscribeRequest, final AsyncHandler<SubscribeRequest, SubscribeResult> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<SubscribeResult>() { public SubscribeResult call() throws Exception { SubscribeResult result = null; try { result = subscribe(subscribeRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(subscribeRequest, result); return result; } }); } /** * <p> * Deletes a subscription. If the subscription requires authentication for * deletion, only the owner of the subscription or the topic's owner can * unsubscribe, and an AWS signature is required. If the * <code>Unsubscribe</code> call does not require authentication and the * requester is not the subscription owner, a final cancellation message is * delivered to the endpoint, so that the endpoint owner can easily * resubscribe to the topic if the <code>Unsubscribe</code> request was * unintended. * </p> * * @param unsubscribeRequest <p> * Input for Unsubscribe action. * </p> * @return A Java Future object containing the response from the Unsubscribe * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> unsubscribeAsync(final UnsubscribeRequest unsubscribeRequest) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { unsubscribe(unsubscribeRequest); return null; } }); } /** * <p> * Deletes a subscription. If the subscription requires authentication for * deletion, only the owner of the subscription or the topic's owner can * unsubscribe, and an AWS signature is required. If the * <code>Unsubscribe</code> call does not require authentication and the * requester is not the subscription owner, a final cancellation message is * delivered to the endpoint, so that the endpoint owner can easily * resubscribe to the topic if the <code>Unsubscribe</code> request was * unintended. * </p> * * @param unsubscribeRequest <p> * Input for Unsubscribe action. * </p> * @return A Java Future object containing the response from the Unsubscribe * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public Future<Void> unsubscribeAsync(final UnsubscribeRequest unsubscribeRequest, final AsyncHandler<UnsubscribeRequest, Void> asyncHandler) throws AmazonServiceException, AmazonClientException { return executorService.submit(new Callable<Void>() { public Void call() throws Exception { Void result = null; try { unsubscribe(unsubscribeRequest); } catch (Exception ex) { asyncHandler.onError(ex); throw ex; } asyncHandler.onSuccess(unsubscribeRequest, result); return result; } }); } }