Interface AdvancedMessage<E>

    • Method Detail

      • create

        static <V> AdvancedMessage<V> create()
        Creates a new AdvancedMessage instance using the library default implementation.
        Type Parameters:
        V - The type to use when specifying the body section value type.
        Returns:
        a new AdvancedMessage instance.
      • header

        Header header()
               throws ClientException
        Return the current Header assigned to this message, if none was assigned yet then this method returns null.
        Returns:
        the currently assigned Header for this message.
        Throws:
        ClientException - if an error occurs while retrieving the message data.
      • properties

        Properties properties()
                       throws ClientException
        Return the current Properties assigned to this message, if none was assigned yet then this method returns null.
        Returns:
        the currently assigned Properties for this message.
        Throws:
        ClientException - if an error occurs while retrieving the message data.
      • footer

        Footer footer()
               throws ClientException
        Return the current Footer assigned to this message, if none was assigned yet then this method returns null.
        Returns:
        the currently assigned Footer for this message.
        Throws:
        ClientException - if an error occurs while retrieving the message data.
      • messageFormat

        int messageFormat()
                   throws ClientException
        Returns:
        the currently assigned message format for this message.
        Throws:
        ClientException - if an error occurs while retrieving the message data.
      • messageFormat

        AdvancedMessage<E> messageFormat​(int messageFormat)
                                  throws ClientException
        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
        
         
        Parameters:
        messageFormat - The message format to encode into the transfer frame that carries the message.
        Returns:
        this AdvancedMessage instance.
        Throws:
        ClientException - if an error occurs while configuring the message format.
      • addBodySection

        AdvancedMessage<E> addBodySection​(Section<?> bodySection)
                                   throws ClientException
        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.

        Parameters:
        bodySection - The Section instance to append to the internal collection.
        Returns:
        this AdvancedMessage instance.
        Throws:
        ClientException - if an error occurs while writing to the message body sections.
      • bodySections

        java.util.Collection<Section<?>> bodySections()
                                               throws ClientException
        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.
        Returns:
        an unmodifiable Collection that is a view of the current sections assigned to this message.
        Throws:
        ClientException - if an error occurs while retrieving the message data.
      • forEachBodySection

        AdvancedMessage<E> forEachBodySection​(java.util.function.Consumer<Section<?>> consumer)
                                       throws ClientException
        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.
        Parameters:
        consumer - the Consumer that will operate on each of the body sections in this message.
        Returns:
        this AdvancedMessage instance.
        Throws:
        ClientException - if an error occurs while iterating over the message data.
      • encode

        ProtonBuffer encode​(java.util.Map<java.lang.String,​java.lang.Object> deliveryAnnotations)
                     throws ClientException
        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.
        Parameters:
        deliveryAnnotations - A Map of delivery annotation values that were requested to be included in the transmitted message.
        Returns:
        the encoded form of this message in a ProtonBuffer instance.
        Throws:
        ClientException - if an error occurs while encoding the message data.