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 3281e542aaab18ae4187b60dd643269a841d8efb Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Wed Oct 16 18:11:02 2019 +0700 JAMES-2632 Add mailboxId in mailbox counter --- .../james/mailbox/model/MailboxCounters.java | 22 ++++++++++++++++++---- .../apache/james/mailbox/MailboxManagerTest.java | 10 ++++++---- .../cassandra/mail/CassandraMailboxCounterDAO.java | 2 ++ .../cassandra/mail/CassandraMessageMapper.java | 10 ---------- .../mail/CassandraMailboxCounterDAOTest.java | 3 +++ .../james/mailbox/jpa/mail/JPAMessageMapper.java | 1 + .../jpa/mail/TransactionalMessageMapper.java | 1 + .../james/mailbox/store/StoreMessageManager.java | 11 +++++------ .../mailbox/store/mail/AbstractMessageMapper.java | 1 + .../StoreMailboxMessageResultIteratorTest.java | 1 + 10 files changed, 38 insertions(+), 24 deletions(-) diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java index 324149d..270eb4e 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java @@ -29,6 +29,12 @@ public class MailboxCounters { public static class Builder { private Optional<Long> count = Optional.empty(); private Optional<Long> unseen = Optional.empty(); + private Optional<MailboxId> mailboxId = Optional.empty(); + + public Builder mailboxId(MailboxId mailboxId) { + this.mailboxId = Optional.of(mailboxId); + return this; + } public Builder count(long count) { this.count = Optional.of(count); @@ -43,7 +49,8 @@ public class MailboxCounters { public MailboxCounters build() { Preconditions.checkState(count.isPresent(), "count is compulsory"); Preconditions.checkState(unseen.isPresent(), "unseen is compulsory"); - return new MailboxCounters(count.get(), unseen.get()); + Preconditions.checkState(mailboxId.isPresent(), "mailboxId is compulsory"); + return new MailboxCounters(mailboxId.get(), count.get(), unseen.get()); } } @@ -51,14 +58,20 @@ public class MailboxCounters { return new Builder(); } + private final MailboxId mailboxId; private final long count; private final long unseen; - private MailboxCounters(long count, long unseen) { + private MailboxCounters(MailboxId mailboxId, long count, long unseen) { + this.mailboxId = mailboxId; this.count = count; this.unseen = unseen; } + public MailboxId getMailboxId() { + return mailboxId; + } + public long getCount() { return count; } @@ -73,13 +86,14 @@ public class MailboxCounters { MailboxCounters that = (MailboxCounters) o; return Objects.equal(this.count, that.count) - && Objects.equal(this.unseen, that.unseen); + && Objects.equal(this.unseen, that.unseen) + && Objects.equal(this.mailboxId, that.mailboxId); } return false; } @Override public final int hashCode() { - return Objects.hashCode(count, unseen); + return Objects.hashCode(count, unseen, mailboxId); } } diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java index 5f634be..14fd87e 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java @@ -965,7 +965,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MailboxSession session1 = mailboxManager.createSystemSession(USER_1); MailboxSession session2 = mailboxManager.createSystemSession(USER_2); MailboxPath inbox1 = MailboxPath.inbox(session1); - mailboxManager.createMailbox(inbox1, session1); + Optional<MailboxId> mailboxIdInbox1 = mailboxManager.createMailbox(inbox1, session1); mailboxManager.setRights(inbox1, MailboxACL.EMPTY.apply(MailboxACL.command() .forUser(USER_2) @@ -1271,7 +1271,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MailboxSession session1 = mailboxManager.createSystemSession(USER_1); MailboxSession session2 = mailboxManager.createSystemSession(USER_2); MailboxPath inbox1 = MailboxPath.inbox(session1); - mailboxManager.createMailbox(inbox1, session1); + Optional<MailboxId> mailboxIdInbox1 = mailboxManager.createMailbox(inbox1, session1); mailboxManager.setRights(inbox1, MailboxACL.EMPTY.apply(MailboxACL.command() .forUser(USER_2) @@ -1303,7 +1303,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MailboxSession session1 = mailboxManager.createSystemSession(USER_1); MailboxSession session2 = mailboxManager.createSystemSession(USER_2); MailboxPath inbox1 = MailboxPath.inbox(session1); - mailboxManager.createMailbox(inbox1, session1); + Optional<MailboxId> mailboxIdInbox1 = mailboxManager.createMailbox(inbox1, session1); mailboxManager.setRights(inbox1, MailboxACL.EMPTY.apply(MailboxACL.command() .forUser(USER_2) @@ -1318,6 +1318,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { assertThat(mailboxCounters) .isEqualTo(MailboxCounters.builder() + .mailboxId(mailboxIdInbox1.get()) .count(0) .unseen(0) .build()); @@ -1329,7 +1330,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MailboxSession session1 = mailboxManager.createSystemSession(USER_1); MailboxSession session2 = mailboxManager.createSystemSession(USER_2); MailboxPath inbox1 = MailboxPath.inbox(session1); - mailboxManager.createMailbox(inbox1, session1); + Optional<MailboxId> mailboxIdInbox1 = mailboxManager.createMailbox(inbox1, session1); mailboxManager.setRights(inbox1, MailboxACL.EMPTY.apply(MailboxACL.command() .forUser(USER_2) @@ -1347,6 +1348,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { assertThat(mailboxCounters) .isEqualTo(MailboxCounters.builder() + .mailboxId(mailboxIdInbox1.get()) .count(1) .unseen(1) .build()); diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAO.java index d1c3180..0c12e28 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAO.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAO.java @@ -39,6 +39,7 @@ import com.datastax.driver.core.BoundStatement; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.Session; import com.datastax.driver.core.querybuilder.Assignment; + import reactor.core.publisher.Mono; public class CassandraMailboxCounterDAO { @@ -77,6 +78,7 @@ public class CassandraMailboxCounterDAO { public Mono<MailboxCounters> retrieveMailboxCounters(CassandraId mailboxId) { return cassandraAsyncExecutor.executeSingleRow(bindWithMailbox(mailboxId, readStatement)) .map(row -> MailboxCounters.builder() + .mailboxId(mailboxId) .count(row.getLong(CassandraMailboxCountersTable.COUNT)) .unseen(row.getLong(CassandraMailboxCountersTable.UNSEEN)) .build()); 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 de6407ff..675d648 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 @@ -65,10 +65,6 @@ import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; public class CassandraMessageMapper implements MessageMapper { - public static final MailboxCounters INITIAL_COUNTERS = MailboxCounters.builder() - .count(0L) - .unseen(0L) - .build(); public static final Logger LOGGER = LoggerFactory.getLogger(CassandraMessageMapper.class); private final CassandraModSeqProvider modSeqProvider; @@ -134,11 +130,6 @@ public class CassandraMessageMapper implements MessageMapper { @Override public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException { -<<<<<<< HEAD - return mailboxCounterDAO.retrieveMailboxCounters(mailbox) - .defaultIfEmpty(INITIAL_COUNTERS) - .block(); -======= CassandraId mailboxId = (CassandraId) mailbox.getMailboxId(); return getMailboxCounters(mailboxId) .block(); @@ -161,7 +152,6 @@ public class CassandraMessageMapper implements MessageMapper { .concatMap(this::getMailboxCounters) .toStream() .collect(Guavate.toImmutableList()); ->>>>>>> f4ef8da35d... JAMES-2632 Allow bulk mailbox counter retrieval } @Override diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java index 073b4a2..c9b41b6 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java @@ -88,6 +88,7 @@ class CassandraMailboxCounterDAOTest { assertThat(testee.retrieveMailboxCounters(MAILBOX_ID).block()) .isEqualTo(MailboxCounters.builder() + .mailboxId(MAILBOX_ID) .count(0L) .unseen(1L) .build()); @@ -99,6 +100,7 @@ class CassandraMailboxCounterDAOTest { assertThat(testee.retrieveMailboxCounters(MAILBOX_ID).block()) .isEqualTo(MailboxCounters.builder() + .mailboxId(MAILBOX_ID) .count(1L) .unseen(0L) .build()); @@ -111,6 +113,7 @@ class CassandraMailboxCounterDAOTest { assertThat(testee.retrieveMailboxCounters(MAILBOX_ID).block()) .isEqualTo(MailboxCounters.builder() + .mailboxId(MAILBOX_ID) .count(1L) .unseen(1L) .build()); diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java index a1ebacd..6c88f59 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java @@ -79,6 +79,7 @@ public class JPAMessageMapper extends JPATransactionalMapper implements MessageM @Override public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException { return MailboxCounters.builder() + .mailboxId(mailbox.getMailboxId()) .count(countMessagesInMailbox(mailbox)) .unseen(countUnseenMessagesInMailbox(mailbox)) .build(); diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java index 6b45c1d..58d34a4 100644 --- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java +++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java @@ -56,6 +56,7 @@ public class TransactionalMessageMapper implements MessageMapper { @Override public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException { return MailboxCounters.builder() + .mailboxId(mailbox.getMailboxId()) .count(countMessagesInMailbox(mailbox)) .unseen(countUnseenMessagesInMailbox(mailbox)) .build(); diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index e46ebce..5cfca6d 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -117,11 +117,6 @@ import reactor.core.scheduler.Schedulers; * {@link MailboxSession}'s. */ public class StoreMessageManager implements MessageManager { - private static final MailboxCounters ZERO_MAILBOX_COUNTERS = MailboxCounters.builder() - .count(0) - .unseen(0) - .build(); - /** * The minimal Permanent flags the {@link MessageManager} must support. <br> * @@ -221,7 +216,11 @@ public class StoreMessageManager implements MessageManager { if (storeRightManager.hasRight(mailbox, MailboxACL.Right.Read, mailboxSession)) { return mapperFactory.createMessageMapper(mailboxSession).getMailboxCounters(mailbox); } - return ZERO_MAILBOX_COUNTERS; + return MailboxCounters.builder() + .mailboxId(mailbox.getMailboxId()) + .unseen(0) + .count(0) + .build(); } /** diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java index 646e092..f183728 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java @@ -71,6 +71,7 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen @Override public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException { return MailboxCounters.builder() + .mailboxId(mailbox.getMailboxId()) .count(countMessagesInMailbox(mailbox)) .unseen(countUnseenMessagesInMailbox(mailbox)) .build(); diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java index 053dc3d..28e164c 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java @@ -92,6 +92,7 @@ public class StoreMailboxMessageResultIteratorTest { @Override public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException { return MailboxCounters.builder() + .mailboxId(mailbox.getMailboxId()) .count(countMessagesInMailbox(mailbox)) .unseen(countUnseenMessagesInMailbox(mailbox)) .build(); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org