@Override protected void doProcess(AppendRequest request, ImapSession session, String tag, ImapCommand command, Responder responder) { final String mailboxName = request.getMailboxName(); final InputStream messageIn = request.getMessage(); final Date datetime = request.getDatetime(); final Flags flags = request.getFlags(); final MailboxPath mailboxPath = PathConverter.forSession(session).buildFullPath(mailboxName); try { final MailboxManager mailboxManager = getMailboxManager(); final MessageManager mailbox = mailboxManager.getMailbox(mailboxPath, ImapSessionUtils.getMailboxSession(session)); appendToMailbox(messageIn, datetime, flags, session, tag, command, mailbox, responder, mailboxPath); } catch (MailboxNotFoundException e) { // consume message on exception consume(messageIn); LOGGER.debug("Append failed for mailbox {}", mailboxPath, e); // Indicates that the mailbox does not exist // So TRY CREATE tryCreate(session, tag, command, responder, e); } catch (MailboxException e) { // consume message on exception consume(messageIn); LOGGER.error("Append failed for mailbox {}", mailboxPath, e); // Some other issue no(command, tag, responder, HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING); } }
@Override protected ImapMessage decode(ImapCommand command, ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException { String mailboxName = request.mailbox(); Flags flags = optionalAppendFlags(request); if (flags == null) { flags = new Flags(); } Date datetime = optionalDateTime(request); if (datetime == null) { datetime = new Date(); } request.nextWordChar(); return new AppendRequest(command, mailboxName, flags, datetime, request.consumeLiteral(true), tag); } }
@Override protected Closeable addContextToMDC(AppendRequest message) { return MDCBuilder.create() .addContext(MDCBuilder.ACTION, "APPEND") .addContext("mailbox", message.getMailboxName()) .build(); } }
/** * @see * org.apache.james.imap.decode.base.AbstractImapCommandParser#decode(org.apache.james.imap.api.ImapCommand, * org.apache.james.imap.decode.ImapRequestLineReader, java.lang.String, * org.apache.james.imap.api.process.ImapSession) */ protected ImapMessage decode(ImapCommand command, ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException { String mailboxName = request.mailbox(); Flags flags = optionalAppendFlags(request); if (flags == null) { flags = new Flags(); } Date datetime = optionalDateTime(request); if (datetime == null) { datetime = new Date(); } request.nextWordChar(); final ImapMessage result = new AppendRequest(command, mailboxName, flags, datetime, request.consumeLiteral(true), tag); return result; } }
final String mailboxName = request.getMailboxName(); final InputStream messageIn = request.getMessage(); final Date datetime = request.getDatetime(); final Flags flags = request.getFlags(); final MailboxPath mailboxPath = buildFullPath(session, mailboxName);