You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2023/03/27 03:37:50 UTC
[james-project] 02/02: Adapt MaxQuotaManager reactive api for webadmin-mailbox
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 570da90f29b82414982f59819e78ab2cc3e6ae00
Author: Tung Van TRAN <vt...@linagora.com>
AuthorDate: Fri Mar 24 15:53:55 2023 +0700
Adapt MaxQuotaManager reactive api for webadmin-mailbox
---
.../james/mailbox/quota/MaxQuotaManager.java | 21 -----
.../apache/james/webadmin/dto/QuotaDetailsDTO.java | 6 ++
.../james/webadmin/service/DomainQuotaService.java | 102 ++++++++++++---------
.../james/webadmin/service/GlobalQuotaService.java | 76 ++++++++-------
.../james/webadmin/service/UserQuotaService.java | 98 ++++++++++----------
5 files changed, 159 insertions(+), 144 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java
index 66275b3fc8..050300ce0f 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.quota;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
-import java.util.function.Supplier;
import java.util.stream.Stream;
import org.apache.james.core.Domain;
@@ -35,8 +34,6 @@ import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.util.ReactorUtils;
import org.reactivestreams.Publisher;
-import com.github.fge.lambdas.Throwing;
-
import reactor.core.publisher.Mono;
/**
@@ -221,24 +218,6 @@ public interface MaxQuotaManager {
Publisher<Void> removeDomainMaxStorageReactive(Domain domain);
- default Optional<QuotaCountLimit> getComputedMaxMessage(Domain domain) throws MailboxException {
- return Stream.of(
- Throwing.supplier(() -> getDomainMaxMessage(domain)).sneakyThrow(),
- Throwing.supplier(this::getGlobalMaxMessage).sneakyThrow())
- .map(Supplier::get)
- .flatMap(Optional::stream)
- .findFirst();
- }
-
- default Optional<QuotaSizeLimit> getComputedMaxStorage(Domain domain) throws MailboxException {
- return Stream.of(
- Throwing.supplier(() -> getDomainMaxStorage(domain)).sneakyThrow(),
- Throwing.supplier(this::getGlobalMaxStorage).sneakyThrow())
- .map(Supplier::get)
- .flatMap(Optional::stream)
- .findFirst();
- }
-
class QuotaDetails {
private final Map<Quota.Scope, QuotaCountLimit> maxMessageDetails;
private final Map<Quota.Scope, QuotaSizeLimit> maxStorageDetails;
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/QuotaDetailsDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/QuotaDetailsDTO.java
index 08bb9bccff..a0ee291b0b 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/QuotaDetailsDTO.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/QuotaDetailsDTO.java
@@ -20,6 +20,7 @@
package org.apache.james.webadmin.dto;
+import java.util.Map;
import java.util.Optional;
import org.apache.james.core.quota.QuotaCountLimit;
@@ -86,6 +87,11 @@ public class QuotaDetailsDTO {
return this;
}
+ public Builder valueForScopes(Map<Quota.Scope, ValidatedQuotaDTO> value) {
+ value.forEach(this::valueForScope);
+ return this;
+ }
+
public QuotaDetailsDTO build() {
Preconditions.checkNotNull(occupation);
return new QuotaDetailsDTO(global, domain, user, computed, occupation);
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java
index 2d0864e747..ec11e8ecf7 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java
@@ -26,11 +26,12 @@ import javax.inject.Inject;
import org.apache.james.core.Domain;
import org.apache.james.core.quota.QuotaCountLimit;
import org.apache.james.core.quota.QuotaSizeLimit;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.webadmin.dto.QuotaDomainDTO;
import org.apache.james.webadmin.dto.ValidatedQuotaDTO;
+import reactor.core.publisher.Mono;
+
public class DomainQuotaService {
private final MaxQuotaManager maxQuotaManager;
@@ -41,61 +42,80 @@ public class DomainQuotaService {
}
public Optional<QuotaCountLimit> getMaxCountQuota(Domain domain) {
- return maxQuotaManager.getDomainMaxMessage(domain);
+ return Mono.from(maxQuotaManager.getDomainMaxMessageReactive(domain)).blockOptional();
}
- public void setMaxCountQuota(Domain domain, QuotaCountLimit quotaCount) throws MailboxException {
- maxQuotaManager.setDomainMaxMessage(domain, quotaCount);
+ public void setMaxCountQuota(Domain domain, QuotaCountLimit quotaCount) {
+ Mono.from(maxQuotaManager.setDomainMaxMessageReactive(domain, quotaCount)).block();
}
- public void remoteMaxQuotaCount(Domain domain) throws MailboxException {
- maxQuotaManager.removeDomainMaxMessage(domain);
+ public void remoteMaxQuotaCount(Domain domain) {
+ Mono.from(maxQuotaManager.removeDomainMaxMessageReactive(domain)).block();
}
public Optional<QuotaSizeLimit> getMaxSizeQuota(Domain domain) {
- return maxQuotaManager.getDomainMaxStorage(domain);
+ return Mono.from(maxQuotaManager.getDomainMaxStorageReactive(domain)).blockOptional();
}
- public void setMaxSizeQuota(Domain domain, QuotaSizeLimit quotaSize) throws MailboxException {
- maxQuotaManager.setDomainMaxStorage(domain, quotaSize);
+ public void setMaxSizeQuota(Domain domain, QuotaSizeLimit quotaSize) {
+ Mono.from(maxQuotaManager.setDomainMaxStorageReactive(domain, quotaSize)).block();
}
- public void remoteMaxQuotaSize(Domain domain) throws MailboxException {
- maxQuotaManager.removeDomainMaxStorage(domain);
+ public void remoteMaxQuotaSize(Domain domain) {
+ Mono.from(maxQuotaManager.removeDomainMaxStorageReactive(domain)).block();
}
- public QuotaDomainDTO getQuota(Domain domain) throws MailboxException {
- return QuotaDomainDTO.builder()
- .domain(ValidatedQuotaDTO
- .builder()
- .count(maxQuotaManager.getDomainMaxMessage(domain))
- .size(maxQuotaManager.getDomainMaxStorage(domain)))
- .global(ValidatedQuotaDTO
- .builder()
- .count(maxQuotaManager.getGlobalMaxMessage())
- .size(maxQuotaManager.getGlobalMaxStorage()))
- .computed(ValidatedQuotaDTO
- .builder()
- .count(maxQuotaManager.getComputedMaxMessage(domain))
- .size(maxQuotaManager.getComputedMaxStorage(domain)))
- .build();
+ public QuotaDomainDTO getQuota(Domain domain) {
+ Mono<Optional<QuotaCountLimit>> getDomainMaxMessage = Mono.from(maxQuotaManager.getDomainMaxMessageReactive(domain))
+ .map(Optional::of)
+ .defaultIfEmpty(Optional.empty());
+ Mono<Optional<QuotaSizeLimit>> getDomainMaxStorage = Mono.from(maxQuotaManager.getDomainMaxStorageReactive(domain))
+ .map(Optional::of)
+ .defaultIfEmpty(Optional.empty());
+
+ Mono<Optional<QuotaCountLimit>> getGlobalMaxMessage = Mono.from(maxQuotaManager.getGlobalMaxMessageReactive())
+ .map(Optional::of)
+ .defaultIfEmpty(Optional.empty());
+ Mono<Optional<QuotaSizeLimit>> getGlobalMaxStorage = Mono.from(maxQuotaManager.getGlobalMaxStorageReactive())
+ .map(Optional::of)
+ .defaultIfEmpty(Optional.empty());
+
+ return Mono.zip(getDomainMaxMessage,
+ getDomainMaxStorage,
+ getGlobalMaxMessage,
+ getGlobalMaxStorage)
+ .map(tuple4 -> QuotaDomainDTO.builder()
+ .domain(ValidatedQuotaDTO
+ .builder()
+ .count(tuple4.getT1())
+ .size(tuple4.getT2()))
+ .global(ValidatedQuotaDTO
+ .builder()
+ .count(tuple4.getT3())
+ .size(tuple4.getT4()))
+ .computed(ValidatedQuotaDTO
+ .builder()
+ .count(tuple4.getT1().or(tuple4::getT3))
+ .size(tuple4.getT2().or(tuple4::getT4)))
+ .build())
+ .block();
}
public void defineQuota(Domain domain, ValidatedQuotaDTO quota) {
- try {
- if (quota.getCount().isPresent()) {
- maxQuotaManager.setDomainMaxMessage(domain, quota.getCount().get());
- } else {
- maxQuotaManager.removeDomainMaxMessage(domain);
- }
-
- if (quota.getSize().isPresent()) {
- maxQuotaManager.setDomainMaxStorage(domain, quota.getSize().get());
- } else {
- maxQuotaManager.removeDomainMaxStorage(domain);
- }
- } catch (MailboxException e) {
- throw new RuntimeException(e);
- }
+ defineDomainMaxMessage(domain, quota)
+ .then(defineDomainMaxStorage(domain, quota))
+ .block();
+ }
+
+ private Mono<Void> defineDomainMaxStorage(Domain domain, ValidatedQuotaDTO quota) {
+ return quota.getSize()
+ .map(sizeLimit -> Mono.from(maxQuotaManager.setDomainMaxStorageReactive(domain, sizeLimit)))
+ .orElseGet(() -> Mono.from(maxQuotaManager.removeDomainMaxStorageReactive(domain)));
+ }
+
+ private Mono<Void> defineDomainMaxMessage(Domain domain, ValidatedQuotaDTO quota) {
+ return quota.getCount()
+ .map(countLimit -> Mono.from(maxQuotaManager.setDomainMaxMessageReactive(domain, countLimit)))
+ .orElseGet(() -> Mono.from(maxQuotaManager.removeDomainMaxMessageReactive(domain)));
}
}
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/GlobalQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/GlobalQuotaService.java
index a957c4d07b..787ba6cb19 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/GlobalQuotaService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/GlobalQuotaService.java
@@ -24,10 +24,11 @@ import javax.inject.Inject;
import org.apache.james.core.quota.QuotaCountLimit;
import org.apache.james.core.quota.QuotaSizeLimit;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.webadmin.dto.ValidatedQuotaDTO;
+import reactor.core.publisher.Mono;
+
public class GlobalQuotaService {
private final MaxQuotaManager maxQuotaManager;
@@ -37,51 +38,60 @@ public class GlobalQuotaService {
this.maxQuotaManager = maxQuotaManager;
}
- public void defineQuota(ValidatedQuotaDTO quota) throws MailboxException {
- Optional<QuotaCountLimit> count = quota.getCount();
- if (count.isPresent()) {
- maxQuotaManager.setGlobalMaxMessage(count.get());
- } else {
- maxQuotaManager.removeGlobalMaxMessage();
- }
-
- Optional<QuotaSizeLimit> size = quota.getSize();
- if (size.isPresent()) {
- maxQuotaManager.setGlobalMaxStorage(size.get());
- } else {
- maxQuotaManager.removeGlobalMaxStorage();
- }
+ public void defineQuota(ValidatedQuotaDTO quota) {
+ defineGlobalMaxMessage(quota)
+ .then(defineGlobalMaxStorage(quota))
+ .block();
+ }
+
+ private Mono<Void> defineGlobalMaxStorage(ValidatedQuotaDTO quota) {
+ return quota.getSize()
+ .map(sizeLimit -> Mono.from(maxQuotaManager.setGlobalMaxStorageReactive(sizeLimit)))
+ .orElseGet(() -> Mono.from(maxQuotaManager.removeGlobalMaxStorageReactive()));
+ }
+
+ private Mono<Void> defineGlobalMaxMessage(ValidatedQuotaDTO quota) {
+ return quota.getCount()
+ .map(countLimit -> Mono.from(maxQuotaManager.setGlobalMaxMessageReactive(countLimit)))
+ .orElseGet(() -> Mono.from(maxQuotaManager.removeGlobalMaxMessageReactive()));
}
- public ValidatedQuotaDTO getQuota() throws MailboxException {
- return ValidatedQuotaDTO
- .builder()
- .count(maxQuotaManager.getGlobalMaxMessage())
- .size(maxQuotaManager.getGlobalMaxStorage())
- .build();
+ public ValidatedQuotaDTO getQuota() {
+ return Mono.zip(Mono.from(maxQuotaManager.getGlobalMaxMessageReactive())
+ .map(Optional::of)
+ .switchIfEmpty(Mono.just(Optional.empty())),
+ Mono.from(maxQuotaManager.getGlobalMaxStorageReactive())
+ .map(Optional::of)
+ .switchIfEmpty(Mono.just(Optional.empty())))
+ .map(tuple -> ValidatedQuotaDTO
+ .builder()
+ .count(tuple.getT1())
+ .size(tuple.getT2())
+ .build())
+ .block();
}
- public Optional<QuotaSizeLimit> getMaxSizeQuota() throws MailboxException {
- return maxQuotaManager.getGlobalMaxStorage();
+ public Optional<QuotaSizeLimit> getMaxSizeQuota() {
+ return Mono.from(maxQuotaManager.getGlobalMaxStorageReactive()).blockOptional();
}
- public void defineMaxSizeQuota(QuotaSizeLimit quotaRequest) throws MailboxException {
- maxQuotaManager.setGlobalMaxStorage(quotaRequest);
+ public void defineMaxSizeQuota(QuotaSizeLimit quotaRequest) {
+ Mono.from(maxQuotaManager.setGlobalMaxStorageReactive(quotaRequest)).block();
}
- public void deleteMaxSizeQuota() throws MailboxException {
- maxQuotaManager.removeGlobalMaxStorage();
+ public void deleteMaxSizeQuota() {
+ Mono.from(maxQuotaManager.removeGlobalMaxStorageReactive()).block();
}
- public Optional<QuotaCountLimit> getMaxCountQuota() throws MailboxException {
- return maxQuotaManager.getGlobalMaxMessage();
+ public Optional<QuotaCountLimit> getMaxCountQuota() {
+ return Mono.from(maxQuotaManager.getGlobalMaxMessageReactive()).blockOptional();
}
- public void defineMaxCountQuota(QuotaCountLimit value) throws MailboxException {
- maxQuotaManager.setGlobalMaxMessage(value);
+ public void defineMaxCountQuota(QuotaCountLimit value) {
+ Mono.from(maxQuotaManager.setGlobalMaxMessageReactive(value)).block();
}
- public void deleteMaxCountQuota() throws MailboxException {
- maxQuotaManager.removeGlobalMaxMessage();
+ public void deleteMaxCountQuota() {
+ Mono.from(maxQuotaManager.removeGlobalMaxMessageReactive()).block();
}
}
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
index 22c9a024da..7d68471cf6 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
@@ -29,7 +29,6 @@ import javax.inject.Inject;
import org.apache.james.core.Username;
import org.apache.james.core.quota.QuotaCountLimit;
import org.apache.james.core.quota.QuotaSizeLimit;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Quota;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.quota.MaxQuotaManager;
@@ -45,6 +44,8 @@ import com.github.fge.lambdas.Throwing;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
+import reactor.core.publisher.Mono;
+
public class UserQuotaService {
private final MaxQuotaManager maxQuotaManager;
@@ -61,49 +62,44 @@ public class UserQuotaService {
}
public void defineQuota(Username username, ValidatedQuotaDTO quota) {
- try {
- QuotaRoot quotaRoot = userQuotaRootResolver.forUser(username);
- if (quota.getCount().isPresent()) {
- maxQuotaManager.setMaxMessage(quotaRoot, quota.getCount().get());
- } else {
- maxQuotaManager.removeMaxMessage(quotaRoot);
- }
-
- if (quota.getSize().isPresent()) {
- maxQuotaManager.setMaxStorage(quotaRoot, quota.getSize().get());
- } else {
- maxQuotaManager.removeMaxStorage(quotaRoot);
- }
- } catch (MailboxException e) {
- throw new RuntimeException(e);
- }
+ QuotaRoot quotaRoot = userQuotaRootResolver.forUser(username);
+ defineUserMaxMessage(quotaRoot, quota)
+ .then(defineUserMaxStorage(quotaRoot, quota))
+ .block();
}
- public QuotaDetailsDTO getQuota(Username username) throws MailboxException {
- return getQuota(userQuotaRootResolver.forUser(username));
+ private Mono<Void> defineUserMaxMessage(QuotaRoot quotaRoot, ValidatedQuotaDTO quota) {
+ return quota.getCount()
+ .map(countLimit -> Mono.from(maxQuotaManager.setMaxMessageReactive(quotaRoot, countLimit)))
+ .orElseGet(() -> Mono.from(maxQuotaManager.removeMaxMessageReactive(quotaRoot)));
}
- private QuotaDetailsDTO getQuota(QuotaRoot quotaRoot) throws MailboxException {
- QuotaManager.Quotas quotas = quotaManager.getQuotas(quotaRoot);
- QuotaDetailsDTO.Builder quotaDetails = QuotaDetailsDTO.builder()
- .occupation(quotas.getStorageQuota(),
- quotas.getMessageQuota());
-
- mergeMaps(
- maxQuotaManager.listMaxMessagesDetails(quotaRoot),
- maxQuotaManager.listMaxStorageDetails(quotaRoot))
- .forEach(quotaDetails::valueForScope);
+ private Mono<Void> defineUserMaxStorage(QuotaRoot quotaRoot, ValidatedQuotaDTO quota) {
+ return quota.getSize()
+ .map(sizeLimit -> Mono.from(maxQuotaManager.setMaxStorageReactive(quotaRoot, sizeLimit)))
+ .orElseGet(() -> Mono.from(maxQuotaManager.removeMaxStorageReactive(quotaRoot)));
+ }
- quotaDetails.computed(computedQuota(quotaRoot));
- return quotaDetails.build();
+ public QuotaDetailsDTO getQuota(Username username) {
+ return getQuota(userQuotaRootResolver.forUser(username));
}
- private ValidatedQuotaDTO computedQuota(QuotaRoot quotaRoot) throws MailboxException {
- return ValidatedQuotaDTO
- .builder()
- .count(maxQuotaManager.getMaxMessage(quotaRoot))
- .size(maxQuotaManager.getMaxStorage(quotaRoot))
- .build();
+ private QuotaDetailsDTO getQuota(QuotaRoot quotaRoot) {
+ return Mono.zip(
+ Mono.from(quotaManager.getQuotasReactive(quotaRoot)),
+ Mono.from(maxQuotaManager.listMaxMessagesDetailsReactive(quotaRoot)),
+ Mono.from(maxQuotaManager.listMaxStorageDetailsReactive(quotaRoot)))
+ .map(tuple3 -> QuotaDetailsDTO.builder()
+ .occupation(tuple3.getT1().getStorageQuota(),
+ tuple3.getT1().getMessageQuota())
+ .computed(ValidatedQuotaDTO
+ .builder()
+ .count(maxQuotaManager.getMaxMessage(tuple3.getT2()))
+ .size(maxQuotaManager.getMaxStorage(tuple3.getT3()))
+ .build())
+ .valueForScopes(mergeMaps(tuple3.getT2(), tuple3.getT3()))
+ .build())
+ .block();
}
private Map<Quota.Scope, ValidatedQuotaDTO> mergeMaps(Map<Quota.Scope, QuotaCountLimit> counts, Map<Quota.Scope, QuotaSizeLimit> sizes) {
@@ -118,28 +114,32 @@ public class UserQuotaService {
}
- public Optional<QuotaSizeLimit> getMaxSizeQuota(Username username) throws MailboxException {
- return maxQuotaManager.getMaxStorage(userQuotaRootResolver.forUser(username));
+ public Optional<QuotaSizeLimit> getMaxSizeQuota(Username username) {
+ return Mono.from(maxQuotaManager.listMaxStorageDetailsReactive(userQuotaRootResolver.forUser(username)))
+ .map(maxQuotaManager::getMaxStorage)
+ .block();
}
- public void defineMaxSizeQuota(Username username, QuotaSizeLimit quotaSize) throws MailboxException {
- maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(username), quotaSize);
+ public void defineMaxSizeQuota(Username username, QuotaSizeLimit quotaSize) {
+ Mono.from(maxQuotaManager.setMaxStorageReactive(userQuotaRootResolver.forUser(username), quotaSize)).block();
}
- public void deleteMaxSizeQuota(Username username) throws MailboxException {
- maxQuotaManager.removeMaxStorage(userQuotaRootResolver.forUser(username));
+ public void deleteMaxSizeQuota(Username username) {
+ Mono.from(maxQuotaManager.removeMaxStorageReactive(userQuotaRootResolver.forUser(username))).block();
}
- public Optional<QuotaCountLimit> getMaxCountQuota(Username username) throws MailboxException {
- return maxQuotaManager.getMaxMessage(userQuotaRootResolver.forUser(username));
+ public Optional<QuotaCountLimit> getMaxCountQuota(Username username) {
+ return Mono.from(maxQuotaManager.listMaxMessagesDetailsReactive(userQuotaRootResolver.forUser(username)))
+ .map(maxQuotaManager::getMaxMessage)
+ .block();
}
- public void defineMaxCountQuota(Username username, QuotaCountLimit quotaCount) throws MailboxException {
- maxQuotaManager.setMaxMessage(userQuotaRootResolver.forUser(username), quotaCount);
+ public void defineMaxCountQuota(Username username, QuotaCountLimit quotaCount) {
+ Mono.from(maxQuotaManager.setMaxMessageReactive(userQuotaRootResolver.forUser(username), quotaCount)).block();
}
- public void deleteMaxCountQuota(Username username) throws MailboxException {
- maxQuotaManager.removeMaxMessage(userQuotaRootResolver.forUser(username));
+ public void deleteMaxCountQuota(Username username) {
+ Mono.from(maxQuotaManager.removeMaxMessageReactive(userQuotaRootResolver.forUser(username))).block();
}
public List<UsersQuotaDetailsDTO> getUsersQuota(QuotaQuery quotaQuery) {
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org