Interface Delivery

All Known Implementing Classes:
ClientDelivery

public interface Delivery
Incoming Delivery type that provides access to the message and the delivery data along with methods for settling the delivery when processing completes.
  • Method Details

    • receiver

      Receiver receiver()
      Returns:
      the Receiver that originated this Delivery.
    • message

      <E> Message<E> message() throws ClientException
      Decode the Delivery payload and return an Message object.

      If the incoming message carried any delivery annotations they can be accessed via the annotations() method. Re-sending the returned message will not also send the incoming delivery annotations, the sender must include them in the Sender.send(Message, Map) call if they are to be forwarded onto the next recipient.

      Calling this message claims the payload of the delivery for the returned Message and excludes use of the rawInputStream() method of the Delivery object. Calling the rawInputStream() method after calling this method throws ClientIllegalStateException.

      Care should be taken if attempting to specify anything other than the wild card type for the body of the returned message as the wrong type specification can lead to an exception.

      Type Parameters:
      E - The type of message body that should be contained in the returned Message.
      Returns:
      a Message instance that wraps the decoded payload.
      Throws:
      ClientException - if an error occurs while decoding the payload.
    • rawInputStream

      InputStream rawInputStream() throws ClientException
      Create and return an InputStream that reads the raw payload bytes of the given Delivery.

      Calling this method claims the payload of the delivery for the returned InputStream and excludes use of the message() and annotations() methods of the Delivery object. Closing the returned input stream discards any unread bytes from the delivery payload. Calling the message() or annotations() methods after calling this method throws ClientIllegalStateException.

      Returns:
      an InputStream instance that can be used to read the raw delivery payload.
      Throws:
      ClientException - if an error occurs while decoding the payload.
    • annotations

      Map<String,Object> annotations() throws ClientException
      Decodes the Delivery payload and returns a Map containing a copy of any associated DeliveryAnnotations that were transmitted with the Message payload of this Delivery.

      Calling this message claims the payload of the delivery for the returned Map and the decoded Message that can be accessed via the message() method and excludes use of the rawInputStream() method of the Delivery object. Calling the rawInputStream() method after calling this method throws ClientIllegalStateException.

      Returns:
      copy of the delivery annotations that were transmitted with the Message payload.
      Throws:
      ClientException - if an error occurs while decoding the payload.
    • accept

      Delivery accept() throws ClientException
      Accepts and settles the delivery.
      Returns:
      this Delivery instance.
      Throws:
      ClientException - if an error occurs while sending the disposition
    • release

      Delivery release() throws ClientException
      Releases and settles the delivery.
      Returns:
      this Delivery instance.
      Throws:
      ClientException - if an error occurs while sending the disposition
    • reject

      Delivery reject(String condition, String description) throws ClientException
      Rejects and settles the delivery, sending supplied error information along with the rejection.
      Parameters:
      condition - The error condition value to supply with the rejection.
      description - The error description value to supply with the rejection.
      Returns:
      this Delivery instance.
      Throws:
      ClientException - if an error occurs while sending the disposition
    • modified

      Delivery modified(boolean deliveryFailed, boolean undeliverableHere) throws ClientException
      Modifies and settles the delivery.
      Parameters:
      deliveryFailed - Indicates if the modified delivery failed.
      undeliverableHere - Indicates if the modified delivery should not be returned here again.
      Returns:
      this Delivery instance.
      Throws:
      ClientException - if an error occurs while sending the disposition
    • disposition

      Delivery disposition(DeliveryState state, boolean settle) throws ClientException
      Updates the DeliveryState, and optionally settle the delivery as well.
      Parameters:
      state - the delivery state to apply
      settle - whether to settle() the delivery at the same time
      Returns:
      this Delivery instance.
      Throws:
      ClientException - if an error occurs while sending the disposition
    • settle

      Delivery settle() throws ClientException
      Settles the delivery locally.
      Returns:
      the delivery
      Throws:
      ClientException - if an error occurs while sending the disposition
    • settled

      boolean settled() throws ClientException
      Returns:
      true if the delivery has been locally settled.
      Throws:
      ClientException - if an error occurs while reading the settled state
    • state

      Gets the current local state for the delivery.
      Returns:
      the delivery state
      Throws:
      ClientException - if an error occurs while reading the delivery state
    • remoteState

      DeliveryState remoteState() throws ClientException
      Gets the current remote state for the delivery.
      Returns:
      the remote delivery state
      Throws:
      ClientException - if an error occurs while reading the remote delivery state
    • remoteSettled

      boolean remoteSettled() throws ClientException
      Gets whether the delivery was settled by the remote peer yet.
      Returns:
      whether the delivery is remotely settled
      Throws:
      ClientException - if an error occurs while reading the remote settlement state
    • messageFormat

      int messageFormat() throws ClientException
      Gets the message format for the current delivery.
      Returns:
      the message format
      Throws:
      ClientException - if an error occurs while reading the delivery message format