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/18 02:51:12 UTC
[james-project] 38/44: JAMES-2632 Add mailboxId in mailbox counter
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org