MAILBOX-265 Cassandra Message Mapper should take limit into account
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8b970f59 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8b970f59 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8b970f59 Branch: refs/heads/master Commit: 8b970f59d6103ad1852409b5e11939b7d7d4b2c6 Parents: fb4a3ec Author: Benoit Tellier <[email protected]> Authored: Thu Mar 3 12:05:51 2016 +0700 Committer: Benoit Tellier <[email protected]> Committed: Fri Mar 4 19:35:25 2016 +0700 ---------------------------------------------------------------------- .../mailbox/cassandra/mail/CassandraMessageMapper.java | 11 ++++++++++- .../store/mail/model/AbstractMessageMapperTest.java | 3 --- 2 files changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/8b970f59/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java index 7f9bbc4..b406391 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java @@ -69,6 +69,8 @@ import javax.mail.Flags; import javax.mail.Flags.Flag; import javax.mail.util.SharedByteArrayInputStream; +import com.datastax.driver.core.Statement; +import com.datastax.driver.core.querybuilder.Select; import com.google.common.base.Throwables; import org.apache.james.backends.cassandra.init.CassandraTypesProvider; import org.apache.james.backends.cassandra.utils.CassandraConstants; @@ -167,12 +169,19 @@ public class CassandraMessageMapper implements MessageMapper<CassandraId> { @Override public Iterator<MailboxMessage<CassandraId>> findInMailbox(Mailbox<CassandraId> mailbox, MessageRange set, FetchType ftype, int max) throws MailboxException { - return CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set, ftype))) + return CassandraUtils.convertToStream(session.execute(buildSelectQueryWithLimit(buildQuery(mailbox, set, ftype), max))) .map(row -> message(row, ftype)) .sorted(Comparator.comparingLong(MailboxMessage::getUid)) .iterator(); } + private Statement buildSelectQueryWithLimit(Select.Where selectStatement, int max) { + if (max <= 0) { + return selectStatement; + } + return selectStatement.limit(max); + } + @Override public List<Long> findRecentMessageUidsInMailbox(Mailbox<CassandraId> mailbox) throws MailboxException { return CassandraUtils.convertToStream(session.execute(selectAll(mailbox, FetchType.Metadata).and((eq(RECENT, true))))) http://git-wip-us.apache.org/repos/asf/james-project/blob/8b970f59/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java index a8ede55..3198507 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java @@ -44,7 +44,6 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; public abstract class AbstractMessageMapperTest<Id extends MailboxId> { @@ -256,8 +255,6 @@ public abstract class AbstractMessageMapperTest<Id extends MailboxId> { assertThat(retrievedMessageIterator).isEmpty(); } - // No limit used for the moment - @Ignore @Test public void retrievingMessagesWithALimitShouldLimitTheNumberOfMessages() throws MailboxException { int limit = 2; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
