/* * Copyright 2010-2023 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; /** *

* Sends a message to an Amazon SNS topic, a text message (SMS message) directly * to a phone number, or a message to a mobile platform endpoint (when you * specify the TargetArn). *

*

* If you send a message to a topic, Amazon SNS delivers the message to each * endpoint that is subscribed to the topic. The format of the message depends * on the notification protocol for each subscribed endpoint. *

*

* When a messageId is returned, the message is saved and Amazon * SNS immediately delivers it to subscribers. *

*

* To use the Publish action for publishing a message to a mobile * endpoint, such as an app on a Kindle device or mobile phone, you must specify * the EndpointArn for the TargetArn parameter. The EndpointArn is returned when * making a call with the CreatePlatformEndpoint action. *

*

* For more information about formatting messages, see Send Custom Platform-Specific Payloads in Messages to Mobile Devices. *

* *

* You can publish messages only to topics and endpoints in the same Amazon Web * Services Region. *

*
*/ public class PublishRequest extends AmazonWebServiceRequest implements Serializable { /** *

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn parameter, you * must specify a value for the PhoneNumber or * TargetArn parameters. *

*/ private String topicArn; /** *

* If you don't specify a value for the TargetArn parameter, * you must specify a value for the PhoneNumber or * TopicArn parameters. *

*/ private String targetArn; /** *

* The phone number to which you want to deliver an SMS message. Use E.164 * format. *

*

* If you don't specify a value for the PhoneNumber parameter, * you must specify a value for the TargetArn or * TopicArn parameters. *

*/ private String phoneNumber; /** *

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* */ private String message; /** *

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

*/ private String subject; /** *

* Set MessageStructure to json 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 * MessageStructure to json, the value of the * Message parameter must: *

* *

* You can define other top-level keys that define the message you want to * send to a specific transport protocol (e.g., "http"). *

*

* Valid value: json *

*/ private String messageStructure; /** *

* Message attributes for Publish action. *

*/ private java.util.Map messageAttributes = new java.util.HashMap(); /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageDeduplicationId can contain up to 128 alphanumeric * characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique MessageDeduplicationId, * which is a token used for deduplication of sent messages. If a message * with a particular MessageDeduplicationId is sent * successfully, any message sent with the same * MessageDeduplicationId during the 5-minute deduplication * interval is treated as a duplicate. *

*

* If the topic has ContentBasedDeduplication set, the system * generates a MessageDeduplicationId based on the contents of * the message. Your MessageDeduplicationId overrides the * generated one. *

*/ private String messageDeduplicationId; /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageGroupId can contain up to 128 alphanumeric characters * (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a message * belongs to a specific message group. Messages that belong to the same * message group are processed in a FIFO manner (however, messages in * different message groups might be processed out of order). Every message * must include a MessageGroupId. *

*/ private String messageGroupId; /** * Default constructor for PublishRequest object. Callers should use the * setter or fluent setter (with...) methods to initialize any additional * object members. */ 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. *

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

* @param message

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

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

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

* @param message

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

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

*/ public PublishRequest(String topicArn, String message, String subject) { setTopicArn(topicArn); setMessage(message); setSubject(subject); } /** *

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn parameter, you * must specify a value for the PhoneNumber or * TargetArn parameters. *

* * @return

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

*/ public String getTopicArn() { return topicArn; } /** *

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn parameter, you * must specify a value for the PhoneNumber or * TargetArn parameters. *

* * @param topicArn

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

*/ public void setTopicArn(String topicArn) { this.topicArn = topicArn; } /** *

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn parameter, you * must specify a value for the PhoneNumber or * TargetArn parameters. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param topicArn

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withTopicArn(String topicArn) { this.topicArn = topicArn; return this; } /** *

* If you don't specify a value for the TargetArn parameter, * you must specify a value for the PhoneNumber or * TopicArn parameters. *

* * @return

* If you don't specify a value for the TargetArn * parameter, you must specify a value for the * PhoneNumber or TopicArn parameters. *

*/ public String getTargetArn() { return targetArn; } /** *

* If you don't specify a value for the TargetArn parameter, * you must specify a value for the PhoneNumber or * TopicArn parameters. *

* * @param targetArn

* If you don't specify a value for the TargetArn * parameter, you must specify a value for the * PhoneNumber or TopicArn parameters. *

*/ public void setTargetArn(String targetArn) { this.targetArn = targetArn; } /** *

* If you don't specify a value for the TargetArn parameter, * you must specify a value for the PhoneNumber or * TopicArn parameters. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param targetArn

* If you don't specify a value for the TargetArn * parameter, you must specify a value for the * PhoneNumber or TopicArn parameters. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withTargetArn(String targetArn) { this.targetArn = targetArn; return this; } /** *

* The phone number to which you want to deliver an SMS message. Use E.164 * format. *

*

* If you don't specify a value for the PhoneNumber parameter, * you must specify a value for the TargetArn or * TopicArn parameters. *

* * @return

* The phone number to which you want to deliver an SMS message. Use * E.164 format. *

*

* If you don't specify a value for the PhoneNumber * parameter, you must specify a value for the * TargetArn or TopicArn parameters. *

*/ public String getPhoneNumber() { return phoneNumber; } /** *

* The phone number to which you want to deliver an SMS message. Use E.164 * format. *

*

* If you don't specify a value for the PhoneNumber parameter, * you must specify a value for the TargetArn or * TopicArn parameters. *

* * @param phoneNumber

* The phone number to which you want to deliver an SMS message. * Use E.164 format. *

*

* If you don't specify a value for the PhoneNumber * parameter, you must specify a value for the * TargetArn or TopicArn parameters. *

*/ public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } /** *

* The phone number to which you want to deliver an SMS message. Use E.164 * format. *

*

* If you don't specify a value for the PhoneNumber parameter, * you must specify a value for the TargetArn or * TopicArn parameters. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param phoneNumber

* The phone number to which you want to deliver an SMS message. * Use E.164 format. *

*

* If you don't specify a value for the PhoneNumber * parameter, you must specify a value for the * TargetArn or TopicArn parameters. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; return this; } /** *

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* * * @return

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* */ public String getMessage() { return message; } /** *

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* * * @param message

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* */ public void setMessage(String message) { this.message = message; } /** *

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* *

* Returns a reference to this object so that method calls can be chained * together. * * @param message

* The message you want to send. *

*

* If you are publishing to a topic and 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. *

*

*

* Constraints: *

* *

* JSON-specific constraints: *

* * @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withMessage(String message) { this.message = message; return this; } /** *

* 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

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

*/ public String getSubject() { return 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. *

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

*/ public void setSubject(String subject) { this.subject = 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. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @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 A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withSubject(String subject) { this.subject = subject; return this; } /** *

* Set MessageStructure to json 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 * MessageStructure to json, the value of the * Message parameter must: *

* *

* You can define other top-level keys that define the message you want to * send to a specific transport protocol (e.g., "http"). *

*

* Valid value: json *

* * @return

* Set MessageStructure to json 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 MessageStructure to json, * the value of the Message parameter must: *

* *

* You can define other top-level keys that define the message you * want to send to a specific transport protocol (e.g., "http"). *

*

* Valid value: json *

*/ public String getMessageStructure() { return messageStructure; } /** *

* Set MessageStructure to json 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 * MessageStructure to json, the value of the * Message parameter must: *

* *

* You can define other top-level keys that define the message you want to * send to a specific transport protocol (e.g., "http"). *

*

* Valid value: json *

* * @param messageStructure

* Set MessageStructure to json 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 MessageStructure to * json, the value of the Message * parameter must: *

* *

* You can define other top-level keys that define the message * you want to send to a specific transport protocol (e.g., * "http"). *

*

* Valid value: json *

*/ public void setMessageStructure(String messageStructure) { this.messageStructure = messageStructure; } /** *

* Set MessageStructure to json 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 * MessageStructure to json, the value of the * Message parameter must: *

* *

* You can define other top-level keys that define the message you want to * send to a specific transport protocol (e.g., "http"). *

*

* Valid value: json *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param messageStructure

* Set MessageStructure to json 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 MessageStructure to * json, the value of the Message * parameter must: *

* *

* You can define other top-level keys that define the message * you want to send to a specific transport protocol (e.g., * "http"). *

*

* Valid value: json *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withMessageStructure(String messageStructure) { this.messageStructure = messageStructure; return this; } /** *

* Message attributes for Publish action. *

* * @return

* Message attributes for Publish action. *

*/ public java.util.Map getMessageAttributes() { return messageAttributes; } /** *

* Message attributes for Publish action. *

* * @param messageAttributes

* Message attributes for Publish action. *

*/ public void setMessageAttributes(java.util.Map messageAttributes) { this.messageAttributes = messageAttributes; } /** *

* Message attributes for Publish action. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param messageAttributes

* Message attributes for Publish action. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withMessageAttributes( java.util.Map messageAttributes) { this.messageAttributes = messageAttributes; return this; } /** *

* Message attributes for Publish action. *

*

* The method adds a new key-value pair into MessageAttributes parameter, * and returns a reference to this object so that method calls can be * chained together. * * @param key The key of the entry to be added into MessageAttributes. * @param value The corresponding value of the entry to be added into * MessageAttributes. * @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest addMessageAttributesEntry(String key, MessageAttributeValue value) { if (null == this.messageAttributes) { this.messageAttributes = new java.util.HashMap(); } 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. *

* Returns a reference to this object so that method calls can be chained * together. */ public PublishRequest clearMessageAttributesEntries() { this.messageAttributes = null; return this; } /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageDeduplicationId can contain up to 128 alphanumeric * characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique MessageDeduplicationId, * which is a token used for deduplication of sent messages. If a message * with a particular MessageDeduplicationId is sent * successfully, any message sent with the same * MessageDeduplicationId during the 5-minute deduplication * interval is treated as a duplicate. *

*

* If the topic has ContentBasedDeduplication set, the system * generates a MessageDeduplicationId based on the contents of * the message. Your MessageDeduplicationId overrides the * generated one. *

* * @return

* This parameter applies only to FIFO (first-in-first-out) topics. * The MessageDeduplicationId can contain up to 128 * alphanumeric characters (a-z, A-Z, 0-9) and * punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique * MessageDeduplicationId, which is a token used for * deduplication of sent messages. If a message with a particular * MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId * during the 5-minute deduplication interval is treated as a * duplicate. *

*

* If the topic has ContentBasedDeduplication set, the * system generates a MessageDeduplicationId based on * the contents of the message. Your * MessageDeduplicationId overrides the generated one. *

*/ public String getMessageDeduplicationId() { return messageDeduplicationId; } /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageDeduplicationId can contain up to 128 alphanumeric * characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique MessageDeduplicationId, * which is a token used for deduplication of sent messages. If a message * with a particular MessageDeduplicationId is sent * successfully, any message sent with the same * MessageDeduplicationId during the 5-minute deduplication * interval is treated as a duplicate. *

*

* If the topic has ContentBasedDeduplication set, the system * generates a MessageDeduplicationId based on the contents of * the message. Your MessageDeduplicationId overrides the * generated one. *

* * @param messageDeduplicationId

* This parameter applies only to FIFO (first-in-first-out) * topics. The MessageDeduplicationId can contain up * to 128 alphanumeric characters (a-z, A-Z, 0-9) * and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique * MessageDeduplicationId, which is a token used for * deduplication of sent messages. If a message with a particular * MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId * during the 5-minute deduplication interval is treated as a * duplicate. *

*

* If the topic has ContentBasedDeduplication set, * the system generates a MessageDeduplicationId * based on the contents of the message. Your * MessageDeduplicationId overrides the generated * one. *

*/ public void setMessageDeduplicationId(String messageDeduplicationId) { this.messageDeduplicationId = messageDeduplicationId; } /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageDeduplicationId can contain up to 128 alphanumeric * characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique MessageDeduplicationId, * which is a token used for deduplication of sent messages. If a message * with a particular MessageDeduplicationId is sent * successfully, any message sent with the same * MessageDeduplicationId during the 5-minute deduplication * interval is treated as a duplicate. *

*

* If the topic has ContentBasedDeduplication set, the system * generates a MessageDeduplicationId based on the contents of * the message. Your MessageDeduplicationId overrides the * generated one. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param messageDeduplicationId

* This parameter applies only to FIFO (first-in-first-out) * topics. The MessageDeduplicationId can contain up * to 128 alphanumeric characters (a-z, A-Z, 0-9) * and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique * MessageDeduplicationId, which is a token used for * deduplication of sent messages. If a message with a particular * MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId * during the 5-minute deduplication interval is treated as a * duplicate. *

*

* If the topic has ContentBasedDeduplication set, * the system generates a MessageDeduplicationId * based on the contents of the message. Your * MessageDeduplicationId overrides the generated * one. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withMessageDeduplicationId(String messageDeduplicationId) { this.messageDeduplicationId = messageDeduplicationId; return this; } /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageGroupId can contain up to 128 alphanumeric characters * (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a message * belongs to a specific message group. Messages that belong to the same * message group are processed in a FIFO manner (however, messages in * different message groups might be processed out of order). Every message * must include a MessageGroupId. *

* * @return

* This parameter applies only to FIFO (first-in-first-out) topics. * The MessageGroupId can contain up to 128 * alphanumeric characters (a-z, A-Z, 0-9) and * punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a * message belongs to a specific message group. Messages that belong * to the same message group are processed in a FIFO manner * (however, messages in different message groups might be processed * out of order). Every message must include a * MessageGroupId. *

*/ public String getMessageGroupId() { return messageGroupId; } /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageGroupId can contain up to 128 alphanumeric characters * (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a message * belongs to a specific message group. Messages that belong to the same * message group are processed in a FIFO manner (however, messages in * different message groups might be processed out of order). Every message * must include a MessageGroupId. *

* * @param messageGroupId

* This parameter applies only to FIFO (first-in-first-out) * topics. The MessageGroupId can contain up to 128 * alphanumeric characters (a-z, A-Z, 0-9) and * punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a * message belongs to a specific message group. Messages that * belong to the same message group are processed in a FIFO * manner (however, messages in different message groups might be * processed out of order). Every message must include a * MessageGroupId. *

*/ public void setMessageGroupId(String messageGroupId) { this.messageGroupId = messageGroupId; } /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The * MessageGroupId can contain up to 128 alphanumeric characters * (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a message * belongs to a specific message group. Messages that belong to the same * message group are processed in a FIFO manner (however, messages in * different message groups might be processed out of order). Every message * must include a MessageGroupId. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param messageGroupId

* This parameter applies only to FIFO (first-in-first-out) * topics. The MessageGroupId can contain up to 128 * alphanumeric characters (a-z, A-Z, 0-9) and * punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a * message belongs to a specific message group. Messages that * belong to the same message group are processed in a FIFO * manner (however, messages in different message groups might be * processed out of order). Every message must include a * MessageGroupId. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PublishRequest withMessageGroupId(String messageGroupId) { this.messageGroupId = messageGroupId; return this; } /** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getTopicArn() != null) sb.append("TopicArn: " + getTopicArn() + ","); if (getTargetArn() != null) sb.append("TargetArn: " + getTargetArn() + ","); if (getPhoneNumber() != null) sb.append("PhoneNumber: " + getPhoneNumber() + ","); if (getMessage() != null) sb.append("Message: " + getMessage() + ","); if (getSubject() != null) sb.append("Subject: " + getSubject() + ","); if (getMessageStructure() != null) sb.append("MessageStructure: " + getMessageStructure() + ","); if (getMessageAttributes() != null) sb.append("MessageAttributes: " + getMessageAttributes() + ","); if (getMessageDeduplicationId() != null) sb.append("MessageDeduplicationId: " + getMessageDeduplicationId() + ","); if (getMessageGroupId() != null) sb.append("MessageGroupId: " + getMessageGroupId()); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getTopicArn() == null) ? 0 : getTopicArn().hashCode()); hashCode = prime * hashCode + ((getTargetArn() == null) ? 0 : getTargetArn().hashCode()); hashCode = prime * hashCode + ((getPhoneNumber() == null) ? 0 : getPhoneNumber().hashCode()); hashCode = prime * hashCode + ((getMessage() == null) ? 0 : getMessage().hashCode()); hashCode = prime * hashCode + ((getSubject() == null) ? 0 : getSubject().hashCode()); hashCode = prime * hashCode + ((getMessageStructure() == null) ? 0 : getMessageStructure().hashCode()); hashCode = prime * hashCode + ((getMessageAttributes() == null) ? 0 : getMessageAttributes().hashCode()); hashCode = prime * hashCode + ((getMessageDeduplicationId() == null) ? 0 : getMessageDeduplicationId() .hashCode()); hashCode = prime * hashCode + ((getMessageGroupId() == null) ? 0 : getMessageGroupId().hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof PublishRequest == false) return false; PublishRequest other = (PublishRequest) obj; if (other.getTopicArn() == null ^ this.getTopicArn() == null) return false; if (other.getTopicArn() != null && other.getTopicArn().equals(this.getTopicArn()) == false) return false; if (other.getTargetArn() == null ^ this.getTargetArn() == null) return false; if (other.getTargetArn() != null && other.getTargetArn().equals(this.getTargetArn()) == false) return false; if (other.getPhoneNumber() == null ^ this.getPhoneNumber() == null) return false; if (other.getPhoneNumber() != null && other.getPhoneNumber().equals(this.getPhoneNumber()) == false) return false; if (other.getMessage() == null ^ this.getMessage() == null) return false; if (other.getMessage() != null && other.getMessage().equals(this.getMessage()) == false) return false; if (other.getSubject() == null ^ this.getSubject() == null) return false; if (other.getSubject() != null && other.getSubject().equals(this.getSubject()) == false) return false; if (other.getMessageStructure() == null ^ this.getMessageStructure() == null) return false; if (other.getMessageStructure() != null && other.getMessageStructure().equals(this.getMessageStructure()) == false) return false; if (other.getMessageAttributes() == null ^ this.getMessageAttributes() == null) return false; if (other.getMessageAttributes() != null && other.getMessageAttributes().equals(this.getMessageAttributes()) == false) return false; if (other.getMessageDeduplicationId() == null ^ this.getMessageDeduplicationId() == null) return false; if (other.getMessageDeduplicationId() != null && other.getMessageDeduplicationId().equals(this.getMessageDeduplicationId()) == false) return false; if (other.getMessageGroupId() == null ^ this.getMessageGroupId() == null) return false; if (other.getMessageGroupId() != null && other.getMessageGroupId().equals(this.getMessageGroupId()) == false) return false; return true; } }