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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
