private GetMessageListResponse getMessageListResponse(GetMessageListRequest messageListRequest, MailboxSession mailboxSession) { GetMessageListResponse.Builder builder = GetMessageListResponse.builder(); try { MultimailboxesSearchQuery searchQuery = convertToSearchQuery(messageListRequest); Long postionValue = messageListRequest.getPosition().map(Number::asLong).orElse(DEFAULT_POSITION); mailboxManager.search(searchQuery, mailboxSession, postionValue + messageListRequest.getLimit().map(Number::asLong).orElse(maximumLimit)) .stream() .skip(postionValue) .forEach(builder::messageId); return builder.build(); } catch (MailboxException e) { throw new RuntimeException(e); } }
private Optional<MessageId> findMessageIdForRFC822MessageId(String messageId, MailAddress recipient) { LOGGER.debug("Searching message {} for recipient {}", messageId, recipient.asPrettyString()); try { MailboxSession session = mailboxManager.createSystemSession(recipient.asString()); int limit = 1; MultimailboxesSearchQuery searchByRFC822MessageId = MultimailboxesSearchQuery .from(new SearchQuery(SearchQuery.mimeMessageID(messageId))) .build(); return mailboxManager.search(searchByRFC822MessageId, session, limit).stream().findFirst(); } catch (MailboxException e) { LOGGER.error("unable to find message with Message-Id: " + messageId, e); } return Optional.empty(); }
private List<MailboxMetaData> searchUserMailboxes(MailboxSession session) throws MailboxException { return mailboxManager.search( MailboxQuery.privateMailboxesBuilder(session) .expression(Wildcard.INSTANCE) .build(), session); }
private void updateFlag(String messageId, MailboxSession session, Flags flag) throws MailboxException { int limit = 2; MultimailboxesSearchQuery searchByRFC822MessageId = MultimailboxesSearchQuery .from(new SearchQuery(SearchQuery.mimeMessageID(messageId))) .build(); List<MessageId> references = mailboxManager.search(searchByRFC822MessageId, session, limit); try { MessageId reference = Iterables.getOnlyElement(references); List<MailboxId> mailboxIds = messageIdManager.getMessages(references, FetchGroupImpl.MINIMAL, session).stream() .map(MessageResult::getMailboxId) .collect(Guavate.toImmutableList()); messageIdManager.setFlags(flag, FlagsUpdateMode.ADD, reference, mailboxIds, session); } catch (NoSuchElementException e) { logger.info("Unable to find a message with this Mime Message Id: " + messageId); } catch (IllegalArgumentException e) { logger.info("Too many messages are matching this Mime Message Id: " + messageId); } } }
Task.Result reIndex(User user, ReprocessingContext reprocessingContext) throws MailboxException { MailboxSession mailboxSession = mailboxManager.createSystemSession(user.asString()); LOGGER.info("Starting a reindex for user {}", user.asString()); List<MailboxPath> mailboxPaths = mailboxManager.search(MailboxQuery.privateMailboxesBuilder(mailboxSession) .build(), mailboxSession) .stream() .map(MailboxMetaData::getPath) .collect(ImmutableList.toImmutableList()); try { return reIndex(mailboxPaths, mailboxSession, reprocessingContext); } finally { LOGGER.info("User {} reindex finished", user.asString()); } }
private Stream<MessageManager> searchMessageManagerByMailboxRole(Role aRole, MailboxSession session) throws MailboxException { ThrowingFunction<MailboxPath, MessageManager> loadMailbox = path -> mailboxManager.getMailbox(path, session); MailboxQuery mailboxQuery = MailboxQuery.privateMailboxesBuilder(session) .expression(new PrefixedWildcard(aRole.getDefaultMailbox())) .build(); return mailboxManager.search(mailboxQuery, session) .stream() .map(MailboxMetaData::getPath) .filter(path -> hasRole(aRole, path)) .map(Throwing.function(loadMailbox).sneakyThrow()); } }
private Stream<Mailbox> retrieveAllMailboxes(MailboxSession mailboxSession) throws MailboxException { List<MailboxMetaData> userMailboxes = mailboxManager.search( MailboxQuery.builder() .matchesAllMailboxNames() .build(), mailboxSession); return userMailboxes .stream() .map(MailboxMetaData::getId) .map(mailboxId -> mailboxFactory.builder() .id(mailboxId) .session(mailboxSession) .usingPreloadedMailboxesMetadata(userMailboxes) .build()) .flatMap(OptionalUtils::toStream); }
private Optional<MailboxMetaData> retrieveMailbox(final MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException { MailboxQuery userMailboxesQuery = MailboxQuery.privateMailboxesBuilder(mailboxSession) .expression(Wildcard.INSTANCE) .build(); return mailboxManager.search(userMailboxesQuery, mailboxSession) .stream() .filter(mailboxMetaData -> mailboxMetaData.getId().equals(mailboxId)) .findFirst(); }
results = getMailboxManager().search(new MailboxQuery(basePath, CharsetUtil.decodeModifiedUTF7(mailboxName), mailboxSession.getPathDelimiter()), mailboxSession);
results = getMailboxManager().search( MailboxQuery.builder() .userAndNamespaceFrom(basePath)
List<MailboxMetaData> mList = manager.search( MailboxQuery.privateMailboxesBuilder(session) .expression(Wildcard.INSTANCE)