in server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java [60:105]
public FetchMessagesResult fetch(FetchMessagesAction action) throws HupaException {
User user = getUser();
// ImapFolder folder = action.getFolder();
if (action.getFolder() == null || action.getFolder().getFullName() == null) {
// folder = new
// ImapFolderImpl(user.getSettings().getInboxFolderName());
throw new IllegalArgumentException("why you want to ask us for messages in a null folder");
}
com.sun.mail.imap.IMAPFolder f = null;
int start = action.getStart();
int offset = action.getOffset();
try {
IMAPStore store = cache.get(user);
f = (com.sun.mail.imap.IMAPFolder) store.getFolder(action.getFolder().getFullName());
// check if the folder is open, if not open it read only
if (f.isOpen() == false) {
f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);
}
// if the folder is empty we have no need to process
int exists = f.getMessageCount();
if (exists == 0) {
return new FetchMessagesResultImpl(new ArrayList<org.apache.hupa.shared.domain.Message>(), start,
offset, 0, 0);
}
MessageConvertArray convArray = getMessagesToConvert(f, action);
return new FetchMessagesResultImpl(convert(offset, f, convArray.getMesssages()), start, offset,
convArray.getRealCount(), f.getUnreadMessageCount());
} catch (MessagingException e) {
logger.info("Error fetching messages in folder: " + action.getFolder().getFullName() + " " + e.getMessage());
// Folder can not contain messages
return new FetchMessagesResultImpl(new ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset,
0, 0);
} finally {
if (f != null && f.isOpen()) {
try {
f.close(false);
} catch (MessagingException e) {
// we don't care to much about an exception on close here...
}
}
}
}