/** * Parses a request into a command message for later processing. * * @param request * <code>ImapRequestLineReader</code>, not null * @return <code>ImapCommandMessage</code>, not null */ @Override public final ImapMessage parse(ImapRequestLineReader request, String tag, ImapSession session) { ImapMessage result; if (!command.validForState(session.getState())) { result = statusResponseFactory.taggedNo(tag, command, HumanReadableText.INVALID_COMMAND); } else { try { result = decode(command, request, tag, session); } catch (DecodingException e) { LOGGER.debug("Cannot parse protocol ", e); result = statusResponseFactory.taggedBad(tag, command, e.getKey()); } } return result; }
/** * Parses a request into a command message for later processing. * * @param request * <code>ImapRequestLineReader</code>, not null * @return <code>ImapCommandMessage</code>, not null */ public final ImapMessage parse(ImapRequestLineReader request, String tag, ImapSession session) { ImapMessage result; if (!command.validForState(session.getState())) { result = statusResponseFactory.taggedNo(tag, command, HumanReadableText.INVALID_COMMAND); } else { try { result = decode(command, request, tag, session); } catch (DecodingException e) { if (session.getLog().isDebugEnabled()) { session.getLog().debug("Cannot parse protocol ", e); } result = statusResponseFactory.taggedBad(tag, command, e.getKey()); } } return result; }
final void doProcess(final M message, final ImapCommand command, final String tag, Responder responder, ImapSession session) { if (!command.validForState(session.getState())) { ImapResponseMessage response = factory.taggedNo(tag, command, HumanReadableText.INVALID_COMMAND); responder.respond(response); } else { getMailboxManager().startProcessingRequest(ImapSessionUtils.getMailboxSession(session)); doProcess(message, session, tag, command, responder); getMailboxManager().endProcessingRequest(ImapSessionUtils.getMailboxSession(session)); } }
final void doProcess(M message, ImapCommand command, String tag, Responder responder, ImapSession session) { try { if (!command.validForState(session.getState())) { ImapResponseMessage response = factory.taggedNo(tag, command, HumanReadableText.INVALID_COMMAND); responder.respond(response); } else { getMailboxManager().startProcessingRequest(ImapSessionUtils.getMailboxSession(session)); doProcess(message, session, tag, command, responder); getMailboxManager().endProcessingRequest(ImapSessionUtils.getMailboxSession(session)); } } catch (DeniedAccessOnSharedMailboxException e) { no(command, tag, responder, HumanReadableText.DENIED_SHARED_MAILBOX); } }