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

Reply via email to