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]
