Class ClientMessage<E>

java.lang.Object
org.apache.qpid.protonj2.client.impl.ClientMessage<E>
Type Parameters:
E - the body type that the Message carries
All Implemented Interfaces:
AdvancedMessage<E>, Message<E>

public final class ClientMessage<E> extends Object implements AdvancedMessage<E>
Client provided AdvancedMessage implementation that is used when sending messages from a ClientSender or when decoding an AMQP Transfer for which all frames have arrived.
  • Method Details

    • toAdvancedMessage

      public AdvancedMessage<E> toAdvancedMessage()
      Description copied from interface: Message
      Safely convert this Message instance into an AdvancedMessage reference which can offer more low level APIs to an experienced client user.

      The default implementation first checks if the current instance is already of the correct type before performing a brute force conversion of the current message to the client's own internal AdvancedMessage implementation. Users should override this method if the internal conversion implementation is insufficient to obtain the proper message structure to encode a meaningful 'on the wire' encoding of their custom implementation.

      Specified by:
      toAdvancedMessage in interface Message<E>
      Returns:
      a AdvancedMessage that contains this message's current state.
    • create

      public static <V> ClientMessage<V> create()
      Creates an empty ClientMessage instance.
      Type Parameters:
      V - The type of the body value carried in this message.
      Returns:
      a new empty ClientMessage instance.
    • create

      public static <V> ClientMessage<V> create(Section<V> body)
      Creates an ClientMessage instance with the given body Section value.
      Type Parameters:
      V - The type of the body value carried in this message body section.
      Parameters:
      body - The body Section to assign to the created message instance.
      Returns:
      a new ClientMessage instance with the given body.
    • createAdvancedMessage

      public static <V> ClientMessage<V> createAdvancedMessage()
      Creates an empty ClientMessage instance.
      Type Parameters:
      V - The type of the body value carried in this message.
      Returns:
      a new empty ClientMessage instance.
    • durable

      public boolean durable()
      Description copied from interface: Message
      For an message being sent this method returns the current state of the durable flag on the message. For a received message this method returns the durable flag value at the time of sending (or false if not set) unless the value is updated after being received by the receiver.
      Specified by:
      durable in interface Message<E>
      Returns:
      true if the Message is marked as being durable
    • durable

      public ClientMessage<E> durable(boolean durable)
      Description copied from interface: Message
      Controls if the message is marked as durable when sent.
      Specified by:
      durable in interface Message<E>
      Parameters:
      durable - value assigned to the durable flag for this message.
      Returns:
      this Message instance.
    • priority

      public byte priority()
      Specified by:
      priority in interface Message<E>
      Returns:
      the currently configured priority or the default if none set.
    • priority

      public ClientMessage<E> priority(byte priority)
      Description copied from interface: Message
      Sets the relative message priority. Higher numbers indicate higher priority messages. Messages with higher priorities MAY be delivered before those with lower priorities. For a received message this overwrites any value that was set by the remote sender.
      Specified by:
      priority in interface Message<E>
      Parameters:
      priority - The priority value to assign this message.
      Returns:
      this Message instance.
    • timeToLive

      public long timeToLive()
      Specified by:
      timeToLive in interface Message<E>
      Returns:
      the currently set Time To Live duration (milliseconds).
    • timeToLive

      public ClientMessage<E> timeToLive(long timeToLive)
      Description copied from interface: Message
      Sets the message time to live value.

      The time to live duration in milliseconds for which the message is to be considered "live". If this is set then a message expiration time will be computed based on the time of arrival at an intermediary. Messages that live longer than their expiration time will be discarded (or dead lettered). When a message is transmitted by an intermediary that was received with a time to live, the transmitted message's header SHOULD contain a time to live that is computed as the difference between the current time and the formerly computed message expiration time, i.e., the reduced time to live, so that messages will eventually die if they end up in a delivery loop.

      Specified by:
      timeToLive in interface Message<E>
      Parameters:
      timeToLive - The time span in milliseconds that this message should remain live before being discarded.
      Returns:
      this Message instance.
    • firstAcquirer

      public boolean firstAcquirer()
      Specified by:
      firstAcquirer in interface Message<E>
      Returns:
      if this message has been acquired by another link previously
    • firstAcquirer

      public ClientMessage<E> firstAcquirer(boolean firstAcquirer)
      Description copied from interface: Message
      Sets the value to assign to the first acquirer field of this Message.

      If this value is true, then this message has not been acquired by any other link. If this value is false, then this message MAY have previously been acquired by another link or links.

      Specified by:
      firstAcquirer in interface Message<E>
      Parameters:
      firstAcquirer - The boolean value to assign to the first acquirer field of the message.
      Returns:
      this Message instance.
    • deliveryCount

      public long deliveryCount()
      Specified by:
      deliveryCount in interface Message<E>
      Returns:
      the number of failed delivery attempts that this message has been part of.
    • deliveryCount

      public ClientMessage<E> deliveryCount(long deliveryCount)
      Description copied from interface: Message
      Sets the value to assign to the delivery count field of this Message.

      Delivery count is the number of unsuccessful previous attempts to deliver this message. If this value is non-zero it can be taken as an indication that the delivery might be a duplicate. On first delivery, the value is zero. It is incremented upon an outcome being settled at the sender, according to rules defined for each outcome.

      Specified by:
      deliveryCount in interface Message<E>
      Parameters:
      deliveryCount - The new delivery count value to assign to this message.
      Returns:
      this Message instance.
    • messageId

      public Object messageId()
      Specified by:
      messageId in interface Message<E>
      Returns:
      the currently set Message ID or null if none set.
    • messageId

      public Message<E> messageId(Object messageId)
      Description copied from interface: Message
      Sets the message Id value to assign to this Message.

      The message Id, if set, uniquely identifies a message within the message system. The message producer is usually responsible for setting the message-id in such a way that it is assured to be globally unique. A remote peer MAY discard a message as a duplicate if the value of the message-id matches that of a previously received message sent to the same node.

      Specified by:
      messageId in interface Message<E>
      Parameters:
      messageId - The message Id value to assign to this Message instance.
      Returns:
      this Message instance.
    • userId

      public byte[] userId()
      Specified by:
      userId in interface Message<E>
      Returns:
      the currently set User ID or null if none set.
    • userId

      public Message<E> userId(byte[] userId)
      Description copied from interface: Message
      Sets the user Id value to assign to this Message.

      The identity of the user responsible for producing the message. The client sets this value, and it MAY be authenticated by intermediaries.

      Specified by:
      userId in interface Message<E>
      Parameters:
      userId - The user Id value to assign to this Message instance.
      Returns:
      this Message instance.
    • to

      public String to()
      Specified by:
      to in interface Message<E>
      Returns:
      the currently set 'To' address which indicates the intended destination of the message.
    • to

      public Message<E> to(String to)
      Description copied from interface: Message
      Sets the 'to' value to assign to this Message.

      The to field identifies the node that is the intended destination of the message. On any given transfer this might not be the node at the receiving end of the link.

      Specified by:
      to in interface Message<E>
      Parameters:
      to - The 'to' node value to assign to this Message instance.
      Returns:
      this Message instance.
    • subject

      public String subject()
      Specified by:
      subject in interface Message<E>
      Returns:
      the currently set subject metadata for this message or null if none set.
    • subject

      public Message<E> subject(String subject)
      Description copied from interface: Message
      Sets the subject value to assign to this Message.

      A common field for summary information about the message content and purpose.

      Specified by:
      subject in interface Message<E>
      Parameters:
      subject - The subject node value to assign to this Message instance.
      Returns:
      this Message instance.
    • replyTo

      public String replyTo()
      Specified by:
      replyTo in interface Message<E>
      Returns:
      the configured address of the node where replies to this message should be sent, or null if not set.
    • replyTo

      public Message<E> replyTo(String replyTo)
      Description copied from interface: Message
      Sets the replyTo value to assign to this Message.

      The address of the node to send replies to.

      Specified by:
      replyTo in interface Message<E>
      Parameters:
      replyTo - The replyTo node value to assign to this Message instance.
      Returns:
      this Message instance.
    • correlationId

      public Object correlationId()
      Specified by:
      correlationId in interface Message<E>
      Returns:
      the currently assigned correlation ID or null if none set.
    • correlationId

      public Message<E> correlationId(Object correlationId)
      Description copied from interface: Message
      Sets the correlationId value to assign to this Message.

      This is a client-specific id that can be used to mark or identify messages between clients.

      Specified by:
      correlationId in interface Message<E>
      Parameters:
      correlationId - The correlationId value to assign to this Message instance.
      Returns:
      this Message instance.
    • contentType

      public String contentType()
      Specified by:
      contentType in interface Message<E>
      Returns:
      the assigned content type value for the message body section or null if not set.
    • contentType

      public Message<E> contentType(String contentType)
      Description copied from interface: Message
      Sets the contentType value to assign to this Message.

      The RFC-2046 MIME type for the message's application-data section (body). As per RFC-2046 this can contain a charset parameter defining the character encoding used: e.g., 'text/plain; charset="utf-8"'.

      For clarity, as per section 7.2.1 of RFC-2616, where the content type is unknown the content-type SHOULD NOT be set. This allows the recipient the opportunity to determine the actual type. Where the section is known to be truly opaque binary data, the content-type SHOULD be set to application/octet-stream.

      When using an application-data section with a section code other than data, content-type SHOULD NOT be set.

      Specified by:
      contentType in interface Message<E>
      Parameters:
      contentType - The contentType value to assign to this Message instance.
      Returns:
      this Message instance.
    • contentEncoding

      public String contentEncoding()
      Specified by:
      contentEncoding in interface Message<E>
      Returns:
      the assigned content encoding value for the message body section or null if not set.
    • contentEncoding

      public Message<E> contentEncoding(String contentEncoding)
      Description copied from interface: Message
      Sets the contentEncoding value to assign to this Message.

      The content-encoding property is used as a modifier to the content-type. When present, its value indicates what additional content encodings have been applied to the application-data, and thus what decoding mechanisms need to be applied in order to obtain the media-type referenced by the content-type header field.

      Content-encoding is primarily used to allow a document to be compressed without losing the identity of its underlying content type.

      Content-encodings are to be interpreted as per section 3.5 of RFC 2616 [RFC2616]. Valid content-encodings are registered at IANA [IANAHTTPPARAMS].

      The content-encoding MUST NOT be set when the application-data section is other than data. The binary representation of all other application-data section types is defined completely in terms of the AMQP type system.

      Implementations MUST NOT use the identity encoding. Instead, implementations SHOULD NOT set this property. Implementations SHOULD NOT use the compress encoding, except as to remain compatible with messages originally sent with other protocols, e.g. HTTP or SMTP.

      Implementations SHOULD NOT specify multiple content-encoding values except as to be compatible with messages originally sent with other protocols, e.g. HTTP or SMTP.

      Specified by:
      contentEncoding in interface Message<E>
      Parameters:
      contentEncoding - The contentEncoding value to assign to this Message instance.
      Returns:
      this Message instance.
    • absoluteExpiryTime

      public long absoluteExpiryTime()
      Specified by:
      absoluteExpiryTime in interface Message<E>
      Returns:
      the configured absolute time of expiration for this message.
    • absoluteExpiryTime

      public Message<E> absoluteExpiryTime(long expiryTime)
      Description copied from interface: Message
      Sets the absolute expiration time value to assign to this Message.

      An absolute time when this message is considered to be expired.

      Specified by:
      absoluteExpiryTime in interface Message<E>
      Parameters:
      expiryTime - The absolute expiration time value to assign to this Message instance.
      Returns:
      this Message instance.
    • creationTime

      public long creationTime()
      Specified by:
      creationTime in interface Message<E>
      Returns:
      the absolute time of creation for this message.
    • creationTime

      public Message<E> creationTime(long createTime)
      Description copied from interface: Message
      Sets the creation time value to assign to this Message.

      An absolute time when this message was created.

      Specified by:
      creationTime in interface Message<E>
      Parameters:
      createTime - The creation time value to assign to this Message instance.
      Returns:
      this Message instance.
    • groupId

      public String groupId()
      Specified by:
      groupId in interface Message<E>
      Returns:
      the assigned group ID for this message or null if not set.
    • groupId

      public Message<E> groupId(String groupId)
      Description copied from interface: Message
      Sets the groupId value to assign to this Message.

      Identifies the group the message belongs to.

      Specified by:
      groupId in interface Message<E>
      Parameters:
      groupId - The groupId value to assign to this Message instance.
      Returns:
      this Message instance.
    • groupSequence

      public int groupSequence()
      Specified by:
      groupSequence in interface Message<E>
      Returns:
      the assigned group sequence for this message.
    • groupSequence

      public Message<E> groupSequence(int groupSequence)
      Description copied from interface: Message
      Sets the group sequence value to assign to this Message.

      The relative position of this message within its group.

      Specified by:
      groupSequence in interface Message<E>
      Parameters:
      groupSequence - The group sequence to assign to this Message instance.
      Returns:
      this Message instance.
    • replyToGroupId

      public String replyToGroupId()
      Specified by:
      replyToGroupId in interface Message<E>
      Returns:
      the client-specific id used so that client can send replies to this message to a specific group.
    • replyToGroupId

      public Message<E> replyToGroupId(String replyToGroupId)
      Description copied from interface: Message
      Sets the replyTo group Id value to assign to this Message.

      This is a client-specific id that is used so that client can send replies to this message to a specific group.

      Specified by:
      replyToGroupId in interface Message<E>
      Parameters:
      replyToGroupId - The replyTo group Id to assign to this Message instance.
      Returns:
      this Message instance.
    • annotation

      public Object annotation(String key)
      Description copied from interface: Message
      Returns the requested message annotation value from this Message if it exists or returns null otherwise.
      Specified by:
      annotation in interface Message<E>
      Parameters:
      key - The key of the message annotation to query for.
      Returns:
      the corresponding message annotation value of null if none was carried in this Message.
    • hasAnnotation

      public boolean hasAnnotation(String key)
      Description copied from interface: Message
      Query the Message to determine if it carries the given message annotation key.
      Specified by:
      hasAnnotation in interface Message<E>
      Parameters:
      key - The key of the message annotation to query for.
      Returns:
      true if the Message carries the given message annotation.
    • hasAnnotations

      public boolean hasAnnotations()
      Description copied from interface: Message
      Query the Message to determine if it carries any message annotations.
      Specified by:
      hasAnnotations in interface Message<E>
      Returns:
      true if the Message carries any message annotations.
    • removeAnnotation

      public Object removeAnnotation(String key)
      Description copied from interface: Message
      Removes the given message annotation from the values carried in the message currently, if none was present than this method returns null.
      Specified by:
      removeAnnotation in interface Message<E>
      Parameters:
      key - The key of the message annotation to query for removal.
      Returns:
      the message annotation value that was previously assigned to that key.
    • forEachAnnotation

      public Message<E> forEachAnnotation(BiConsumer<String,Object> action)
      Description copied from interface: Message
      Invokes the given BiConsumer on each message annotation entry carried in this Message.
      Specified by:
      forEachAnnotation in interface Message<E>
      Parameters:
      action - The action that will be invoked on each message annotation entry.
      Returns:
      this Message instance.
    • annotation

      public ClientMessage<E> annotation(String key, Object value)
      Description copied from interface: Message
      Sets the given message annotation value at the given key, replacing any previous value that was assigned to this Message.
      Specified by:
      annotation in interface Message<E>
      Parameters:
      key - The message annotation key where the value is to be assigned.
      value - The value to assign to the given message annotation key.
      Returns:
      this Message instance.
    • property

      public Object property(String key)
      Description copied from interface: Message
      Returns the requested application property value from this Message if it exists or returns null otherwise.
      Specified by:
      property in interface Message<E>
      Parameters:
      key - The key of the application property to query for.
      Returns:
      the corresponding application property value of null if none was carried in this Message.
    • hasProperty

      public boolean hasProperty(String key)
      Description copied from interface: Message
      Query the Message to determine if it carries the given application property key.
      Specified by:
      hasProperty in interface Message<E>
      Parameters:
      key - The key of the application property to query for.
      Returns:
      true if the Message carries the given application property.
    • hasProperties

      public boolean hasProperties()
      Description copied from interface: Message
      Query the Message to determine if it carries any application properties.
      Specified by:
      hasProperties in interface Message<E>
      Returns:
      true if the Message carries any application properties.
    • removeProperty

      public Object removeProperty(String key)
      Description copied from interface: Message
      Removes the given application property from the values carried in the message currently, if none was present than this method returns null.
      Specified by:
      removeProperty in interface Message<E>
      Parameters:
      key - The key of the application property to query for removal.
      Returns:
      the application property value that was previously assigned to that key.
    • forEachProperty

      public Message<E> forEachProperty(BiConsumer<String,Object> action)
      Description copied from interface: Message
      Invokes the given BiConsumer on each application property entry carried in this Message.
      Specified by:
      forEachProperty in interface Message<E>
      Parameters:
      action - The action that will be invoked on each application property entry.
      Returns:
      this Message instance.
    • property

      public ClientMessage<E> property(String key, Object value)
      Description copied from interface: Message
      Sets the given application property value at the given key, replacing any previous value that was assigned to this Message.
      Specified by:
      property in interface Message<E>
      Parameters:
      key - The application property key where the value is to be assigned.
      value - The value to assign to the given application property key.
      Returns:
      this Message instance.
    • footer

      public Object footer(String key)
      Description copied from interface: Message
      Returns the requested footer value from this Message if it exists or returns null otherwise.
      Specified by:
      footer in interface Message<E>
      Parameters:
      key - The key of the footer to query for.
      Returns:
      the corresponding footer value of null if none was carried in this Message.
    • hasFooter

      public boolean hasFooter(String key)
      Description copied from interface: Message
      Query the Message to determine if it carries the given footer key.
      Specified by:
      hasFooter in interface Message<E>
      Parameters:
      key - The key of the footer to query for.
      Returns:
      true if the Message carries the given footer.
    • hasFooters

      public boolean hasFooters()
      Description copied from interface: Message
      Query the Message to determine if it carries any footers.
      Specified by:
      hasFooters in interface Message<E>
      Returns:
      true if the Message carries any footers.
    • removeFooter

      public Object removeFooter(String key)
      Description copied from interface: Message
      Removes the given footer from the values carried in the message currently, if none was present than this method returns null.
      Specified by:
      removeFooter in interface Message<E>
      Parameters:
      key - The key of the footer to query for removal.
      Returns:
      the footer value that was previously assigned to that key.
    • forEachFooter

      public Message<E> forEachFooter(BiConsumer<String,Object> action)
      Description copied from interface: Message
      Invokes the given BiConsumer on each footer entry carried in this Message.
      Specified by:
      forEachFooter in interface Message<E>
      Parameters:
      action - The action that will be invoked on each footer entry.
      Returns:
      this Message instance.
    • footer

      public ClientMessage<E> footer(String key, Object value)
      Description copied from interface: Message
      Sets the given footer value at the given key, replacing any previous value that was assigned to this Message.
      Specified by:
      footer in interface Message<E>
      Parameters:
      key - The footer key where the value is to be assigned.
      value - The value to assign to the given footer key.
      Returns:
      this Message instance.
    • body

      public E body()
      Description copied from interface: Message
      Returns the body value that is conveyed in this message or null if no body was set locally or sent from the remote if this is an incoming message.
      Specified by:
      body in interface Message<E>
      Returns:
      the message body value or null if none present.
    • body

      public ClientMessage<E> body(E value)
      Description copied from interface: Message
      Sets the body value that is to be conveyed to the remote when this message is sent.

      The Message implementation will choose the AMQP Section to use to wrap the given value.

      Specified by:
      body in interface Message<E>
      Parameters:
      value - The value to assign to the given message body Section.
      Returns:
      this Message instance.
    • header

      public Header header()
      Description copied from interface: AdvancedMessage
      Return the current Header assigned to this message, if none was assigned yet then this method returns null.
      Specified by:
      header in interface AdvancedMessage<E>
      Returns:
      the currently assigned Header for this message.
    • header

      public ClientMessage<E> header(Header header)
      Description copied from interface: AdvancedMessage
      Assign or replace the Header instance associated with this message.
      Specified by:
      header in interface AdvancedMessage<E>
      Parameters:
      header - The Header value to assign to this message.
      Returns:
      this AdvancedMessage instance.
    • annotations

      public MessageAnnotations annotations()
      Description copied from interface: AdvancedMessage
      Return the current MessageAnnotations assigned to this message, if none was assigned yet then this method returns null.
      Specified by:
      annotations in interface AdvancedMessage<E>
      Returns:
      the currently assigned MessageAnnotations for this message.
    • annotations

      public ClientMessage<E> annotations(MessageAnnotations messageAnnotations)
      Description copied from interface: AdvancedMessage
      Assign or replace the MessageAnnotations instance associated with this message.
      Specified by:
      annotations in interface AdvancedMessage<E>
      Parameters:
      messageAnnotations - The MessageAnnotations value to assign to this message.
      Returns:
      this AdvancedMessage instance.
    • properties

      public Properties properties()
      Description copied from interface: AdvancedMessage
      Return the current Properties assigned to this message, if none was assigned yet then this method returns null.
      Specified by:
      properties in interface AdvancedMessage<E>
      Returns:
      the currently assigned Properties for this message.
    • properties

      public ClientMessage<E> properties(Properties properties)
      Description copied from interface: AdvancedMessage
      Assign or replace the Properties instance associated with this message.
      Specified by:
      properties in interface AdvancedMessage<E>
      Parameters:
      properties - The Properties value to assign to this message.
      Returns:
      this AdvancedMessage instance.
    • applicationProperties

      public ApplicationProperties applicationProperties()
      Description copied from interface: AdvancedMessage
      Return the current ApplicationProperties assigned to this message, if none was assigned yet then this method returns null.
      Specified by:
      applicationProperties in interface AdvancedMessage<E>
      Returns:
      the currently assigned ApplicationProperties for this message.
    • applicationProperties

      public ClientMessage<E> applicationProperties(ApplicationProperties applicationProperties)
      Description copied from interface: AdvancedMessage
      Assign or replace the ApplicationProperties instance associated with this message.
      Specified by:
      applicationProperties in interface AdvancedMessage<E>
      Parameters:
      applicationProperties - The ApplicationProperties value to assign to this message.
      Returns:
      this AdvancedMessage instance.
    • footer

      public Footer footer()
      Description copied from interface: AdvancedMessage
      Return the current Footer assigned to this message, if none was assigned yet then this method returns null.
      Specified by:
      footer in interface AdvancedMessage<E>
      Returns:
      the currently assigned Footer for this message.
    • footer

      public ClientMessage<E> footer(Footer footer)
      Description copied from interface: AdvancedMessage
      Assign or replace the Footer instance associated with this message.
      Specified by:
      footer in interface AdvancedMessage<E>
      Parameters:
      footer - The Footer value to assign to this message.
      Returns:
      this AdvancedMessage instance.
    • messageFormat

      public int messageFormat()
      Specified by:
      messageFormat in interface AdvancedMessage<E>
      Returns:
      the currently assigned message format for this message.
    • messageFormat

      public ClientMessage<E> messageFormat(int messageFormat)
      Description copied from interface: AdvancedMessage
      Sets the message format to use when the message is sent. The exact structure of a message, together with its encoding, is defined by the message format (default is the AMQP defined message format zero.

      This field MUST be specified for the first transfer of a multi-transfer message, if it is not set at the time of send of the first transfer the sender uses the AMQP default value of zero for this field.

      The upper three octets of a message format code identify a particular message format. The lowest octet indicates the version of said message format. Any given version of a format is forwards compatible with all higher versions.

      
             3 octets      1 octet
          +----------------+---------+
          | message format | version |
          +----------------+---------+
          |                          |
         msb                        lsb
      
       
      Specified by:
      messageFormat in interface AdvancedMessage<E>
      Parameters:
      messageFormat - The message format to encode into the transfer frame that carries the message.
      Returns:
      this AdvancedMessage instance.
    • encode

      public ProtonBuffer encode(Map<String,Object> deliveryAnnotations, ProtonBufferAllocator allocator) throws ClientException
      Description copied from interface: AdvancedMessage
      Encodes the AdvancedMessage for transmission by the client. The provided DeliveryAnnotations can be included or augmented by the AdvancedMessage implementation based on the target message format. The implementation is responsible for ensuring that the delivery annotations are treated correctly encoded into the correct location in the message.
      Specified by:
      encode in interface AdvancedMessage<E>
      Parameters:
      deliveryAnnotations - A Map of delivery annotation values that were requested to be included in the transmitted message.
      allocator - An allocator that should be used to create the buffer the message is encoded into.
      Returns:
      the encoded form of this message in a ProtonBuffer instance.
      Throws:
      ClientException - if an error occurs while encoding the message data.
    • addBodySection

      public ClientMessage<E> addBodySection(Section<?> bodySection)
      Description copied from interface: AdvancedMessage
      Adds the given Section to the internal collection of sections that will be sent to the remote peer when this message is encoded. If a previous section was added by a call to the Message.body(Object) method it should be retained as the first element of the running list of body sections contained in this message.

      The implementation should make an attempt to validate that sections added are valid for the message format that is assigned when they are added.

      Specified by:
      addBodySection in interface AdvancedMessage<E>
      Parameters:
      bodySection - The Section instance to append to the internal collection.
      Returns:
      this AdvancedMessage instance.
    • bodySections

      public ClientMessage<E> bodySections(Collection<Section<?>> sections)
      Description copied from interface: AdvancedMessage
      Sets the body Section instances to use when encoding this message. The value given replaces any existing sections assigned to this message through the Message.body(Object) or AdvancedMessage.addBodySection(Section) methods. Calling this method with a null or empty collection is equivalent to calling the AdvancedMessage.clearBodySections() method.
      Specified by:
      bodySections in interface AdvancedMessage<E>
      Parameters:
      sections - The Collection of Section instance to assign this message.
      Returns:
      this AdvancedMessage instance.
    • bodySections

      public Collection<Section<?>> bodySections()
      Description copied from interface: AdvancedMessage
      Create and return an unmodifiable Collection that contains the Section instances currently assigned to this message. Changes to this message body after calling this will not be reflected in the returned collection.
      Specified by:
      bodySections in interface AdvancedMessage<E>
      Returns:
      an unmodifiable Collection that is a view of the current sections assigned to this message.
    • forEachBodySection

      public ClientMessage<E> forEachBodySection(Consumer<Section<?>> consumer)
      Description copied from interface: AdvancedMessage
      Performs the given action for each body Section of the AdvancedMessage until all sections have been presented to the given Consumer or the consumer throws an exception.
      Specified by:
      forEachBodySection in interface AdvancedMessage<E>
      Parameters:
      consumer - the Consumer that will operate on each of the body sections in this message.
      Returns:
      this AdvancedMessage instance.
    • clearBodySections

      public ClientMessage<E> clearBodySections()
      Description copied from interface: AdvancedMessage
      Clears all current body Section elements from the AdvancedMessage.
      Specified by:
      clearBodySections in interface AdvancedMessage<E>
      Returns:
      this AdvancedMessage instance.