All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.sns.AmazonSNSClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon SNS module holds the client classes that is used for communicating with Amazon Simple Notification Service

There is a newer version: 1.12.770
Show newest version
/*
 * Copyright 2010-2014 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 org.w3c.dom.*;

import java.net.*;
import java.util.*;
import java.util.Map.Entry;

import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.handlers.*;
import com.amazonaws.http.*;
import com.amazonaws.internal.*;
import com.amazonaws.metrics.*;
import com.amazonaws.regions.*;
import com.amazonaws.transform.*;
import com.amazonaws.util.*;
import com.amazonaws.util.AWSRequestMetrics.Field;

import com.amazonaws.services.sns.model.*;
import com.amazonaws.services.sns.model.transform.*;

/**
 * Client for accessing AmazonSNS.  All service calls made
 * using this client are blocking, and will not return until the service call
 * completes.
 * 

* Amazon Simple Notification Service

* 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 * http://aws.amazon.com/sns . For detailed information about Amazon SNS features and their associated API calls, see the Amazon SNS Developer Guide * . *

*

* 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 * Tools for Amazon Web Services * . *

*/ public class AmazonSNSClient extends AmazonWebServiceClient implements AmazonSNS { /** Provider for AWS credentials. */ private AWSCredentialsProvider awsCredentialsProvider; /** * List of exception unmarshallers for all AmazonSNS exceptions. */ protected final List> exceptionUnmarshallers = new ArrayList>(); /** * Constructs a new client to invoke service methods on * AmazonSNS. A credentials provider chain will be used * that searches for credentials in this order: *
    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 metadata service
  • *
* *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ public AmazonSNSClient() { this(new DefaultAWSCredentialsProviderChain(), new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on * AmazonSNS. A credentials provider chain will be used * that searches for credentials in this order: *

    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 metadata service
  • *
* *

* 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 AmazonSNS * (ex: proxy settings, retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain */ public AmazonSNSClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on * AmazonSNS using the specified AWS account credentials. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) to use * when authenticating with AWS services. */ public AmazonSNSClient(AWSCredentials awsCredentials) { this(awsCredentials, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on * AmazonSNS using the specified AWS account credentials * and client configuration options. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) to use * when authenticating with AWS services. * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonSNS * (ex: proxy settings, retry counts, etc.). */ public AmazonSNSClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials); init(); } /** * Constructs a new client to invoke service methods on * AmazonSNS using the specified AWS account credentials provider. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on * AmazonSNS using the specified AWS account credentials * provider and client configuration options. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonSNS * (ex: proxy settings, retry counts, etc.). */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on * AmazonSNS using the specified AWS account credentials * provider, client configuration options, and request metric collector. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonSNS * (ex: proxy settings, retry counts, etc.). * @param requestMetricCollector optional request metric collector */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } private void init() { exceptionUnmarshallers.add(new TopicLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new NotFoundExceptionUnmarshaller()); exceptionUnmarshallers.add(new EndpointDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new PlatformApplicationDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterValueExceptionUnmarshaller()); exceptionUnmarshallers.add(new AuthorizationErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new InternalErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new SubscriptionLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new StandardErrorUnmarshaller()); // calling this.setEndPoint(...) will also modify the signer accordingly this.setEndpoint("sns.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/sns/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/sns/request.handler2s")); } /** *

* 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". *

* * @param confirmSubscriptionRequest Container for the necessary * parameters to execute the ConfirmSubscription service method on * AmazonSNS. * * @return The response from the ConfirmSubscription service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @throws InternalErrorException * @throws SubscriptionLimitExceededException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(ConfirmSubscriptionRequest confirmSubscriptionRequest) { ExecutionContext executionContext = createExecutionContext(confirmSubscriptionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ConfirmSubscriptionRequestMarshaller().marshall(confirmSubscriptionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new ConfirmSubscriptionResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 * CreatePlatformApplication 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 * APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, * PlatformCredential is "API key". For ADM, PlatformCredential is * "client secret". The PlatformApplicationArn that is returned when * using CreatePlatformApplication is then used as an * attribute for the CreatePlatformEndpoint action. For more * information, see * Using Amazon SNS Mobile Push Notifications * . *

* * @param createPlatformApplicationRequest Container for the necessary * parameters to execute the CreatePlatformApplication service method on * AmazonSNS. * * @return The response from the CreatePlatformApplication service * method, as returned by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public CreatePlatformApplicationResult createPlatformApplication(CreatePlatformApplicationRequest createPlatformApplicationRequest) { ExecutionContext executionContext = createExecutionContext(createPlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreatePlatformApplicationRequestMarshaller().marshall(createPlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new CreatePlatformApplicationResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns all of the properties of a topic. Topic properties returned * might differ based on the authorization of the user. *

* * @param getTopicAttributesRequest Container for the necessary * parameters to execute the GetTopicAttributes service method on * AmazonSNS. * * @return The response from the GetTopicAttributes service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public GetTopicAttributesResult getTopicAttributes(GetTopicAttributesRequest getTopicAttributesRequest) { ExecutionContext executionContext = createExecutionContext(getTopicAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetTopicAttributesRequestMarshaller().marshall(getTopicAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new GetTopicAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 * three days. *

* * @param subscribeRequest Container for the necessary parameters to * execute the Subscribe service method on AmazonSNS. * * @return The response from the Subscribe service method, as returned by * AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @throws InternalErrorException * @throws SubscriptionLimitExceededException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public SubscribeResult subscribe(SubscribeRequest subscribeRequest) { ExecutionContext executionContext = createExecutionContext(subscribeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new SubscribeRequestMarshaller().marshall(subscribeRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new SubscribeResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes the endpoint from Amazon SNS. This action is idempotent. For * more information, see * Using Amazon SNS Mobile Push Notifications * . *

* * @param deleteEndpointRequest Container for the necessary parameters to * execute the DeleteEndpoint service method on AmazonSNS. * * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void deleteEndpoint(DeleteEndpointRequest deleteEndpointRequest) { ExecutionContext executionContext = createExecutionContext(deleteEndpointRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new DeleteEndpointRequestMarshaller().marshall(deleteEndpointRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Allows a topic owner to set an attribute of the topic to a new value. *

* * @param setTopicAttributesRequest Container for the necessary * parameters to execute the SetTopicAttributes service method on * AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void setTopicAttributes(SetTopicAttributesRequest setTopicAttributesRequest) { ExecutionContext executionContext = createExecutionContext(setTopicAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new SetTopicAttributesRequestMarshaller().marshall(setTopicAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Removes a statement from a topic's access control policy. *

* * @param removePermissionRequest Container for the necessary parameters * to execute the RemovePermission service method on AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void removePermission(RemovePermissionRequest removePermissionRequest) { ExecutionContext executionContext = createExecutionContext(removePermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new RemovePermissionRequestMarshaller().marshall(removePermissionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Retrieves the endpoint attributes for a device on one of the * supported push notification services, such as GCM and APNS. For more * information, see * Using Amazon SNS Mobile Push Notifications * . *

* * @param getEndpointAttributesRequest Container for the necessary * parameters to execute the GetEndpointAttributes service method on * AmazonSNS. * * @return The response from the GetEndpointAttributes service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public GetEndpointAttributesResult getEndpointAttributes(GetEndpointAttributesRequest getEndpointAttributesRequest) { ExecutionContext executionContext = createExecutionContext(getEndpointAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetEndpointAttributesRequestMarshaller().marshall(getEndpointAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new GetEndpointAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 NextToken is also returned. Use the * NextToken parameter in a new * ListSubscriptions call to get further results. *

* * @param listSubscriptionsRequest Container for the necessary parameters * to execute the ListSubscriptions service method on AmazonSNS. * * @return The response from the ListSubscriptions service method, as * returned by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions(ListSubscriptionsRequest listSubscriptionsRequest) { ExecutionContext executionContext = createExecutionContext(listSubscriptionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListSubscriptionsRequestMarshaller().marshall(listSubscriptionsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new ListSubscriptionsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Creates an endpoint for a device and mobile app on one of the * supported push notification services, such as GCM and APNS. * CreatePlatformEndpoint requires the * PlatformApplicationArn that is returned from * CreatePlatformApplication . The EndpointArn that is * returned when using CreatePlatformEndpoint can then be * used by the Publish action to send a message to a mobile * app or by the Subscribe action for subscription to a * topic. The CreatePlatformEndpoint 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 * Using Amazon SNS Mobile Push Notifications * . *

*

* When using CreatePlatformEndpoint with Baidu, two * attributes must be provided: ChannelId and UserId. The token field * must also contain the ChannelId. For more information, see * Creating an Amazon SNS Endpoint for Baidu * . *

* * @param createPlatformEndpointRequest Container for the necessary * parameters to execute the CreatePlatformEndpoint service method on * AmazonSNS. * * @return The response from the CreatePlatformEndpoint service method, * as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public CreatePlatformEndpointResult createPlatformEndpoint(CreatePlatformEndpointRequest createPlatformEndpointRequest) { ExecutionContext executionContext = createExecutionContext(createPlatformEndpointRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreatePlatformEndpointRequestMarshaller().marshall(createPlatformEndpointRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new CreatePlatformEndpointResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Allows a subscription owner to set an attribute of the topic to a new * value. *

* * @param setSubscriptionAttributesRequest Container for the necessary * parameters to execute the SetSubscriptionAttributes service method on * AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void setSubscriptionAttributes(SetSubscriptionAttributesRequest setSubscriptionAttributesRequest) { ExecutionContext executionContext = createExecutionContext(setSubscriptionAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new SetSubscriptionAttributesRequestMarshaller().marshall(setSubscriptionAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Creates a topic to which notifications can be published. Users can * create at most 3000 topics. For more information, see * http://aws.amazon.com/sns * . 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. *

* * @param createTopicRequest Container for the necessary parameters to * execute the CreateTopic service method on AmazonSNS. * * @return The response from the CreateTopic service method, as returned * by AmazonSNS. * * @throws AuthorizationErrorException * @throws InternalErrorException * @throws InvalidParameterException * @throws TopicLimitExceededException * * @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 CreateTopicResult createTopic(CreateTopicRequest createTopicRequest) { ExecutionContext executionContext = createExecutionContext(createTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateTopicRequestMarshaller().marshall(createTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new CreateTopicResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns all of the properties of a subscription. *

* * @param getSubscriptionAttributesRequest Container for the necessary * parameters to execute the GetSubscriptionAttributes service method on * AmazonSNS. * * @return The response from the GetSubscriptionAttributes service * method, as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public GetSubscriptionAttributesResult getSubscriptionAttributes(GetSubscriptionAttributesRequest getSubscriptionAttributesRequest) { ExecutionContext executionContext = createExecutionContext(getSubscriptionAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetSubscriptionAttributesRequestMarshaller().marshall(getSubscriptionAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new GetSubscriptionAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 * NextToken is also returned. Use the * NextToken parameter in a new ListTopics call * to get further results. *

* * @param listTopicsRequest Container for the necessary parameters to * execute the ListTopics service method on AmazonSNS. * * @return The response from the ListTopics service method, as returned * by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListTopicsResult listTopics(ListTopicsRequest listTopicsRequest) { ExecutionContext executionContext = createExecutionContext(listTopicsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListTopicsRequestMarshaller().marshall(listTopicsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new ListTopicsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes a platform application object for one of the supported push * notification services, such as APNS and GCM. For more information, see * Using Amazon SNS Mobile Push Notifications * . *

* * @param deletePlatformApplicationRequest Container for the necessary * parameters to execute the DeletePlatformApplication service method on * AmazonSNS. * * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void deletePlatformApplication(DeletePlatformApplicationRequest deletePlatformApplicationRequest) { ExecutionContext executionContext = createExecutionContext(deletePlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new DeletePlatformApplicationRequestMarshaller().marshall(deletePlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Lists the platform application objects for the supported push * notification services, such as APNS and GCM. The results for * ListPlatformApplications 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 * ListPlatformApplications 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 * Using Amazon SNS Mobile Push Notifications * . *

* * @param listPlatformApplicationsRequest Container for the necessary * parameters to execute the ListPlatformApplications service method on * AmazonSNS. * * @return The response from the ListPlatformApplications service method, * as returned by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListPlatformApplicationsResult listPlatformApplications(ListPlatformApplicationsRequest listPlatformApplicationsRequest) { ExecutionContext executionContext = createExecutionContext(listPlatformApplicationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListPlatformApplicationsRequestMarshaller().marshall(listPlatformApplicationsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new ListPlatformApplicationsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 * Using Amazon SNS Mobile Push Notifications * . *

* * @param setEndpointAttributesRequest Container for the necessary * parameters to execute the SetEndpointAttributes service method on * AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void setEndpointAttributes(SetEndpointAttributesRequest setEndpointAttributesRequest) { ExecutionContext executionContext = createExecutionContext(setEndpointAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new SetEndpointAttributesRequestMarshaller().marshall(setEndpointAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* 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 * 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. *

* * @param unsubscribeRequest Container for the necessary parameters to * execute the Unsubscribe service method on AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void unsubscribe(UnsubscribeRequest unsubscribeRequest) { ExecutionContext executionContext = createExecutionContext(unsubscribeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new UnsubscribeRequestMarshaller().marshall(unsubscribeRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* 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. *

* * @param deleteTopicRequest Container for the necessary parameters to * execute the DeleteTopic service method on AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void deleteTopic(DeleteTopicRequest deleteTopicRequest) { ExecutionContext executionContext = createExecutionContext(deleteTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new DeleteTopicRequestMarshaller().marshall(deleteTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Retrieves the attributes of the platform application object for the * supported push notification services, such as APNS and GCM. For more * information, see * Using Amazon SNS Mobile Push Notifications * . *

* * @param getPlatformApplicationAttributesRequest Container for the * necessary parameters to execute the GetPlatformApplicationAttributes * service method on AmazonSNS. * * @return The response from the GetPlatformApplicationAttributes service * method, as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public GetPlatformApplicationAttributesResult getPlatformApplicationAttributes(GetPlatformApplicationAttributesRequest getPlatformApplicationAttributesRequest) { ExecutionContext executionContext = createExecutionContext(getPlatformApplicationAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetPlatformApplicationAttributesRequestMarshaller().marshall(getPlatformApplicationAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new GetPlatformApplicationAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Sets the attributes of the platform application object for the * supported push notification services, such as APNS and GCM. For more * information, see * Using Amazon SNS Mobile Push Notifications * . *

* * @param setPlatformApplicationAttributesRequest Container for the * necessary parameters to execute the SetPlatformApplicationAttributes * service method on AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void setPlatformApplicationAttributes(SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest) { ExecutionContext executionContext = createExecutionContext(setPlatformApplicationAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new SetPlatformApplicationAttributesRequestMarshaller().marshall(setPlatformApplicationAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Adds a statement to a topic's access control policy, granting access * for the specified AWS accounts to the specified actions. *

* * @param addPermissionRequest Container for the necessary parameters to * execute the AddPermission service method on AmazonSNS. * * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void addPermission(AddPermissionRequest addPermissionRequest) { ExecutionContext executionContext = createExecutionContext(addPermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = null; awsRequestMetrics.startEvent(Field.ClientExecuteTime); try { request = new AddPermissionRequestMarshaller().marshall(addPermissionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, null); } } /** *

* Lists the endpoints and endpoint attributes for devices in a * supported push notification service, such as GCM and APNS. The results * for ListEndpointsByPlatformApplication 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 * ListEndpointsByPlatformApplication 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 * Using Amazon SNS Mobile Push Notifications * . *

* * @param listEndpointsByPlatformApplicationRequest Container for the * necessary parameters to execute the ListEndpointsByPlatformApplication * service method on AmazonSNS. * * @return The response from the ListEndpointsByPlatformApplication * service method, as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListEndpointsByPlatformApplicationResult listEndpointsByPlatformApplication(ListEndpointsByPlatformApplicationRequest listEndpointsByPlatformApplicationRequest) { ExecutionContext executionContext = createExecutionContext(listEndpointsByPlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListEndpointsByPlatformApplicationRequestMarshaller().marshall(listEndpointsByPlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new ListEndpointsByPlatformApplicationResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 NextToken is also returned. Use the * NextToken parameter in a new * ListSubscriptionsByTopic call to get further results. *

* * @param listSubscriptionsByTopicRequest Container for the necessary * parameters to execute the ListSubscriptionsByTopic service method on * AmazonSNS. * * @return The response from the ListSubscriptionsByTopic service method, * as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest) { ExecutionContext executionContext = createExecutionContext(listSubscriptionsByTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListSubscriptionsByTopicRequestMarshaller().marshall(listSubscriptionsByTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new ListSubscriptionsByTopicResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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. *

*

* To use the Publish 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. The EndpointArn is returned when * making a call with the CreatePlatformEndpoint action. The * second example below shows a request and response for publishing to a * mobile endpoint. *

* * @param publishRequest Container for the necessary parameters to * execute the Publish service method on AmazonSNS. * * @return The response from the Publish service method, as returned by * AmazonSNS. * * @throws NotFoundException * @throws PlatformApplicationDisabledException * @throws EndpointDisabledException * @throws InvalidParameterValueException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public PublishResult publish(PublishRequest publishRequest) { ExecutionContext executionContext = createExecutionContext(publishRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PublishRequestMarshaller().marshall(publishRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } response = invoke(request, new PublishResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 NextToken is also returned. Use the * NextToken parameter in a new * ListSubscriptions call to get further results. *

* * @return The response from the ListSubscriptions service method, as * returned by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions() throws AmazonServiceException, AmazonClientException { return listSubscriptions(new ListSubscriptionsRequest()); } /** *

* 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 * NextToken is also returned. Use the * NextToken parameter in a new ListTopics call * to get further results. *

* * @return The response from the ListTopics service method, as returned * by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListTopicsResult listTopics() throws AmazonServiceException, AmazonClientException { return listTopics(new ListTopicsRequest()); } /** *

* Lists the platform application objects for the supported push * notification services, such as APNS and GCM. The results for * ListPlatformApplications 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 * ListPlatformApplications 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 * Using Amazon SNS Mobile Push Notifications * . *

* * @return The response from the ListPlatformApplications service method, * as returned by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListPlatformApplicationsResult listPlatformApplications() throws AmazonServiceException, AmazonClientException { return listPlatformApplications(new ListPlatformApplicationsRequest()); } /** *

* 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". *

* * @param topicArn The ARN of the topic for which you wish to confirm a * subscription. * @param token Short-lived token sent to an endpoint during the * Subscribe action. * @param authenticateOnUnsubscribe Disallows unauthenticated * unsubscribes of the subscription. If the value of this parameter is * true and the request has an AWS signature, then only the * topic owner and the subscription owner can unsubscribe the endpoint. * The unsubscribe action requires AWS authentication. * * @return The response from the ConfirmSubscription service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @throws InternalErrorException * @throws SubscriptionLimitExceededException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(String topicArn, String token, String authenticateOnUnsubscribe) { ConfirmSubscriptionRequest confirmSubscriptionRequest = new ConfirmSubscriptionRequest(); confirmSubscriptionRequest.setTopicArn(topicArn); confirmSubscriptionRequest.setToken(token); confirmSubscriptionRequest.setAuthenticateOnUnsubscribe(authenticateOnUnsubscribe); return confirmSubscription(confirmSubscriptionRequest); } /** *

* 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". *

* * @param topicArn The ARN of the topic for which you wish to confirm a * subscription. * @param token Short-lived token sent to an endpoint during the * Subscribe action. * * @return The response from the ConfirmSubscription service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @throws InternalErrorException * @throws SubscriptionLimitExceededException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(String topicArn, String token) { ConfirmSubscriptionRequest confirmSubscriptionRequest = new ConfirmSubscriptionRequest(); confirmSubscriptionRequest.setTopicArn(topicArn); confirmSubscriptionRequest.setToken(token); return confirmSubscription(confirmSubscriptionRequest); } /** *

* Returns all of the properties of a topic. Topic properties returned * might differ based on the authorization of the user. *

* * @param topicArn The ARN of the topic whose properties you want to get. * * @return The response from the GetTopicAttributes service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public GetTopicAttributesResult getTopicAttributes(String topicArn) { GetTopicAttributesRequest getTopicAttributesRequest = new GetTopicAttributesRequest(); getTopicAttributesRequest.setTopicArn(topicArn); return getTopicAttributes(getTopicAttributesRequest); } /** *

* 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 * three days. *

* * @param topicArn The ARN of the topic you want to subscribe to. * @param protocol The protocol you want to use. Supported protocols * include:
  • http -- delivery of JSON-encoded * message via HTTP POST
  • https -- delivery of * JSON-encoded message via HTTPS POST
  • email -- * delivery of message via SMTP
  • email-json -- * delivery of JSON-encoded message via SMTP
  • sms -- * delivery of message via SMS
  • sqs -- delivery of * JSON-encoded message to an Amazon SQS queue
  • *
  • application -- delivery of JSON-encoded message to an * EndpointArn for a mobile app and device.
* @param endpoint The endpoint that you want to receive notifications. * Endpoints vary by protocol:
  • For the http * protocol, the endpoint is an URL beginning with "http://"
  • For * the https protocol, the endpoint is a URL beginning with * "https://"
  • For the email protocol, the endpoint * is an email address
  • For the email-json protocol, * the endpoint is an email address
  • For the sms * protocol, the endpoint is a phone number of an SMS-enabled device
  • *
  • For the sqs protocol, the endpoint is the ARN of an * Amazon SQS queue
  • For the application protocol, * the endpoint is the EndpointArn of a mobile app and device.
* * @return The response from the Subscribe service method, as returned by * AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @throws InternalErrorException * @throws SubscriptionLimitExceededException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public SubscribeResult subscribe(String topicArn, String protocol, String endpoint) { SubscribeRequest subscribeRequest = new SubscribeRequest(); subscribeRequest.setTopicArn(topicArn); subscribeRequest.setProtocol(protocol); subscribeRequest.setEndpoint(endpoint); return subscribe(subscribeRequest); } /** *

* Allows a topic owner to set an attribute of the topic to a new value. *

* * @param topicArn The ARN of the topic to modify. * @param attributeName The name of the attribute you want to set. Only a * subset of the topic's attributes are mutable.

Valid values: * Policy | DisplayName | * DeliveryPolicy * @param attributeValue The new value for the attribute. * * @return The response from the SetTopicAttributes service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void setTopicAttributes(String topicArn, String attributeName, String attributeValue) { SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest(); setTopicAttributesRequest.setTopicArn(topicArn); setTopicAttributesRequest.setAttributeName(attributeName); setTopicAttributesRequest.setAttributeValue(attributeValue); setTopicAttributes(setTopicAttributesRequest); } /** *

* Removes a statement from a topic's access control policy. *

* * @param topicArn The ARN of the topic whose access control policy you * wish to modify. * @param label The unique label of the statement you want to remove. * * @return The response from the RemovePermission service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void removePermission(String topicArn, String label) { RemovePermissionRequest removePermissionRequest = new RemovePermissionRequest(); removePermissionRequest.setTopicArn(topicArn); removePermissionRequest.setLabel(label); removePermission(removePermissionRequest); } /** *

* 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 NextToken is also returned. Use the * NextToken parameter in a new * ListSubscriptions call to get further results. *

* * @param nextToken Token returned by the previous * ListSubscriptions request. * * @return The response from the ListSubscriptions service method, as * returned by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions(String nextToken) { ListSubscriptionsRequest listSubscriptionsRequest = new ListSubscriptionsRequest(); listSubscriptionsRequest.setNextToken(nextToken); return listSubscriptions(listSubscriptionsRequest); } /** *

* Allows a subscription owner to set an attribute of the topic to a new * value. *

* * @param subscriptionArn The ARN of the subscription to modify. * @param attributeName The name of the attribute you want to set. Only a * subset of the subscriptions attributes are mutable.

Valid values: * DeliveryPolicy | RawMessageDelivery * @param attributeValue The new value for the attribute in JSON format. * * @return The response from the SetSubscriptionAttributes service * method, as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void setSubscriptionAttributes(String subscriptionArn, String attributeName, String attributeValue) { SetSubscriptionAttributesRequest setSubscriptionAttributesRequest = new SetSubscriptionAttributesRequest(); setSubscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); setSubscriptionAttributesRequest.setAttributeName(attributeName); setSubscriptionAttributesRequest.setAttributeValue(attributeValue); setSubscriptionAttributes(setSubscriptionAttributesRequest); } /** *

* Creates a topic to which notifications can be published. Users can * create at most 3000 topics. For more information, see * http://aws.amazon.com/sns * . 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. *

* * @param name The name of the topic you want to create.

Constraints: * Topic names must be made up of only uppercase and lowercase ASCII * letters, numbers, underscores, and hyphens, and must be between 1 and * 256 characters long. * * @return The response from the CreateTopic service method, as returned * by AmazonSNS. * * @throws AuthorizationErrorException * @throws InternalErrorException * @throws InvalidParameterException * @throws TopicLimitExceededException * * @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 CreateTopicResult createTopic(String name) { CreateTopicRequest createTopicRequest = new CreateTopicRequest(); createTopicRequest.setName(name); return createTopic(createTopicRequest); } /** *

* Returns all of the properties of a subscription. *

* * @param subscriptionArn The ARN of the subscription whose properties * you want to get. * * @return The response from the GetSubscriptionAttributes service * method, as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public GetSubscriptionAttributesResult getSubscriptionAttributes(String subscriptionArn) { GetSubscriptionAttributesRequest getSubscriptionAttributesRequest = new GetSubscriptionAttributesRequest(); getSubscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); return getSubscriptionAttributes(getSubscriptionAttributesRequest); } /** *

* 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 * NextToken is also returned. Use the * NextToken parameter in a new ListTopics call * to get further results. *

* * @param nextToken Token returned by the previous * ListTopics request. * * @return The response from the ListTopics service method, as returned * by AmazonSNS. * * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListTopicsResult listTopics(String nextToken) { ListTopicsRequest listTopicsRequest = new ListTopicsRequest(); listTopicsRequest.setNextToken(nextToken); return listTopics(listTopicsRequest); } /** *

* 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 * 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. *

* * @param subscriptionArn The ARN of the subscription to be deleted. * * @return The response from the Unsubscribe service method, as returned * by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void unsubscribe(String subscriptionArn) { UnsubscribeRequest unsubscribeRequest = new UnsubscribeRequest(); unsubscribeRequest.setSubscriptionArn(subscriptionArn); unsubscribe(unsubscribeRequest); } /** *

* 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. *

* * @param topicArn The ARN of the topic you want to delete. * http://sns.us-east-1.amazonaws.com/ * ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic * &Action=DeleteTopic &SignatureVersion=2 &SignatureMethod=HmacSHA256 * &Timestamp=2010-03-31T12%3A00%3A00.000Z &AWSAccessKeyId=(AWS Access * Key ID) * &Signature=DjHBa%2BbYCKQAzctOPnLP7MbHnrHT3%2FK3kFEZjwcf9%2FU%3D * * fba800b9-3765-11df-8cf3-c58c53254dfb * * * * @return The response from the DeleteTopic service method, as returned * by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void deleteTopic(String topicArn) { DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(); deleteTopicRequest.setTopicArn(topicArn); deleteTopic(deleteTopicRequest); } /** *

* Adds a statement to a topic's access control policy, granting access * for the specified AWS accounts to the specified actions. *

* * @param topicArn The ARN of the topic whose access control policy you * wish to modify. * @param label A unique identifier for the new policy statement. * @param aWSAccountIds The AWS account IDs of the users (principals) who * will be given access to the specified actions. The users must have AWS * accounts, but do not need to be signed up for this service. * @param actionNames The action you want to allow for the specified * principal(s).

Valid values: any Amazon SNS action name. * * @return The response from the AddPermission service method, as * returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public void addPermission(String topicArn, String label, java.util.List aWSAccountIds, java.util.List actionNames) { AddPermissionRequest addPermissionRequest = new AddPermissionRequest(); addPermissionRequest.setTopicArn(topicArn); addPermissionRequest.setLabel(label); addPermissionRequest.setAWSAccountIds(aWSAccountIds); addPermissionRequest.setActionNames(actionNames); addPermission(addPermissionRequest); } /** *

* 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 NextToken is also returned. Use the * NextToken parameter in a new * ListSubscriptionsByTopic call to get further results. *

* * @param topicArn The ARN of the topic for which you wish to find * subscriptions. * @param nextToken Token returned by the previous * ListSubscriptionsByTopic request. * * @return The response from the ListSubscriptionsByTopic service method, * as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(String topicArn, String nextToken) { ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(); listSubscriptionsByTopicRequest.setTopicArn(topicArn); listSubscriptionsByTopicRequest.setNextToken(nextToken); return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } /** *

* 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 NextToken is also returned. Use the * NextToken parameter in a new * ListSubscriptionsByTopic call to get further results. *

* * @param topicArn The ARN of the topic for which you wish to find * subscriptions. * * @return The response from the ListSubscriptionsByTopic service method, * as returned by AmazonSNS. * * @throws NotFoundException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(String topicArn) { ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(); listSubscriptionsByTopicRequest.setTopicArn(topicArn); return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } /** *

* 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. *

*

* To use the Publish 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. The EndpointArn is returned when * making a call with the CreatePlatformEndpoint action. The * second example below shows a request and response for publishing to a * mobile endpoint. *

* * @param topicArn The topic you want to publish to. * @param message The message you want to send to the topic.

If you * want to send the same message to all transport protocols, include the * text of the message as a String value.

If you want to send * different messages for each transport protocol, set the value of the * MessageStructure parameter to json and use a * JSON object for the Message parameter. See the Examples * section for the format of the JSON object.

Constraints: Messages * must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, * not 262144 characters).

JSON-specific constraints:

  • Keys in * the JSON object that correspond to supported transport protocols must * have simple JSON string values.
  • The values will be parsed * (unescaped) before they are used in outgoing messages.
  • *
  • Outbound notifications are JSON encoded (meaning that the * characters will be reescaped for sending).
  • Values have a * minimum length of 0 (the empty string, "", is allowed).
  • *
  • Values have a maximum length bounded by the overall message size * (so, including multiple protocols may limit message sizes).
  • *
  • Non-string values will cause the key to be ignored.
  • Keys * that do not correspond to supported transport protocols are * ignored.
  • Duplicate keys are not allowed.
  • Failure to * parse or validate any key or value in the message will cause the * Publish call to return an error (no partial * delivery).
* * @return The response from the Publish service method, as returned by * AmazonSNS. * * @throws NotFoundException * @throws PlatformApplicationDisabledException * @throws EndpointDisabledException * @throws InvalidParameterValueException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public PublishResult publish(String topicArn, String message) { PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); return publish(publishRequest); } /** *

* 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. *

*

* To use the Publish 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. The EndpointArn is returned when * making a call with the CreatePlatformEndpoint action. The * second example below shows a request and response for publishing to a * mobile endpoint. *

* * @param topicArn The topic you want to publish to. * @param message The message you want to send to the topic.

If you * want to send the same message to all transport protocols, include the * text of the message as a String value.

If you want to send * different messages for each transport protocol, set the value of the * MessageStructure parameter to json and use a * JSON object for the Message parameter. See the Examples * section for the format of the JSON object.

Constraints: Messages * must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, * not 262144 characters).

JSON-specific constraints:

  • Keys in * the JSON object that correspond to supported transport protocols must * have simple JSON string values.
  • The values will be parsed * (unescaped) before they are used in outgoing messages.
  • *
  • Outbound notifications are JSON encoded (meaning that the * characters will be reescaped for sending).
  • Values have a * minimum length of 0 (the empty string, "", is allowed).
  • *
  • Values have a maximum length bounded by the overall message size * (so, including multiple protocols may limit message sizes).
  • *
  • Non-string values will cause the key to be ignored.
  • Keys * that do not correspond to supported transport protocols are * ignored.
  • Duplicate keys are not allowed.
  • Failure to * parse or validate any key or value in the message will cause the * Publish call to return an error (no partial * delivery).
* @param subject Optional parameter to be used as the "Subject" line * when the message is delivered to email endpoints. This field will also * be included, if present, in the standard JSON messages delivered to * other endpoints.

Constraints: Subjects must be ASCII text that * begins with a letter, number, or punctuation mark; must not include * line breaks or control characters; and must be less than 100 * characters long. * * @return The response from the Publish service method, as returned by * AmazonSNS. * * @throws NotFoundException * @throws PlatformApplicationDisabledException * @throws EndpointDisabledException * @throws InvalidParameterValueException * @throws AuthorizationErrorException * @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 AmazonSNS indicating * either a problem with the data in the request, or a server side issue. */ public PublishResult publish(String topicArn, String message, String subject) { PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); publishRequest.setSubject(subject); return publish(publishRequest); } /** * Returns additional metadata for a previously executed successful, request, typically used for * debugging issues where a service isn't acting as expected. This data isn't considered part * of the result data returned by an operation, so it's available through this separate, * diagnostic interface. *

* Response metadata is only cached for a limited period of time, so if you need to access * this extra diagnostic information for an executed request, you should use this method * to retrieve it as soon as possible after executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none * is available. */ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } private Response invoke(Request request, Unmarshaller unmarshaller, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); AmazonWebServiceRequest originalRequest = request.getOriginalRequest(); for (Entry entry : originalRequest.copyPrivateRequestParameters().entrySet()) { request.addParameter(entry.getKey(), entry.getValue()); } AWSCredentials credentials = awsCredentialsProvider.getCredentials(); if (originalRequest.getRequestCredentials() != null) { credentials = originalRequest.getRequestCredentials(); } executionContext.setCredentials(credentials); StaxResponseHandler responseHandler = new StaxResponseHandler(unmarshaller); DefaultErrorResponseHandler errorResponseHandler = new DefaultErrorResponseHandler(exceptionUnmarshallers); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy