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 2024/02/01 07:04:17 UTC

(james-project) branch master updated: [ENHANCEMENT] Allow customizing sortOrder

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


The following commit(s) were added to refs/heads/master by this push:
     new 9254c46d4b [ENHANCEMENT] Allow customizing sortOrder
9254c46d4b is described below

commit 9254c46d4bbc65553184369b434ca7e4d863acfb
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Mon Jan 29 21:17:03 2024 +0100

    [ENHANCEMENT] Allow customizing sortOrder
---
 .../java/org/apache/james/jmap/rfc8621/RFC8621MethodsModule.java  | 2 ++
 .../src/main/scala/org/apache/james/jmap/mail/Mailbox.scala       | 8 ++++++++
 .../main/scala/org/apache/james/jmap/mail/MailboxFactory.scala    | 5 +++--
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/rfc8621/RFC8621MethodsModule.java b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/rfc8621/RFC8621MethodsModule.java
index 9a73a82c2b..68a7c6a958 100644
--- a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/rfc8621/RFC8621MethodsModule.java
+++ b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/rfc8621/RFC8621MethodsModule.java
@@ -48,6 +48,7 @@ import org.apache.james.jmap.http.JWTAuthenticationStrategy;
 import org.apache.james.jmap.http.rfc8621.InjectionKeys;
 import org.apache.james.jmap.mail.DefaultNamespaceFactory;
 import org.apache.james.jmap.mail.NamespaceFactory;
+import org.apache.james.jmap.mail.SortOrderProvider;
 import org.apache.james.jmap.method.CoreEchoMethod;
 import org.apache.james.jmap.method.DelegateGetMethod;
 import org.apache.james.jmap.method.DelegateSetMethod;
@@ -128,6 +129,7 @@ public class RFC8621MethodsModule extends AbstractModule {
     @Override
     protected void configure() {
         bind(NamespaceFactory.class).to(DefaultNamespaceFactory.class);
+        bind(SortOrderProvider.class).toInstance(SortOrderProvider.DEFAULT());
         bind(ZoneIdProvider.class).to(SystemZoneIdProvider.class);
 
         bind(EmailSubmissionSetMethod.class).in(Scopes.SINGLETON);
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Mailbox.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Mailbox.scala
index 2b72150a86..a836d1eb1a 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Mailbox.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Mailbox.scala
@@ -115,6 +115,14 @@ object MailboxName {
     }
 }
 
+object SortOrderProvider {
+  val DEFAULT: SortOrderProvider = role => SortOrder.getSortOrder(role)
+}
+
+trait SortOrderProvider {
+  def retrieveSortOrder(role: Role): SortOrder
+}
+
 case class Mailbox(id: MailboxId,
                    name: MailboxName,
                    parentId: Option[MailboxId],
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/MailboxFactory.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/MailboxFactory.scala
index 1a3fc8b2b8..33bf407ba0 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/MailboxFactory.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/MailboxFactory.scala
@@ -75,12 +75,13 @@ case class Subscriptions(subscribedNames: Set[MailboxPath]) {
 }
 
 class MailboxFactory @Inject() (mailboxManager: MailboxManager,
-                                namespaceFactory: NamespaceFactory) {
+                                namespaceFactory: NamespaceFactory,
+                                sortOrderProvider: SortOrderProvider) {
 
   private def getRole(mailboxPath: MailboxPath, mailboxSession: MailboxSession): Option[Role] = Role.from(mailboxPath.getName)
     .filter(_ => mailboxPath.belongsTo(mailboxSession)).toScala
 
-  private def getSortOrder(role: Option[Role]): SortOrder = role.map(SortOrder.getSortOrder).getOrElse(SortOrder.defaultSortOrder)
+  private def getSortOrder(role: Option[Role]): SortOrder = role.map(sortOrderProvider.retrieveSortOrder).getOrElse(SortOrder.defaultSortOrder)
 
   private def getRights(resolveMailboxACL: JavaMailboxACL): Rights = Rights.fromACL(MailboxACL.fromJava(resolveMailboxACL))
 


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