/** * @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 algorithm = request.atom(); request.eol(); return new CompressRequest(tag, command, algorithm); }
@Override protected void doProcess(CompressRequest request, Responder responder, ImapSession session) { if (session.isCompressionSupported()) { Object obj = session.getAttribute(COMPRESSED); if (obj != null) { responder.respond(factory.taggedNo(request.getTag(), request.getCommand(), HumanReadableText.COMPRESS_ALREADY_ACTIVE)); } else { if (request.getAlgorithm().equalsIgnoreCase(ALGO) == false) { responder.respond(factory.taggedBad(request.getTag(), request.getCommand(), HumanReadableText.ILLEGAL_ARGUMENTS)); } else { responder.respond(factory.taggedOk(request.getTag(), request.getCommand(), HumanReadableText.DEFLATE_ACTIVE)); if (session.startCompression()) { session.setAttribute(COMPRESSED, true); } } } } else { responder.respond(factory.taggedBad(request.getTag(), request.getCommand(), HumanReadableText.UNKNOWN_COMMAND)); } }
@Override protected Closeable addContextToMDC(CompressRequest message) { return MDCBuilder.create() .addContext(MDCBuilder.ACTION, "COMPRESS") .addContext("algorithm", message.getAlgorithm()) .build(); } }
/** * @see * org.apache.james.imap.processor.base.AbstractChainedProcessor#doProcess(org.apache.james.imap.api.ImapMessage, * org.apache.james.imap.api.process.ImapProcessor.Responder, * org.apache.james.imap.api.process.ImapSession) */ protected void doProcess(CompressRequest request, Responder responder, ImapSession session) { if (session.isCompressionSupported()) { Object obj = session.getAttribute(COMPRESSED); if (obj != null) { responder.respond(factory.taggedNo(request.getTag(), request.getCommand(), HumanReadableText.COMPRESS_ALREADY_ACTIVE)); } else { if (request.getAlgorithm().equalsIgnoreCase(ALGO) == false) { responder.respond(factory.taggedBad(request.getTag(), request.getCommand(), HumanReadableText.ILLEGAL_ARGUMENTS)); } else { responder.respond(factory.taggedOk(request.getTag(), request.getCommand(), HumanReadableText.DEFLATE_ACTIVE)); if (session.startCompression()) { session.setAttribute(COMPRESSED, true); } } } } else { responder.respond(factory.taggedBad(request.getTag(), request.getCommand(), HumanReadableText.UNKNOWN_COMMAND)); } }
@Override protected ImapMessage decode(ImapCommand command, ImapRequestLineReader request, String tag, ImapSession session) throws DecodingException { String algorithm = request.atom(); request.eol(); return new CompressRequest(tag, command, algorithm); }