public Message[] getMessages() {
   Message rc[] = new Message[messages.size()];
   int count = 0;
   for (Iterator<AddMessageCommand> iter = messages.iterator(); iter.hasNext(); ) {
     AddMessageCommand cmd = iter.next();
     rc[count++] = cmd.getMessage();
   }
   return rc;
 }
    /**
     * @return true if something to commit
     * @throws IOException
     */
    public List<Future<Object>> commit() throws IOException {
      List<Future<Object>> results = new ArrayList<Future<Object>>();
      // Do all the message adds.
      for (Iterator<AddMessageCommand> iter = messages.iterator(); iter.hasNext(); ) {
        AddMessageCommand cmd = iter.next();
        results.add(cmd.run());
      }
      // And removes..
      for (Iterator<RemoveMessageCommand> iter = acks.iterator(); iter.hasNext(); ) {
        RemoveMessageCommand cmd = iter.next();
        cmd.run();
        results.add(cmd.run());
      }

      return results;
    }