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