@Override
  public final void pre_commit(boolean dirty) throws DataFault {

    /* All commits to this object forces a write back of the message
     * as it is hard to tell if the message has changed.
     *
     */
    hash = -1;
    try {
      if (m != null) {
        // StreamData sd = new MessageStreamData(m);
        StreamData sd = new ByteArrayStreamData();
        // can't call saveChanges on imported imap message
        if (auto_save) {
          m.saveChanges();
        }
        m.writeTo(sd.getOutputStream());
        // getLogger().debug("update value to "+sd);
        record.setProperty(MESSAGE, sd);
        m = null; // force re-read
      }
    } catch (Exception e) {
      getContext().error(e, "Error writing mail message");
    }
  }
 /* (non-Javadoc)
  * @see uk.ac.hpcx.model.helpdesk.MessageProvider#getMessage()
  */
 public final MimeMessage getMessage() throws DataFault, MessagingException {
   if (m == null) {
     Session session = Session.getInstance(getContext().getProperties(), null);
     StreamData sd = record.getStreamDataProperty(MESSAGE);
     if (sd == null) {
       return null;
     }
     m = new MimeMessage(session, sd.getInputStream());
     auto_save = true; // These we can save
   }
   return m;
 }