You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/11/19 02:43:22 UTC
[james-project] 20/43: [Refactoring] Extract method in
MessageRangeProcessor
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit dfb7b23750ff92c236732ece4cc3edbfa051e863
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Nov 15 11:02:55 2019 +0700
[Refactoring] Extract method in MessageRangeProcessor
---
.../processor/AbstractMessageRangeProcessor.java | 76 +++++++++++-----------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
index f339d38..64c52a0 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
@@ -62,56 +62,56 @@ public abstract class AbstractMessageRangeProcessor<R extends AbstractMessageRan
@Override
protected void processRequest(R request, ImapSession session, Responder responder) {
final MailboxPath targetMailbox = PathConverter.forSession(session).buildFullPath(request.getMailboxName());
- final IdRange[] idSet = request.getIdSet();
- final boolean useUids = request.isUseUids();
- final SelectedMailbox currentMailbox = session.getSelected();
+
try {
final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
- final MailboxManager mailboxManager = getMailboxManager();
- final boolean mailboxExists = mailboxManager.mailboxExists(targetMailbox, mailboxSession);
- if (!mailboxExists) {
+ if (!getMailboxManager().mailboxExists(targetMailbox, mailboxSession)) {
no(request, responder, HumanReadableText.FAILURE_NO_SUCH_MAILBOX, StatusResponse.ResponseCode.tryCreate());
} else {
-
- final MessageManager mailbox = mailboxManager.getMailbox(targetMailbox, mailboxSession);
-
- List<IdRange> resultRanges = new ArrayList<>();
- for (IdRange range : idSet) {
- MessageRange messageSet = messageRange(currentMailbox, range, useUids);
- if (messageSet != null) {
- List<MessageRange> processedUids = process(
- targetMailbox, currentMailbox, mailboxSession,
- mailboxManager, messageSet);
- for (MessageRange mr : processedUids) {
- // Set recent flag on copied message as this SHOULD be
- // done.
- // See RFC 3501 6.4.7. COPY Command
- // See IMAP-287
- //
- // Disable this as this is now done directly in the scope of the copy operation.
- // See MAILBOX-85
- //mailbox.setFlags(new Flags(Flags.Flag.RECENT), true, false, mr, mailboxSession);
- resultRanges.add(new IdRange(mr.getUidFrom().asLong(), mr.getUidTo().asLong()));
- }
- }
- }
- IdRange[] resultUids = IdRange.mergeRanges(resultRanges).toArray(new IdRange[0]);
-
- // get folder UIDVALIDITY
- Long uidValidity = mailbox.getMetaData(false, mailboxSession, MessageManager.MetaData.FetchGroup.NO_UNSEEN).getUidValidity();
-
- unsolicitedResponses(session, responder, useUids);
- okComplete(request, StatusResponse.ResponseCode.copyUid(uidValidity, idSet, resultUids), responder);
+ StatusResponse.ResponseCode code = handleRanges(request, session, targetMailbox, mailboxSession);
+ unsolicitedResponses(session, responder, request.isUseUids());
+ okComplete(request, code, responder);
}
} catch (MessageRangeException e) {
LOGGER.debug("{} failed from mailbox {} to {} for invalid sequence-set {}",
- getOperationName(), currentMailbox.getMailboxId(), targetMailbox, idSet, e);
+ getOperationName(), session.getSelected().getMailboxId(), targetMailbox, request.getIdSet(), e);
taggedBad(request, responder, HumanReadableText.INVALID_MESSAGESET);
} catch (MailboxException e) {
LOGGER.error("{} failed from mailbox {} to {} for sequence-set {}",
- getOperationName(), currentMailbox.getMailboxId(), targetMailbox, idSet, e);
+ getOperationName(), session.getSelected().getMailboxId(), targetMailbox, request.getIdSet(), e);
no(request, responder, HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING);
}
}
+
+ private StatusResponse.ResponseCode handleRanges(R request, ImapSession session, MailboxPath targetMailbox, MailboxSession mailboxSession) throws MailboxException {
+ final MessageManager mailbox = getMailboxManager().getMailbox(targetMailbox, mailboxSession);
+
+ List<IdRange> resultRanges = new ArrayList<>();
+ for (IdRange range : request.getIdSet()) {
+ MessageRange messageSet = messageRange(session.getSelected(), range, request.isUseUids());
+ if (messageSet != null) {
+ List<MessageRange> processedUids = process(
+ targetMailbox, session.getSelected(), mailboxSession,
+ getMailboxManager(), messageSet);
+ for (MessageRange mr : processedUids) {
+ // Set recent flag on copied message as this SHOULD be
+ // done.
+ // See RFC 3501 6.4.7. COPY Command
+ // See IMAP-287
+ //
+ // Disable this as this is now done directly in the scope of the copy operation.
+ // See MAILBOX-85
+ //mailbox.setFlags(new Flags(Flags.Flag.RECENT), true, false, mr, mailboxSession);
+ resultRanges.add(new IdRange(mr.getUidFrom().asLong(), mr.getUidTo().asLong()));
+ }
+ }
+ }
+ IdRange[] resultUids = IdRange.mergeRanges(resultRanges).toArray(new IdRange[0]);
+
+ // get folder UIDVALIDITY
+ Long uidValidity = mailbox.getMetaData(false, mailboxSession, MessageManager.MetaData.FetchGroup.NO_UNSEEN).getUidValidity();
+
+ return StatusResponse.ResponseCode.copyUid(uidValidity, request.getIdSet(), resultUids);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org