/aws-java-sdk-sns/src/main/java/com/amazonaws/services/sns/model/PublishRequest.java
https://gitlab.com/github-cloud-corp/aws-sdk-java · Java · 1451 lines · 114 code · 51 blank · 1286 comment · 6 complexity · 2b05d9c6574fbdec416d5f3526051533 MD5 · raw file
- /*
- * Copyright 2011-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may not
- * use this file except in compliance with the License. A copy of the License is
- * located at
- *
- * http://aws.amazon.com/apache2.0
- *
- * or in the "license" file accompanying this file. This file is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
- package com.amazonaws.services.sns.model;
- import java.io.Serializable;
- import com.amazonaws.AmazonWebServiceRequest;
- /**
- * <p>
- * Input for Publish action.
- * </p>
- */
- public class PublishRequest extends AmazonWebServiceRequest implements
- Serializable, Cloneable {
- /**
- * <p>
- * The topic you want to publish to.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code> parameter, you
- * must specify a value for the <code>PhoneNumber</code> or
- * <code>TargetArn</code> parameters.
- * </p>
- */
- private String topicArn;
- /**
- * <p>
- * Either TopicArn or EndpointArn, but not both.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code> parameter,
- * you must specify a value for the <code>PhoneNumber</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- */
- private String targetArn;
- /**
- * <p>
- * The phone number to which you want to deliver an SMS message. Use E.164
- * format.
- * </p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code> parameter,
- * you must specify a value for the <code>TargetArn</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- */
- private String phoneNumber;
- /**
- * <p>
- * The message you want to send to the topic.
- * </p>
- * <p>
- * If you want to send the same message to all transport protocols, include
- * the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport protocol, set
- * the value of the <code>MessageStructure</code> parameter to
- * <code>json</code> and use a JSON object for the <code>Message</code>
- * parameter. See the Examples section for the format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB in
- * size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport protocols
- * must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in outgoing
- * messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the characters will
- * be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size (so,
- * including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will cause
- * the <code>Publish</code> call to return an error (no partial delivery).
- * </p>
- * </li>
- * </ul>
- */
- private String message;
- /**
- * <p>
- * 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.
- * </p>
- * <p>
- * 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.
- * </p>
- */
- private String subject;
- /**
- * <p>
- * Set <code>MessageStructure</code> to <code>json</code> if you want to
- * send a different message for each protocol. For example, using one
- * publish action, you can send a short message to your SMS subscribers and
- * a longer message to your email subscribers. If you set
- * <code>MessageStructure</code> to <code>json</code>, the value of the
- * <code>Message</code> parameter must:
- * </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value that is a
- * string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you want to
- * send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each protocol using
- * the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon Simple
- * Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- * </p>
- */
- private String messageStructure;
- /**
- * <p>
- * Message attributes for Publish action.
- * </p>
- */
- private com.amazonaws.internal.SdkInternalMap<String, MessageAttributeValue> messageAttributes;
- /**
- * Default constructor for PublishRequest object. Callers should use the
- * setter or fluent setter (with...) methods to initialize the object after
- * creating it.
- */
- public PublishRequest() {
- }
- /**
- * Constructs a new PublishRequest object. Callers should use the setter or
- * fluent setter (with...) methods to initialize any additional object
- * members.
- *
- * @param topicArn
- * The topic you want to publish to.</p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TargetArn</code> parameters.
- * @param message
- * The message you want to send to the topic.
- * </p>
- * <p>
- * If you want to send the same message to all transport protocols,
- * include the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport
- * protocol, set the value of the <code>MessageStructure</code>
- * parameter to <code>json</code> and use a JSON object for the
- * <code>Message</code> parameter. See the Examples section for the
- * format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB
- * in size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport
- * protocols must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in
- * outgoing messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the
- * characters will be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is
- * allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size
- * (so, including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are
- * ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will
- * cause the <code>Publish</code> call to return an error (no partial
- * delivery).
- * </p>
- * </li>
- */
- public PublishRequest(String topicArn, String message) {
- setTopicArn(topicArn);
- setMessage(message);
- }
- /**
- * Constructs a new PublishRequest object. Callers should use the setter or
- * fluent setter (with...) methods to initialize any additional object
- * members.
- *
- * @param topicArn
- * The topic you want to publish to.</p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TargetArn</code> parameters.
- * @param message
- * The message you want to send to the topic.
- * </p>
- * <p>
- * If you want to send the same message to all transport protocols,
- * include the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport
- * protocol, set the value of the <code>MessageStructure</code>
- * parameter to <code>json</code> and use a JSON object for the
- * <code>Message</code> parameter. See the Examples section for the
- * format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB
- * in size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport
- * protocols must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in
- * outgoing messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the
- * characters will be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is
- * allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size
- * (so, including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are
- * ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will
- * cause the <code>Publish</code> call to return an error (no partial
- * delivery).
- * </p>
- * </li>
- * @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.</p>
- * <p>
- * 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.
- */
- public PublishRequest(String topicArn, String message, String subject) {
- setTopicArn(topicArn);
- setMessage(message);
- setSubject(subject);
- }
- /**
- * <p>
- * The topic you want to publish to.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code> parameter, you
- * must specify a value for the <code>PhoneNumber</code> or
- * <code>TargetArn</code> parameters.
- * </p>
- *
- * @param topicArn
- * The topic you want to publish to.</p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TargetArn</code> parameters.
- */
- public void setTopicArn(String topicArn) {
- this.topicArn = topicArn;
- }
- /**
- * <p>
- * The topic you want to publish to.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code> parameter, you
- * must specify a value for the <code>PhoneNumber</code> or
- * <code>TargetArn</code> parameters.
- * </p>
- *
- * @return The topic you want to publish to.</p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TargetArn</code> parameters.
- */
- public String getTopicArn() {
- return this.topicArn;
- }
- /**
- * <p>
- * The topic you want to publish to.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code> parameter, you
- * must specify a value for the <code>PhoneNumber</code> or
- * <code>TargetArn</code> parameters.
- * </p>
- *
- * @param topicArn
- * The topic you want to publish to.</p>
- * <p>
- * If you don't specify a value for the <code>TopicArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TargetArn</code> parameters.
- * @return Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withTopicArn(String topicArn) {
- setTopicArn(topicArn);
- return this;
- }
- /**
- * <p>
- * Either TopicArn or EndpointArn, but not both.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code> parameter,
- * you must specify a value for the <code>PhoneNumber</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- *
- * @param targetArn
- * Either TopicArn or EndpointArn, but not both.</p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TopicArn</code> parameters.
- */
- public void setTargetArn(String targetArn) {
- this.targetArn = targetArn;
- }
- /**
- * <p>
- * Either TopicArn or EndpointArn, but not both.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code> parameter,
- * you must specify a value for the <code>PhoneNumber</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- *
- * @return Either TopicArn or EndpointArn, but not both.</p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TopicArn</code> parameters.
- */
- public String getTargetArn() {
- return this.targetArn;
- }
- /**
- * <p>
- * Either TopicArn or EndpointArn, but not both.
- * </p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code> parameter,
- * you must specify a value for the <code>PhoneNumber</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- *
- * @param targetArn
- * Either TopicArn or EndpointArn, but not both.</p>
- * <p>
- * If you don't specify a value for the <code>TargetArn</code>
- * parameter, you must specify a value for the
- * <code>PhoneNumber</code> or <code>TopicArn</code> parameters.
- * @return Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withTargetArn(String targetArn) {
- setTargetArn(targetArn);
- return this;
- }
- /**
- * <p>
- * The phone number to which you want to deliver an SMS message. Use E.164
- * format.
- * </p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code> parameter,
- * you must specify a value for the <code>TargetArn</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- *
- * @param phoneNumber
- * The phone number to which you want to deliver an SMS message. Use
- * E.164 format.</p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code>
- * parameter, you must specify a value for the <code>TargetArn</code>
- * or <code>TopicArn</code> parameters.
- */
- public void setPhoneNumber(String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
- /**
- * <p>
- * The phone number to which you want to deliver an SMS message. Use E.164
- * format.
- * </p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code> parameter,
- * you must specify a value for the <code>TargetArn</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- *
- * @return The phone number to which you want to deliver an SMS message. Use
- * E.164 format.</p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code>
- * parameter, you must specify a value for the
- * <code>TargetArn</code> or <code>TopicArn</code> parameters.
- */
- public String getPhoneNumber() {
- return this.phoneNumber;
- }
- /**
- * <p>
- * The phone number to which you want to deliver an SMS message. Use E.164
- * format.
- * </p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code> parameter,
- * you must specify a value for the <code>TargetArn</code> or
- * <code>TopicArn</code> parameters.
- * </p>
- *
- * @param phoneNumber
- * The phone number to which you want to deliver an SMS message. Use
- * E.164 format.</p>
- * <p>
- * If you don't specify a value for the <code>PhoneNumber</code>
- * parameter, you must specify a value for the <code>TargetArn</code>
- * or <code>TopicArn</code> parameters.
- * @return Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withPhoneNumber(String phoneNumber) {
- setPhoneNumber(phoneNumber);
- return this;
- }
- /**
- * <p>
- * The message you want to send to the topic.
- * </p>
- * <p>
- * If you want to send the same message to all transport protocols, include
- * the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport protocol, set
- * the value of the <code>MessageStructure</code> parameter to
- * <code>json</code> and use a JSON object for the <code>Message</code>
- * parameter. See the Examples section for the format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB in
- * size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport protocols
- * must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in outgoing
- * messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the characters will
- * be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size (so,
- * including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will cause
- * the <code>Publish</code> call to return an error (no partial delivery).
- * </p>
- * </li>
- * </ul>
- *
- * @param message
- * The message you want to send to the topic.</p>
- * <p>
- * If you want to send the same message to all transport protocols,
- * include the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport
- * protocol, set the value of the <code>MessageStructure</code>
- * parameter to <code>json</code> and use a JSON object for the
- * <code>Message</code> parameter. See the Examples section for the
- * format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB
- * in size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport
- * protocols must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in
- * outgoing messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the
- * characters will be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is
- * allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size
- * (so, including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are
- * ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will
- * cause the <code>Publish</code> call to return an error (no partial
- * delivery).
- * </p>
- * </li>
- */
- public void setMessage(String message) {
- this.message = message;
- }
- /**
- * <p>
- * The message you want to send to the topic.
- * </p>
- * <p>
- * If you want to send the same message to all transport protocols, include
- * the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport protocol, set
- * the value of the <code>MessageStructure</code> parameter to
- * <code>json</code> and use a JSON object for the <code>Message</code>
- * parameter. See the Examples section for the format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB in
- * size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport protocols
- * must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in outgoing
- * messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the characters will
- * be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size (so,
- * including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will cause
- * the <code>Publish</code> call to return an error (no partial delivery).
- * </p>
- * </li>
- * </ul>
- *
- * @return The message you want to send to the topic.</p>
- * <p>
- * If you want to send the same message to all transport protocols,
- * include the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport
- * protocol, set the value of the <code>MessageStructure</code>
- * parameter to <code>json</code> and use a JSON object for the
- * <code>Message</code> parameter. See the Examples section for the
- * format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256
- * KB in size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport
- * protocols must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in
- * outgoing messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the
- * characters will be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is
- * allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size
- * (so, including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are
- * ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will
- * cause the <code>Publish</code> call to return an error (no
- * partial delivery).
- * </p>
- * </li>
- */
- public String getMessage() {
- return this.message;
- }
- /**
- * <p>
- * The message you want to send to the topic.
- * </p>
- * <p>
- * If you want to send the same message to all transport protocols, include
- * the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport protocol, set
- * the value of the <code>MessageStructure</code> parameter to
- * <code>json</code> and use a JSON object for the <code>Message</code>
- * parameter. See the Examples section for the format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB in
- * size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport protocols
- * must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in outgoing
- * messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the characters will
- * be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size (so,
- * including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will cause
- * the <code>Publish</code> call to return an error (no partial delivery).
- * </p>
- * </li>
- * </ul>
- *
- * @param message
- * The message you want to send to the topic.</p>
- * <p>
- * If you want to send the same message to all transport protocols,
- * include the text of the message as a String value.
- * </p>
- * <p>
- * If you want to send different messages for each transport
- * protocol, set the value of the <code>MessageStructure</code>
- * parameter to <code>json</code> and use a JSON object for the
- * <code>Message</code> parameter. See the Examples section for the
- * format of the JSON object.
- * </p>
- * <p>
- * Constraints: Messages must be UTF-8 encoded strings at most 256 KB
- * in size (262144 bytes, not 262144 characters).
- * </p>
- * <p>
- * JSON-specific constraints:
- * </p>
- * <ul>
- * <li>
- * <p>
- * Keys in the JSON object that correspond to supported transport
- * protocols must have simple JSON string values.
- * </p>
- * </li>
- * <li>
- * <p>
- * The values will be parsed (unescaped) before they are used in
- * outgoing messages.
- * </p>
- * </li>
- * <li>
- * <p>
- * Outbound notifications are JSON encoded (meaning that the
- * characters will be reescaped for sending).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a minimum length of 0 (the empty string, "", is
- * allowed).
- * </p>
- * </li>
- * <li>
- * <p>
- * Values have a maximum length bounded by the overall message size
- * (so, including multiple protocols may limit message sizes).
- * </p>
- * </li>
- * <li>
- * <p>
- * Non-string values will cause the key to be ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Keys that do not correspond to supported transport protocols are
- * ignored.
- * </p>
- * </li>
- * <li>
- * <p>
- * Duplicate keys are not allowed.
- * </p>
- * </li>
- * <li>
- * <p>
- * Failure to parse or validate any key or value in the message will
- * cause the <code>Publish</code> call to return an error (no partial
- * delivery).
- * </p>
- * </li>
- * @return Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withMessage(String message) {
- setMessage(message);
- return this;
- }
- /**
- * <p>
- * 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.
- * </p>
- * <p>
- * 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.
- * </p>
- *
- * @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.</p>
- * <p>
- * 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.
- */
- public void setSubject(String subject) {
- this.subject = subject;
- }
- /**
- * <p>
- * 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.
- * </p>
- * <p>
- * 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.
- * </p>
- *
- * @return 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.</p>
- * <p>
- * 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.
- */
- public String getSubject() {
- return this.subject;
- }
- /**
- * <p>
- * 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.
- * </p>
- * <p>
- * 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.
- * </p>
- *
- * @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.</p>
- * <p>
- * 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 Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withSubject(String subject) {
- setSubject(subject);
- return this;
- }
- /**
- * <p>
- * Set <code>MessageStructure</code> to <code>json</code> if you want to
- * send a different message for each protocol. For example, using one
- * publish action, you can send a short message to your SMS subscribers and
- * a longer message to your email subscribers. If you set
- * <code>MessageStructure</code> to <code>json</code>, the value of the
- * <code>Message</code> parameter must:
- * </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value that is a
- * string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you want to
- * send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each protocol using
- * the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon Simple
- * Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- * </p>
- *
- * @param messageStructure
- * Set <code>MessageStructure</code> to <code>json</code> if you want
- * to send a different message for each protocol. For example, using
- * one publish action, you can send a short message to your SMS
- * subscribers and a longer message to your email subscribers. If you
- * set <code>MessageStructure</code> to <code>json</code>, the value
- * of the <code>Message</code> parameter must: </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value
- * that is a string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you
- * want to send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each protocol
- * using the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon
- * Simple Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- */
- public void setMessageStructure(String messageStructure) {
- this.messageStructure = messageStructure;
- }
- /**
- * <p>
- * Set <code>MessageStructure</code> to <code>json</code> if you want to
- * send a different message for each protocol. For example, using one
- * publish action, you can send a short message to your SMS subscribers and
- * a longer message to your email subscribers. If you set
- * <code>MessageStructure</code> to <code>json</code>, the value of the
- * <code>Message</code> parameter must:
- * </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value that is a
- * string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you want to
- * send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each protocol using
- * the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon Simple
- * Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- * </p>
- *
- * @return Set <code>MessageStructure</code> to <code>json</code> if you
- * want to send a different message for each protocol. For example,
- * using one publish action, you can send a short message to your
- * SMS subscribers and a longer message to your email subscribers.
- * If you set <code>MessageStructure</code> to <code>json</code>,
- * the value of the <code>Message</code> parameter must: </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value
- * that is a string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you
- * want to send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each
- * protocol using the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon
- * Simple Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- */
- public String getMessageStructure() {
- return this.messageStructure;
- }
- /**
- * <p>
- * Set <code>MessageStructure</code> to <code>json</code> if you want to
- * send a different message for each protocol. For example, using one
- * publish action, you can send a short message to your SMS subscribers and
- * a longer message to your email subscribers. If you set
- * <code>MessageStructure</code> to <code>json</code>, the value of the
- * <code>Message</code> parameter must:
- * </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value that is a
- * string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you want to
- * send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each protocol using
- * the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon Simple
- * Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- * </p>
- *
- * @param messageStructure
- * Set <code>MessageStructure</code> to <code>json</code> if you want
- * to send a different message for each protocol. For example, using
- * one publish action, you can send a short message to your SMS
- * subscribers and a longer message to your email subscribers. If you
- * set <code>MessageStructure</code> to <code>json</code>, the value
- * of the <code>Message</code> parameter must: </p>
- * <ul>
- * <li>
- * <p>
- * be a syntactically valid JSON object; and
- * </p>
- * </li>
- * <li>
- * <p>
- * contain at least a top-level JSON key of "default" with a value
- * that is a string.
- * </p>
- * </li>
- * </ul>
- * <p>
- * You can define other top-level keys that define the message you
- * want to send to a specific transport protocol (e.g., "http").
- * </p>
- * <p>
- * For information about sending different messages for each protocol
- * using the AWS Management Console, go to <a href=
- * "http://docs.aws.amazon.com/sns/latest/gsg/Publish.html#sns-message-formatting-by-protocol"
- * >Create Different Messages for Each Protocol</a> in the <i>Amazon
- * Simple Notification Service Getting Started Guide</i>.
- * </p>
- * <p>
- * Valid value: <code>json</code>
- * @return Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withMessageStructure(String messageStructure) {
- setMessageStructure(messageStructure);
- return this;
- }
- /**
- * <p>
- * Message attributes for Publish action.
- * </p>
- *
- * @return Message attributes for Publish action.
- */
- public java.util.Map<String, MessageAttributeValue> getMessageAttributes() {
- if (messageAttributes == null) {
- messageAttributes = new com.amazonaws.internal.SdkInternalMap<String, MessageAttributeValue>();
- }
- return messageAttributes;
- }
- /**
- * <p>
- * Message attributes for Publish action.
- * </p>
- *
- * @param messageAttributes
- * Message attributes for Publish action.
- */
- public void setMessageAttributes(
- java.util.Map<String, MessageAttributeValue> messageAttributes) {
- this.messageAttributes = messageAttributes == null ? null
- : new com.amazonaws.internal.SdkInternalMap<String, MessageAttributeValue>(
- messageAttributes);
- }
- /**
- * <p>
- * Message attributes for Publish action.
- * </p>
- *
- * @param messageAttributes
- * Message attributes for Publish action.
- * @return Returns a reference to this object so that method calls can be
- * chained together.
- */
- public PublishRequest withMessageAttributes(
- java.util.Map<String, MessageAttributeValue> messageAttributes) {
- setMessageAttributes(messageAttributes);
- return this;
- }
- public PublishRequest addMessageAttributesEntry(String key,
- MessageAttributeValue value) {
- if (null == this.messageAttributes) {
- this.messageAttributes = new com.amazonaws.internal.SdkInternalMap<String, MessageAttributeValue>();
- }
- if (this.messageAttributes.containsKey(key))
- throw new IllegalArgumentException("Duplicated keys ("
- + key.toString() + ") are provided.");
- this.messageAttributes.put(key, value);
- return this;
- }
- /**
- * Removes all the entries added into MessageAttributes. <p> Returns a
- * reference to this object so that method calls can be chained together.
- */
- public PublishRequest clearMessageAttributesEntries() {
- this.messageAttributes = null;
- r