@Override public long getModSeq() { return message.getModSeq(); }
private boolean matches(SearchQuery.ModSeqCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { SearchQuery.NumericOperator operator = criterion.getOperator(); long modSeq = message.getModSeq(); long value = operator.getValue(); switch (operator.getType()) { case LESS_THAN: return modSeq < value; case GREATER_THAN: return modSeq > value; case EQUALS: return modSeq == value; default: throw new UnsupportedSearchException(); } }
public MessageChangedFlags updateFlags(Mailbox mailbox, FlagsUpdateCalculator flagsUpdateCalculator, Iterator<MailboxMessage> messages) throws MailboxException { ImmutableList.Builder<UpdatedFlags> updatedFlags = ImmutableList.builder(); ImmutableList.Builder<MailboxMessage> changedFlags = ImmutableList.builder(); long modSeq = nextModSeq(mailbox); while (messages.hasNext()) { MailboxMessage member = messages.next(); Flags originalFlags = member.createFlags(); member.setFlags(flagsUpdateCalculator.buildNewFlags(originalFlags)); Flags newFlags = member.createFlags(); if (UpdatedFlags.flagsChanged(originalFlags, newFlags)) { member.setModSeq(modSeq); changedFlags.add(member); } updatedFlags.add(UpdatedFlags.builder() .uid(member.getUid()) .modSeq(member.getModSeq()) .newFlags(newFlags) .oldFlags(originalFlags) .build()); } return new MessageChangedFlags(updatedFlags.build().iterator(), changedFlags.build()); }
public SimpleMessageMetaData(MailboxMessage message) { this(message.getUid(), message.getModSeq(), message.createFlags(), message.getFullContentOctets(), message.getInternalDate(), message.getMessageId()); }
@Override public MessageMetaData save(Mailbox mailbox, MailboxMessage message) throws MailboxException { SimpleMailboxMessage copy = SimpleMailboxMessage.copy(mailbox.getMailboxId(), message); copy.setUid(message.getUid()); copy.setModSeq(message.getModSeq()); getMembershipByUidForMailbox(mailbox).put(message.getUid(), copy); return new SimpleMessageMetaData(message); }
public UnloadedMessageResult(MailboxMessage message, MailboxException exception) { super(); internalDate = message.getInternalDate(); size = message.getFullContentOctets(); uid = message.getUid(); flags = message.createFlags(); modSeq = message.getModSeq(); mailboxId = message.getMailboxId(); messageId = message.getMessageId(); this.exception = exception; }
private CompletableFuture<Void> insertIds(MailboxMessage message, CassandraId mailboxId) { ComposedMessageIdWithMetaData composedMessageIdWithMetaData = ComposedMessageIdWithMetaData.builder() .composedMessageId(new ComposedMessageId(mailboxId, message.getMessageId(), message.getUid())) .flags(message.createFlags()) .modSeq(message.getModSeq()) .build(); return CompletableFuture.allOf(messageIdDAO.insert(composedMessageIdWithMetaData), imapUidDAO.insert(composedMessageIdWithMetaData)); }
private MailboxMessage copyMessage(MailboxMessage message) throws MailboxException { return SimpleMailboxMessage .from(message) .mailboxId(message.getMailboxId()) .uid(message.getUid()) .modseq(message.getModSeq()) .build(); }
.modSeq(member.getModSeq()) .newFlags(newFlags) .oldFlags(originalFlags)
/** * @see org.apache.james.mailbox.store.mail.AbstractMessageMapper#save(Mailbox, * MailboxMessage) */ protected MessageMetaData save(Mailbox mailbox, MailboxMessage message) throws MailboxException { try { // We need to reload a "JPA attached" mailbox, because the provide // mailbox is already "JPA detached" // If we don't this, we will get an // org.apache.openjpa.persistence.ArgumentException. JPAId mailboxId = (JPAId) mailbox.getMailboxId(); JPAMailbox currentMailbox = getEntityManager().find(JPAMailbox.class, mailboxId.getRawId()); if (message instanceof AbstractJPAMailboxMessage) { ((AbstractJPAMailboxMessage) message).setMailbox(currentMailbox); getEntityManager().persist(message); return new SimpleMessageMetaData(message); } else { JPAMailboxMessage persistData = new JPAMailboxMessage(currentMailbox, message.getUid(), message.getModSeq(), message); persistData.setFlags(message.createFlags()); getEntityManager().persist(persistData); return new SimpleMessageMetaData(persistData); } } catch (PersistenceException | ArgumentException e) { throw new MailboxException("Save of message " + message + " failed in mailbox " + mailbox, e); } }
private ComposedMessageIdWithMetaData createMetadataFor(MailboxMessage mailboxMessage) { ComposedMessageId composedMessageId = new ComposedMessageId( mailboxMessage.getMailboxId(), mailboxMessage.getMessageId(), mailboxMessage.getUid()); return ComposedMessageIdWithMetaData.builder() .composedMessageId(composedMessageId) .flags(mailboxMessage.createFlags()) .modSeq(mailboxMessage.getModSeq()) .build(); }
private Function<MailboxMessage, Pair<MailboxId, UpdatedFlags>> updateMessage(Flags newState, FlagsUpdateMode updateMode) { return Throwing.function((MailboxMessage message) -> { FlagsUpdateCalculator flagsUpdateCalculator = new FlagsUpdateCalculator(newState, updateMode); if (flagsUpdateCalculator.buildNewFlags(message.createFlags()).equals(message.createFlags())) { UpdatedFlags updatedFlags = UpdatedFlags.builder() .modSeq(message.getModSeq()) .uid(message.getUid()) .oldFlags(message.createFlags()) .newFlags(newState) .build(); return Pair.of(message.getMailboxId(), updatedFlags); } return Pair.of(message.getMailboxId(), messageMapper.updateFlags( mailboxMapper.findMailboxById(message.getMailboxId()), flagsUpdateCalculator, message.getUid().toRange()) .next()); }); } }
long modSeq = message.getModSeq(); long size = message.getFullContentOctets(); String date = DateResolutionFormater.DATE_TIME_FOMATTER.format(getSanitizedInternalDate(message, zoneId));
public ImmutableMailboxMessage from(MailboxId mailboxId, MailboxMessage message) throws MailboxException { try { return new ImmutableMailboxMessage(message.getMessageId(), message.getInternalDate(), IOUtils.toByteArray(message.getBodyContent()), message.getMediaType(), message.getSubType(), message.getBodyOctets(), message.getFullContentOctets(), message.getFullContentOctets() - message.getBodyOctets(), message.getTextualLineCount(), IOUtils.toByteArray(message.getHeaderContent()), ImmutableList.copyOf(message.getProperties()), attachments(message), mailboxId, message.getUid(), message.getModSeq(), message.isAnswered(), message.isDeleted(), message.isDraft(), message.isFlagged(), message.isRecent(), message.isSeen(), message.createFlags().getUserFlags()); } catch (IOException e) { throw new MailboxException("Unable to parse message", e); } }