/**
   * Attaches RM acknowledgement information such as inbound sequence acknowledgements (if there is
   * an inbound sequence bound to the specified outbound sequence) or outbound sequence
   * acknowledgement requested flag to the outgoing message.
   *
   * @throws UnknownSequenceException if no such sequence exits for a given sequence identifier
   */
  public void attachAcknowledgementInfo(@NotNull ApplicationMessage outMessage)
      throws UnknownSequenceException {
    assert sequenceManager != null;
    assert outMessage != null;
    assert outMessage.getSequenceId() != null;

    // inbound sequence acknowledgements
    outMessage.setAcknowledgementData(getAcknowledgementData(outMessage.getSequenceId()));
  }
  public void putToDeliveryQueue(ApplicationMessage message) throws RxRuntimeException {
    assert sequenceManager != null;

    if (LOGGER.isLoggable(Level.FINER)) {
      LOGGER.finer(
          String.format(
              "Putting a message with number [ %d ] to the delivery queue of a sequence [ %s ]",
              message.getMessageNumber(), message.getSequenceId()));
    }
    sequenceManager.getSequence(message.getSequenceId()).getDeliveryQueue().put(message);
  }
 public void deliver(ApplicationMessage message) {
   if (message instanceof JaxwsApplicationMessage) {
     deliver(JaxwsApplicationMessage.class.cast(message));
   } else {
     throw LOGGER.logSevereException(
         new RxRuntimeException(
             LocalizationMessages.WSRM_1141_UNEXPECTED_MESSAGE_CLASS(
                 message.getClass().getName(), JaxwsApplicationMessage.class.getName())));
   }
 }