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 2020/04/22 07:24:37 UTC
[james-project] 05/10: JAMES-3138 Move increase and decrease to
CurrentQuotaManager to have a allow a neutral
RecomputeCurrentQuotasServiceContract
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 f4312b6ce2bc69052c827d4134fd84d37cb68879
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Apr 17 17:42:38 2020 +0700
JAMES-3138 Move increase and decrease to CurrentQuotaManager to have a allow a neutral RecomputeCurrentQuotasServiceContract
---
.../org/apache/james/mailbox/quota/CurrentQuotaManager.java | 5 +++++
.../task/CassandraRecomputeCurrentQuotasServiceTest.java | 3 ++-
.../jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java | 3 ++-
.../mail/task/MemoryRecomputeCurrentQuotasServiceTest.java | 4 ++--
.../mailbox/store/quota/ListeningCurrentQuotaUpdater.java | 8 ++++----
.../james/mailbox/store/quota/StoreCurrentQuotaManager.java | 10 ++--------
.../mail/task/RecomputeCurrentQuotasServiceContract.java | 8 ++++----
.../mailbox/store/quota/StoreCurrentQuotaManagerTest.java | 12 ++++++------
8 files changed, 27 insertions(+), 26 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java
index 1e84e09..f99df4b 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.quota;
import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.mailbox.model.CurrentQuotas;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.reactivestreams.Publisher;
@@ -35,4 +36,8 @@ public interface CurrentQuotaManager {
Publisher<QuotaSizeUsage> getCurrentStorage(QuotaRoot quotaRoot);
Publisher<CurrentQuotas> getCurrentQuotas(QuotaRoot quotaRoot);
+
+ Publisher<Void> increase(QuotaOperation quotaOperation);
+
+ Publisher<Void> decrease(QuotaOperation quotaOperation);
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java
index fc53f32..93d019c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.SessionProvider;
import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.CassandraTestSystemFixture;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.UserQuotaRootResolver;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService;
@@ -104,7 +105,7 @@ public class CassandraRecomputeCurrentQuotasServiceTest implements RecomputeCurr
}
@Override
- public StoreCurrentQuotaManager currentQuotaManager() {
+ public CurrentQuotaManager currentQuotaManager() {
return currentQuotaManager;
}
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java
index 95ba065..722848c 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java
@@ -32,6 +32,7 @@ import org.apache.james.mailbox.jpa.JpaMailboxManagerProvider;
import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
import org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.UserQuotaRootResolver;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService;
@@ -112,7 +113,7 @@ class JPARecomputeCurrentQuotasServiceTest implements RecomputeCurrentQuotasServ
}
@Override
- public StoreCurrentQuotaManager currentQuotaManager() {
+ public CurrentQuotaManager currentQuotaManager() {
return currentQuotaManager;
}
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java
index f9a550d..85c3b1c 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java
@@ -26,10 +26,10 @@ import org.apache.james.domainlist.memory.MemoryDomainList;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.SessionProvider;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.UserQuotaRootResolver;
import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService;
import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasServiceContract;
-import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.memory.MemoryUsersRepository;
import org.junit.jupiter.api.BeforeEach;
@@ -72,7 +72,7 @@ class MemoryRecomputeCurrentQuotasServiceTest implements RecomputeCurrentQuotasS
}
@Override
- public StoreCurrentQuotaManager currentQuotaManager() {
+ public CurrentQuotaManager currentQuotaManager() {
return resources.getCurrentQuotaManager();
}
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 c8bc83a..6223e0d 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
@@ -91,7 +91,7 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo
private void handleExpungedEvent(Expunged expunged, QuotaRoot quotaRoot) {
computeQuotaOperation(expunged, quotaRoot).ifPresent(Throwing.<QuotaOperation>consumer(quotaOperation -> {
- currentQuotaManager.decrease(quotaOperation)
+ Mono.from(currentQuotaManager.decrease(quotaOperation))
.then(Mono.defer(Throwing.supplier(() -> eventBus.dispatch(
EventFactory.quotaUpdated()
.randomEventId()
@@ -108,7 +108,7 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo
private void handleAddedEvent(Added added, QuotaRoot quotaRoot) {
computeQuotaOperation(added, quotaRoot).ifPresent(Throwing.<QuotaOperation>consumer(quotaOperation -> {
- currentQuotaManager.increase(quotaOperation)
+ Mono.from(currentQuotaManager.increase(quotaOperation))
.then(Mono.defer(Throwing.supplier(() -> eventBus.dispatch(
EventFactory.quotaUpdated()
.randomEventId()
@@ -143,9 +143,9 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo
private void handleMailboxDeletionEvent(MailboxDeletion mailboxDeletionEvent) throws MailboxException {
boolean mailboxContainedMessages = mailboxDeletionEvent.getDeletedMessageCount().asLong() > 0;
if (mailboxContainedMessages) {
- currentQuotaManager.decrease(new QuotaOperation(mailboxDeletionEvent.getQuotaRoot(),
+ Mono.from(currentQuotaManager.decrease(new QuotaOperation(mailboxDeletionEvent.getQuotaRoot(),
mailboxDeletionEvent.getDeletedMessageCount(),
- mailboxDeletionEvent.getTotalDeletedSize()))
+ mailboxDeletionEvent.getTotalDeletedSize())))
.block();
}
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
index 3891326..a60c729 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
@@ -26,20 +26,14 @@ import org.apache.james.mailbox.quota.CurrentQuotaManager;
import reactor.core.publisher.Mono;
public interface StoreCurrentQuotaManager extends CurrentQuotaManager {
-
- Mono<Void> increase(QuotaOperation quotaOperation);
-
- Mono<Void> decrease(QuotaOperation quotaOperation);
-
default Mono<Void> resetCurrentQuotas(QuotaOperation quotaOperation) {
return Mono.from(getCurrentQuotas(quotaOperation.quotaRoot()))
.flatMap(storedQuotas -> {
if (!storedQuotas.equals(CurrentQuotas.from(quotaOperation))) {
- return decrease(new QuotaOperation(quotaOperation.quotaRoot(), storedQuotas.count(), storedQuotas.size()))
- .then(increase(quotaOperation));
+ return Mono.from(decrease(new QuotaOperation(quotaOperation.quotaRoot(), storedQuotas.count(), storedQuotas.size())))
+ .then(Mono.from(increase(quotaOperation)));
}
return Mono.empty();
});
}
-
}
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java
index d4bb3b0..f9a8f45 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java
@@ -34,9 +34,9 @@ import org.apache.james.mailbox.model.CurrentQuotas;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.UserQuotaRootResolver;
import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService.Context;
-import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
import org.apache.james.mime4j.dom.Message;
import org.apache.james.task.Task;
import org.apache.james.user.api.UsersRepository;
@@ -55,7 +55,7 @@ public interface RecomputeCurrentQuotasServiceContract {
UsersRepository usersRepository();
SessionProvider sessionProvider();
MailboxManager mailboxManager();
- StoreCurrentQuotaManager currentQuotaManager();
+ CurrentQuotaManager currentQuotaManager();
UserQuotaRootResolver userQuotaRootResolver();
RecomputeCurrentQuotasService testee();
@@ -126,7 +126,7 @@ public interface RecomputeCurrentQuotasServiceContract {
QuotaRoot quotaRoot = userQuotaRootResolver().forUser(USER_1);
QuotaOperation operation = new QuotaOperation(quotaRoot, QuotaCountUsage.count(3L), QuotaSizeUsage.size(390L));
- currentQuotaManager().increase(operation).block();
+ Mono.from(currentQuotaManager().increase(operation)).block();
testee().recomputeCurrentQuotas(new Context()).block();
@@ -184,7 +184,7 @@ public interface RecomputeCurrentQuotasServiceContract {
QuotaRoot quotaRoot = userQuotaRootResolver().forUser(USER_1);
QuotaOperation operation = new QuotaOperation(quotaRoot, QuotaCountUsage.count(3L), QuotaSizeUsage.size(390L));
- currentQuotaManager().increase(operation).block();
+ Mono.from(currentQuotaManager().increase(operation)).block();
Context context = new Context();
testee().recomputeCurrentQuotas(context).block();
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java
index 4ba155c..0a673a2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java
@@ -67,7 +67,7 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void increaseShouldWork() {
- testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100))).block();
+ Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)))).block();
SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
softly.assertThat(Mono.from(testee.getCurrentQuotas(QUOTA_ROOT)).block()).isEqualTo(CURRENT_QUOTAS);
@@ -78,9 +78,9 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void decreaseShouldWork() {
- testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200))).block();
+ Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)))).block();
- testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100))).block();
+ Mono.from(testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)))).block();
SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
softly.assertThat(Mono.from(testee.getCurrentQuotas(QUOTA_ROOT)).block()).isEqualTo(CURRENT_QUOTAS);
@@ -91,7 +91,7 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void decreaseShouldNotFailWhenItLeadsToNegativeValues() {
- testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100))).block();
+ Mono.from(testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)))).block();
SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
softly.assertThat(Mono.from(testee.getCurrentQuotas(QUOTA_ROOT)).block())
@@ -121,7 +121,7 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void resetCurrentQuotasShouldReInitQuotasWhenData() {
- testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200))).block();
+ Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)))).block();
testee.resetCurrentQuotas(RESET_QUOTA_OPERATION).block();
@@ -131,7 +131,7 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void resetCurrentQuotasShouldBeIdempotent() {
- testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200))).block();
+ Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)))).block();
testee.resetCurrentQuotas(RESET_QUOTA_OPERATION).block();
testee.resetCurrentQuotas(RESET_QUOTA_OPERATION).block();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org