You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/05/14 06:42:45 UTC
[james-project] 13/15: JAMES-3138 ListeningCurrentQuotaUpdater
should base itself on the mailboxPath to determine quotaRoot
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 10c53bc8a00d22891f1b04bf77714bdc664e60e2
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat May 8 14:59:24 2021 +0700
JAMES-3138 ListeningCurrentQuotaUpdater should base itself on the mailboxPath to determine quotaRoot
---
.../mailbox/store/quota/ListeningCurrentQuotaUpdater.java | 5 ++---
.../james/mailbox/store/quota/StoreQuotaManager.java | 1 -
.../store/quota/ListeningCurrentQuotaUpdaterTest.java | 14 +++++++++++++-
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
index cfe2d80..e6b158e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
@@ -45,7 +45,6 @@ import org.reactivestreams.Publisher;
import com.google.common.collect.ImmutableSet;
import reactor.core.publisher.Mono;
-import reactor.core.scheduler.Schedulers;
public class ListeningCurrentQuotaUpdater implements EventListener.ReactiveGroupEventListener, QuotaUpdater {
public static class ListeningCurrentQuotaUpdaterGroup extends Group {
@@ -82,11 +81,11 @@ public class ListeningCurrentQuotaUpdater implements EventListener.ReactiveGroup
public Publisher<Void> reactiveEvent(Event event) {
if (event instanceof Added) {
Added addedEvent = (Added) event;
- return Mono.from(quotaRootResolver.getQuotaRootReactive(addedEvent.getMailboxId()))
+ return Mono.from(quotaRootResolver.getQuotaRootReactive(addedEvent.getMailboxPath()))
.flatMap(quotaRoot -> handleAddedEvent(addedEvent, quotaRoot));
} else if (event instanceof Expunged) {
Expunged expungedEvent = (Expunged) event;
- return Mono.from(quotaRootResolver.getQuotaRootReactive(expungedEvent.getMailboxId()))
+ return Mono.from(quotaRootResolver.getQuotaRootReactive(expungedEvent.getMailboxPath()))
.flatMap(quotaRoot -> handleExpungedEvent(expungedEvent, quotaRoot));
} else if (event instanceof MailboxDeletion) {
MailboxDeletion mailboxDeletionEvent = (MailboxDeletion) event;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
index aa010bc..24ca588 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
@@ -37,7 +37,6 @@ import org.apache.james.mailbox.quota.QuotaManager;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Mono;
-import reactor.core.scheduler.Schedulers;
/**
* Default implementation for the Quota Manager.
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index 26452e2..f71cba2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.events.MailboxEvents.Added;
import org.apache.james.mailbox.events.MailboxEvents.Expunged;
import org.apache.james.mailbox.events.MailboxEvents.MailboxDeletion;
import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
@@ -67,6 +68,7 @@ class ListeningCurrentQuotaUpdaterTest {
static final MailboxId MAILBOX_ID = TestId.of(42);
static final String BENWA = "benwa";
static final Username USERNAME_BENWA = Username.of(BENWA);
+ static final MailboxPath MAILBOX_PATH = MailboxPath.forUser(USERNAME_BENWA, "path");
static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot(BENWA, Optional.empty());
static final QuotaOperation QUOTA = new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(2), QuotaSizeUsage.size(2 * SIZE));
@@ -80,8 +82,10 @@ class ListeningCurrentQuotaUpdaterTest {
mockedCurrentQuotaManager = mock(CurrentQuotaManager.class);
EventBus eventBus = mock(EventBus.class);
when(eventBus.dispatch(any(Event.class), anySet())).thenReturn(Mono.empty());
+ QuotaManager quotaManager = mock(QuotaManager.class);
+ when(quotaManager.getQuotasReactive(eq(QUOTA_ROOT))).thenReturn(Mono.empty());
testee = new ListeningCurrentQuotaUpdater(mockedCurrentQuotaManager, mockedQuotaRootResolver,
- eventBus, mock(QuotaManager.class));
+ eventBus, quotaManager);
}
@Test
@@ -94,11 +98,13 @@ class ListeningCurrentQuotaUpdaterTest {
void addedEventShouldIncreaseCurrentQuotaValues() throws Exception {
Added added = mock(Added.class);
when(added.getMailboxId()).thenReturn(MAILBOX_ID);
+ when(added.getMailboxPath()).thenReturn(MAILBOX_PATH);
when(added.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36), ModSeq.first(),new Flags(), SIZE, new Date(), new DefaultMessageId()));
when(added.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38), ModSeq.first(),new Flags(), SIZE, new Date(), new DefaultMessageId()));
when(added.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), MessageUid.of(38)));
when(added.getUsername()).thenReturn(USERNAME_BENWA);
when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_ID))).thenReturn(Mono.just(QUOTA_ROOT));
+ when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_PATH))).thenReturn(Mono.just(QUOTA_ROOT));
when(mockedCurrentQuotaManager.increase(QUOTA)).thenAnswer(any -> Mono.empty());
testee.event(added);
@@ -114,6 +120,8 @@ class ListeningCurrentQuotaUpdaterTest {
when(expunged.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), MessageUid.of(38)));
when(expunged.getMailboxId()).thenReturn(MAILBOX_ID);
when(expunged.getUsername()).thenReturn(USERNAME_BENWA);
+ when(expunged.getMailboxPath()).thenReturn(MAILBOX_PATH);
+ when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_PATH))).thenReturn(Mono.just(QUOTA_ROOT));
when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_ID))).thenReturn(Mono.just(QUOTA_ROOT));
when(mockedCurrentQuotaManager.decrease(QUOTA)).thenAnswer(any -> Mono.empty());
@@ -128,6 +136,8 @@ class ListeningCurrentQuotaUpdaterTest {
when(expunged.getUids()).thenReturn(Lists.<MessageUid>newArrayList());
when(expunged.getMailboxId()).thenReturn(MAILBOX_ID);
when(expunged.getUsername()).thenReturn(USERNAME_BENWA);
+ when(expunged.getMailboxPath()).thenReturn(MAILBOX_PATH);
+ when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_PATH))).thenReturn(Mono.just(QUOTA_ROOT));
when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_ID))).thenReturn(Mono.just(QUOTA_ROOT));
testee.event(expunged);
@@ -141,6 +151,8 @@ class ListeningCurrentQuotaUpdaterTest {
when(added.getUids()).thenReturn(Lists.<MessageUid>newArrayList());
when(added.getMailboxId()).thenReturn(MAILBOX_ID);
when(added.getUsername()).thenReturn(USERNAME_BENWA);
+ when(added.getMailboxPath()).thenReturn(MAILBOX_PATH);
+ when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_PATH))).thenReturn(Mono.just(QUOTA_ROOT));
when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_ID))).thenReturn(Mono.just(QUOTA_ROOT));
testee.event(added);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org