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