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 2020/11/12 04:42:23 UTC

[james-project] 06/12: JAMES-3171 Enhance MailboxGetMethod reactive management

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 d2f466c443c61d62e569e4abe4b4d5719cd999a1
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Nov 11 14:06:12 2020 +0700

    JAMES-3171 Enhance MailboxGetMethod reactive management
    
     - Chain SMonos with `.zip`
     - Remove unnecessary intermediate flatMaps
---
 .../james/jmap/method/MailboxGetMethod.scala       | 27 ++++++++++------------
 1 file changed, 12 insertions(+), 15 deletions(-)

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 c433d17..c13bf3a 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
@@ -29,7 +29,7 @@ import org.apache.james.jmap.json.{MailboxSerializer, ResponseSerializer}
 import org.apache.james.jmap.mail.MailboxGet.UnparsedMailboxId
 import org.apache.james.jmap.mail.{Mailbox, MailboxFactory, MailboxGet, MailboxGetRequest, MailboxGetResponse, NotFound, PersonalNamespace, Subscriptions}
 import org.apache.james.jmap.routes.SessionSupplier
-import org.apache.james.jmap.utils.quotas.{QuotaLoader, QuotaLoaderWithPreloadedDefaultFactory}
+import org.apache.james.jmap.utils.quotas.{QuotaLoaderWithPreloadedDefault, QuotaLoaderWithPreloadedDefaultFactory}
 import org.apache.james.mailbox.exception.MailboxNotFoundException
 import org.apache.james.mailbox.model.search.MailboxQuery
 import org.apache.james.mailbox.model.{MailboxId, MailboxMetaData}
@@ -138,23 +138,20 @@ class MailboxGetMethod @Inject() (serializer: MailboxSerializer,
     val subscriptions: SMono[Subscriptions] = SMono.fromCallable(() =>
       Subscriptions(subscriptionManager.subscriptions(mailboxSession).asScala.toSet))
 
-    quotaFactory.loadFor(mailboxSession)
-      .flatMap(quotaLoader => subscriptions.map[(QuotaLoader, Subscriptions)](subscriptions => (quotaLoader, subscriptions)))
+    SMono.zip(array => (array(0).asInstanceOf[Seq[MailboxMetaData]],
+          array(1).asInstanceOf[QuotaLoaderWithPreloadedDefault],
+          array(2).asInstanceOf[Subscriptions]),
+        getAllMailboxesMetaData(capabilities, mailboxSession),
+        quotaFactory.loadFor(mailboxSession),
+        subscriptions)
       .subscribeOn(Schedulers.elastic)
-      .flatMap {
-        case (quotaLoader, subscriptions) => getAllMailboxesMetaData(capabilities, mailboxSession)
-          .map((_, quotaLoader, subscriptions))
-      }
       .flatMapMany {
         case (mailboxes, quotaLoader, subscriptions) => SFlux.fromIterable(mailboxes)
-          .map(mailbox => (mailboxes, mailbox, quotaLoader, subscriptions))
-      }
-      .flatMap {
-        case (mailboxes, mailbox, quotaLoader, subs) => mailboxFactory.create(mailboxMetaData = mailbox,
-          mailboxSession = mailboxSession,
-          subscriptions = subs,
-          allMailboxesMetadata = mailboxes,
-          quotaLoader = quotaLoader)
+          .flatMap(mailbox => mailboxFactory.create(mailboxMetaData = mailbox,
+            mailboxSession = mailboxSession,
+            subscriptions = subscriptions,
+            allMailboxesMetadata = mailboxes,
+            quotaLoader = quotaLoader))
       }
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org