@Override public void setSelected(MailFolder folder, boolean readOnly) { ImapSessionFolder sessionMailbox = new ImapSessionFolder(folder, this, readOnly); this.state = ImapSessionState.SELECTED; this.selectedMailbox = sessionMailbox; }
@Override public int getFirstUnseen() { return correctForExpungedMessages(folder.getFirstUnseen()); }
private String getMessageData(boolean useUids, FetchRequest fetch, ImapSessionFolder mailbox, long uid) throws FolderException, ProtocolException { StoredMessage storedMessage = mailbox.getMessage(uid); return outputMessage(fetch, storedMessage, mailbox, useUids); }
response.flagsResponse(mailbox.getPermanentFlags()); response.existsResponse(mailbox.getMessageCount()); final boolean resetRecent = !isExamine; response.recentResponse(mailbox.getRecentCount(resetRecent)); response.okResponse("UIDVALIDITY " + mailbox.getUidValidity(), null); response.okResponse("UIDNEXT " + mailbox.getUidNext(), null); int firstUnseen = mailbox.getFirstUnseen(); if (firstUnseen > 0) { response.okResponse("UNSEEN " + firstUnseen, response.permanentFlagsResponse(mailbox.getPermanentFlags()); if (mailbox.isReadonly()) { response.commandComplete(this, "READ-ONLY"); } else {
if (selected != null) { if (selected.isSizeChanged()) { response.existsResponse(selected.getMessageCount()); response.recentResponse(selected.getRecentCount(true)); selected.setSizeChanged(false); final List<ImapSessionFolder.FlagUpdate> flagUpdates = selected.getFlagUpdates(); for (ImapSessionFolder.FlagUpdate update : flagUpdates) { int msn = update.getMsn(); int[] expunged = selected.getExpunged(); for (int msn : expunged) { response.expungeResponse(msn);
long[] uids = mailbox.getMessageUids(); for (long uid : uids) { int msn = mailbox.getMsn(uid); mailbox.setFlags(flags, false, uid, silentListener, useUids); } else if (directive.getSign() > 0) { mailbox.setFlags(flags, true, uid, silentListener, useUids); } else { mailbox.replaceFlags(flags, uid, silentListener, useUids);
List<Long> copiedUidsNew = new ArrayList<>(); long[] uids = currentMailbox.getMessageUids(); for (long uid : uids) { boolean inSet; inSet = includes(idSet, uid); } else { int msn = currentMailbox.getMsn(uid); inSet = includes(idSet, msn); long copiedUid = currentMailbox.copyMessage(uid, toFolder); copiedUidsOld.add(uid); copiedUidsNew.add(copiedUid);
long[] uids = mailbox.getMessageUids(); for (long uid : uids) { int msn = mailbox.getMsn(uid); if (mailbox.getMessageCount() > 0 && includes(idSet, Long.MAX_VALUE) && !includes(idSet, lastMessageUid)) { String msgData = getMessageData(useUids, fetch, mailbox, lastMessageUid); response.fetchResponse(mailbox.getMsn(lastMessageUid), msgData);
/** * @see CommandTemplate#doProcess */ @Override protected void doProcess(ImapRequestLineReader request, ImapResponse response, ImapSession session) throws ProtocolException, FolderException, AuthorizationException { String mailboxName = parser.mailbox(request); parser.endLine(request); MailFolder folder = getMailbox(mailboxName, session, true); if (session.getSelected() != null && folder.getFullName().equals(session.getSelected().getFullName())) { session.deselect(); } session.getHost().deleteMailbox(session.getUser(), mailboxName); session.unsolicitedResponses(response); response.commandComplete(this); } }