This is an automated email from the ASF dual-hosted git repository.

btellier 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 94ce671  JAMES-3658 Allow to extend DefaultUserQuotaRootResolver (#693)
94ce671 is described below

commit 94ce671e129140d8ab8e858417514f2d303283cb
Author: Benoit TELLIER <[email protected]>
AuthorDate: Thu Oct 14 09:21:12 2021 +0700

    JAMES-3658 Allow to extend DefaultUserQuotaRootResolver (#693)
---
 .../store/quota/DefaultUserQuotaRootResolver.java  | 25 ++++++++++++----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
index 11113a6..dc5ebf0 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
@@ -56,7 +56,7 @@ public class DefaultUserQuotaRootResolver implements 
UserQuotaRootResolver {
             return QuotaRoot.quotaRoot(serializedQuotaRoot, 
username.getDomainPart());
         }
 
-        private List<String> toParts(String serializedQuotaRoot) throws 
MailboxException {
+        public List<String> toParts(String serializedQuotaRoot) throws 
MailboxException {
             List<String> parts = 
Splitter.on(SEPARATOR).splitToList(serializedQuotaRoot);
             if (parts.size() != 2) {
                 throw new MailboxException(serializedQuotaRoot + " used as 
QuotaRoot should contain exactly one \"" + SEPARATOR + "\"");
@@ -66,7 +66,7 @@ public class DefaultUserQuotaRootResolver implements 
UserQuotaRootResolver {
     }
 
     public static final String SEPARATOR = "&"; // Character illegal for 
mailbox naming in regard of RFC 3501 section 5.1
-    private static final DefaultQuotaRootDeserializer QUOTA_ROOT_DESERIALIZER 
= new DefaultQuotaRootDeserializer();
+    protected static final DefaultQuotaRootDeserializer 
QUOTA_ROOT_DESERIALIZER = new DefaultQuotaRootDeserializer();
 
     private final SessionProvider sessionProvider;
     private final MailboxSessionMapperFactory factory;
@@ -119,8 +119,7 @@ public class DefaultUserQuotaRootResolver implements 
UserQuotaRootResolver {
         return factory.getMailboxMapper(session)
             .findMailboxById(mailboxId)
             .map(Mailbox::generateAssociatedPath)
-            .map(MailboxPath::getUser)
-            .map(this::forUser);
+            .flatMap(path -> Mono.from(getQuotaRootReactive(path)));
     }
 
     @Override
@@ -144,15 +143,19 @@ public class DefaultUserQuotaRootResolver implements 
UserQuotaRootResolver {
             List<String> parts = 
QUOTA_ROOT_DESERIALIZER.toParts(quotaRoot.getValue());
             String namespace = parts.get(0);
             String user = parts.get(1);
-            return factory.getMailboxMapper(mailboxSession)
-                .findMailboxWithPathLike(MailboxQuery.builder()
-                    .namespace(namespace)
-                    .user(Username.of(user))
-                    .matchesAllMailboxNames()
-                    .build()
-                    .asUserBound());
+            return retrieveAssociatedMailboxes(mailboxSession, namespace, 
user);
         } catch (MailboxException e) {
             return Flux.error(e);
         }
     }
+
+    protected Flux<Mailbox> retrieveAssociatedMailboxes(MailboxSession 
mailboxSession, String namespace, String user) {
+        return factory.getMailboxMapper(mailboxSession)
+            .findMailboxWithPathLike(MailboxQuery.builder()
+                .namespace(namespace)
+                .user(Username.of(user))
+                .matchesAllMailboxNames()
+                .build()
+                .asUserBound());
+    }
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to