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/06/30 01:07:15 UTC
[james-project] 04/06: JAMES-3466 Provision default mailboxes only
when listing all mailboxes
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 239c4087193142f2239b494e749d275e72326dab
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sun Jun 27 14:02:09 2021 +0700
JAMES-3466 Provision default mailboxes only when listing all mailboxes
---
.../contract/MailboxChangesMethodContract.scala | 3 +-
.../james/jmap/method/MailboxGetMethod.scala | 38 +++++++++++-----------
2 files changed, 20 insertions(+), 21 deletions(-)
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxChangesMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxChangesMethodContract.scala
index f4cdb93..1c1f40a 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxChangesMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxChangesMethodContract.scala
@@ -1986,8 +1986,7 @@ trait MailboxChangesMethodContract {
| "methodCalls": [[
| "Mailbox/get",
| {
- | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
- | "ids": ["$mailboxId"]
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
| },
| "c1"]]
|}""".stripMargin
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
index 9a62ca9..0354284 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
@@ -107,28 +107,28 @@ class MailboxGetMethod @Inject() (serializer: MailboxSerializer,
case errors: JsError => Left(new IllegalArgumentException(ResponseSerializer.serialize(errors).toString))
}
+
private def getMailboxes(capabilities: Set[CapabilityIdentifier],
mailboxGetRequest: MailboxGetRequest,
mailboxSession: MailboxSession): SFlux[MailboxGetResults] =
- provisioner.createMailboxesIfNeeded(mailboxSession)
- .thenMany(
- mailboxGetRequest.ids match {
- case None => getAllMailboxes(capabilities, mailboxSession)
- .map(MailboxGetResults.found)
- case Some(Ids.EMPTY) => SFlux.empty
- case Some(ids) =>
- SMono.zip(array => (array(0).asInstanceOf[QuotaLoaderWithPreloadedDefault],
- array(1).asInstanceOf[Subscriptions]),
- quotaFactory.loadFor(mailboxSession),
- retrieveSubscriptions(mailboxSession))
- .flatMapMany {
- case (quotaLoader, subscriptions) => SFlux.fromIterable(ids.value)
- .flatMap(id => Try(mailboxIdFactory.fromString(id.id))
- .fold(e => SMono.just(MailboxGetResults.notFound(id)),
- mailboxId => getMailboxResultById(capabilities, mailboxId, subscriptions, quotaLoader, mailboxSession)),
- maxConcurrency = 5)
- }
- })
+ mailboxGetRequest.ids match {
+ case None => provisioner.createMailboxesIfNeeded(mailboxSession)
+ .thenMany(getAllMailboxes(capabilities, mailboxSession))
+ .map(MailboxGetResults.found)
+ case Some(Ids.EMPTY) => SFlux.empty
+ case Some(ids) =>
+ SMono.zip(array => (array(0).asInstanceOf[QuotaLoaderWithPreloadedDefault],
+ array(1).asInstanceOf[Subscriptions]),
+ quotaFactory.loadFor(mailboxSession),
+ retrieveSubscriptions(mailboxSession))
+ .flatMapMany {
+ case (quotaLoader, subscriptions) => SFlux.fromIterable(ids.value)
+ .flatMap(id => Try(mailboxIdFactory.fromString(id.id))
+ .fold(e => SMono.just(MailboxGetResults.notFound(id)),
+ mailboxId => getMailboxResultById(capabilities, mailboxId, subscriptions, quotaLoader, mailboxSession)),
+ maxConcurrency = 5)
+ }
+ }
private def retrieveSubscriptions(mailboxSession: MailboxSession): SMono[Subscriptions] =
SFlux(subscriptionManager.subscriptionsReactive(mailboxSession))
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org