protected MessageDetails exposeMessage()

in server/src/main/java/org/apache/hupa/server/service/GetMessageDetailsServiceImpl.java [78:112]


    protected MessageDetails exposeMessage(User user, ImapFolder folder, long uid) throws Exception {
        IMAPStore store = null;
        com.sun.mail.imap.IMAPFolder f = null;
        try {
            store = cache.get(user);

            f = (com.sun.mail.imap.IMAPFolder) store.getFolder(folder.getFullName());

            if (f.isOpen() == false) {
                f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
            }

            MimeMessage message = (MimeMessage) f.getMessageByUID(uid);

            MessageDetails mDetails = mimeToDetails(message, f.getFullName(), uid, user);

            mDetails.setUid(uid);

            f.setFlags(new Message[] { message }, new Flags(Flag.SEEN), true);

            return mDetails;
        } catch (Exception e) {
            logger.error("Unable to expose msg for user " + user + " in folder " + folder + " with uid " + uid, e);
            throw new Exception("Unable to expose msg for user " + user + " in folder " + folder + " with uid " + uid);

        } finally {
            if (f != null && f.isOpen()) {
                try {
                    f.close(false);
                } catch (MessagingException e) {
                    // ignore on close
                }
            }
        }
    }