/* * Copyright 2010 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.Future; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.sns.model.*; /** * Interface for accessing AmazonSNS asynchronously, * using Java Futures. * Amazon Simple Notification Service */ public interface AmazonSNSAsync extends AmazonSNS { /** * <p> * The ConfirmSubscription action verifies an endpoint owner's intent to * receive messages by validating the token sent to the endpoint by an * earlier Subscribe 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 AuthenticateOnUnsubscribe flag * is set to "true". * </p> * * @param confirmSubscriptionRequest Container for the necessary * parameters to execute the ConfirmSubscription operation on AmazonSNS. * * @return A Java Future object containing the response from the * ConfirmSubscription service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<ConfirmSubscriptionResult> confirmSubscriptionAsync(ConfirmSubscriptionRequest confirmSubscriptionRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The GetTopicAttribtues action returns all of the properties of a topic * customers have created. Topic properties returned might differ based * on the authorization of the user. * </p> * * @param getTopicAttributesRequest Container for the necessary * parameters to execute the GetTopicAttributes operation on AmazonSNS. * * @return A Java Future object containing the response from the * GetTopicAttributes service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<GetTopicAttributesResult> getTopicAttributesAsync(GetTopicAttributesRequest getTopicAttributesRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The Subscribe action prepares to subscribe an endpoint by sending the * endpoint a confirmation message. To actually create a subscription, * the endpoint owner must call the ConfirmSubscription action with the * token from the confirmation message. Confirmation tokens are valid for * twenty-four hours. * </p> * * @param subscribeRequest Container for the necessary parameters to * execute the Subscribe operation on AmazonSNS. * * @return A Java Future object containing the response from the * Subscribe service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<SubscribeResult> subscribeAsync(SubscribeRequest subscribeRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The SetTopicAttributes action allows a topic owner to set an attribute * of the topic to a new value. * </p> * * @param setTopicAttributesRequest Container for the necessary * parameters to execute the SetTopicAttributes operation on AmazonSNS. * * @return A Java Future object containing the response from the * SetTopicAttributes service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<Void> setTopicAttributesAsync(SetTopicAttributesRequest setTopicAttributesRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The DeleteTopic action 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 will not result in an error. * </p> * * @param deleteTopicRequest Container for the necessary parameters to * execute the DeleteTopic operation on AmazonSNS. * * @return A Java Future object containing the response from the * DeleteTopic service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<Void> deleteTopicAsync(DeleteTopicRequest deleteTopicRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The RemovePermission action removes a statement from a topic's access * control policy. * </p> * * @param removePermissionRequest Container for the necessary parameters * to execute the RemovePermission operation on AmazonSNS. * * @return A Java Future object containing the response from the * RemovePermission service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<Void> removePermissionAsync(RemovePermissionRequest removePermissionRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The ListSubscriptions action returns a list of the requester's * subscriptions. Each call returns a limited list of subscriptions. If * there are more subscriptions, a NextToken is also returned. Use the * NextToken parameter in a new ListSubscriptions call to get further * results. * </p> * * @param listSubscriptionsRequest Container for the necessary parameters * to execute the ListSubscriptions operation on AmazonSNS. * * @return A Java Future object containing the response from the * ListSubscriptions service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<ListSubscriptionsResult> listSubscriptionsAsync(ListSubscriptionsRequest listSubscriptionsRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The AddPermission action adds a statement to a topic's access control * policy, granting access for the specified AWS accounts to the * specified actions. * </p> * * @param addPermissionRequest Container for the necessary parameters to * execute the AddPermission operation on AmazonSNS. * * @return A Java Future object containing the response from the * AddPermission service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<Void> addPermissionAsync(AddPermissionRequest addPermissionRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The CreateTopic action creates a topic to which notifications can be * published. Users can create at most 25 topics. This action is * idempotent, so if the requester already owns a topic with the * specified name, that topic's ARN will be returned without creating a * new topic. * </p> * * @param createTopicRequest Container for the necessary parameters to * execute the CreateTopic operation on AmazonSNS. * * @return A Java Future object containing the response from the * CreateTopic service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<CreateTopicResult> createTopicAsync(CreateTopicRequest createTopicRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The ListTopics action returns a list of the requester's topics. Each * call returns a limited list of topics. If there are more topics, a * NextToken is also returned. Use the NextToken parameter in a new * ListTopics call to get further results. * </p> * * @param listTopicsRequest Container for the necessary parameters to * execute the ListTopics operation on AmazonSNS. * * @return A Java Future object containing the response from the * ListTopics service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<ListTopicsResult> listTopicsAsync(ListTopicsRequest listTopicsRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The Unsubscribe action deletes a subscription. If the subscription * requires authentication for deletion, only the owner of the * subscription or the its topic's owner can unsubscribe, and an AWS * signature is required. If the Unsubscribe 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 Unsubscribe * request was unintended. * </p> * * @param unsubscribeRequest Container for the necessary parameters to * execute the Unsubscribe operation on AmazonSNS. * * @return A Java Future object containing the response from the * Unsubscribe service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<Void> unsubscribeAsync(UnsubscribeRequest unsubscribeRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The ListSubscriptionsByTopic action returns a list of the * subscriptions to a specific topic. Each call returns a limited list of * subscriptions. If there are more subscriptions, a NextToken is also * returned. Use the NextToken parameter in a new * ListSubscriptionsByTopic call to get further results. * </p> * * @param listSubscriptionsByTopicRequest Container for the necessary * parameters to execute the ListSubscriptionsByTopic operation on * AmazonSNS. * * @return A Java Future object containing the response from the * ListSubscriptionsByTopic service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<ListSubscriptionsByTopicResult> listSubscriptionsByTopicAsync(ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest) throws AmazonServiceException, AmazonClientException; /** * <p> * The Publish action sends a message to all of a topic's subscribed * endpoints. When a messageId 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 selected. * </p> * * @param publishRequest Container for the necessary parameters to * execute the Publish operation on AmazonSNS. * * @return A Java Future object containing the response from the Publish * service method, as returned by AmazonSNS. * * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public Future<PublishResult> publishAsync(PublishRequest publishRequest) throws AmazonServiceException, AmazonClientException; }