You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by hq...@apache.org on 2025/10/29 07:11:37 UTC

(james-project) 03/07: JAMES-4148 Additional information: mailboxName -> mailboxPath

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

hqtran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 904d30aece1bf1b08c6e770b9afff2a294a749bd
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Tue Oct 28 15:28:25 2025 +0700

    JAMES-4148 Additional information: mailboxName -> mailboxPath
    
    Allow knowing if the mailbox is a shared mailbox.
---
 docs/modules/servers/partials/operate/webadmin.adoc      |  4 ++--
 ...MQWebAdminServerTaskSerializationIntegrationTest.java |  2 +-
 .../james/webadmin/data/jmap/RunRulesOnMailboxTask.java  | 16 ++++++++--------
 .../RunRulesOnMailboxTaskAdditionalInformationDTO.java   | 16 ++++++++--------
 .../webadmin/data/jmap/RunRulesOnMailboxRoutesTest.java  |  2 +-
 ...unRulesOnMailboxTaskAdditionalInformationDTOTest.java |  4 ++--
 .../json/runRulesOnMailbox.additionalInformation.json    |  2 +-
 7 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/docs/modules/servers/partials/operate/webadmin.adoc b/docs/modules/servers/partials/operate/webadmin.adoc
index 0bd32faead..b86cf502a1 100644
--- a/docs/modules/servers/partials/operate/webadmin.adoc
+++ b/docs/modules/servers/partials/operate/webadmin.adoc
@@ -1854,7 +1854,7 @@ the following `additionalInformation`:
 
 ....
 {
-    "mailboxName": "mbx1",
+    "mailboxPath": "#private:bob@domain.tld:mbx1",
     "messagesFailCount": 9,
     "messagesSuccessCount": 10,
     "timestamp": "2007-12-03T10:15:30Z",
@@ -1926,7 +1926,7 @@ the following `additionalInformation`:
 
 ....
 {
-    "mailboxName": "mbx1",
+    "mailboxPath": "#private:bob@domain.tld:mbx1",
     "processedMessagesCount": 15,
     "rulesOnMessagesApplySuccessfully": 9,
     "rulesOnMessagesApplyFailed": 3,
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
index ea01f9eb62..3c47808de4 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
@@ -777,7 +777,7 @@ class RabbitMQWebAdminServerTaskSerializationIntegrationTest {
             .body("additionalInformation.rulesOnMessagesApplySuccessfully", is(1))
             .body("additionalInformation.rulesOnMessagesApplyFailed", is(0))
             .body("additionalInformation.username", is(USERNAME))
-            .body("additionalInformation.mailboxName", is(MailboxConstants.INBOX));
+            .body("additionalInformation.mailboxPath", is(MailboxPath.forUser(Username.of(USERNAME), MailboxConstants.INBOX).asString()));
     }
 
     @Disabled("JAMES-4148: Route not plugged yet")
diff --git a/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTask.java b/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTask.java
index da99e07ceb..a478af63d7 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTask.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTask.java
@@ -134,15 +134,15 @@ public class RunRulesOnMailboxTask implements Task {
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
 
         private static AdditionalInformation from(Username username,
-                                                  MailboxName mailboxName,
+                                                  MailboxPath mailboxPath,
                                                   RunRulesOnMailboxTask.Context context) {
             Context.Snapshot snapshot = context.snapshot();
-            return new AdditionalInformation(username, mailboxName, Clock.systemUTC().instant(), snapshot.rulesOnMessagesApplySuccessfully,
+            return new AdditionalInformation(username, mailboxPath, Clock.systemUTC().instant(), snapshot.rulesOnMessagesApplySuccessfully,
                 snapshot.rulesOnMessagesApplyFailed, snapshot.maximumAppliedActionExceeded, snapshot.processedMessagesCount);
         }
 
         private final Username username;
-        private final MailboxName mailboxName;
+        private final MailboxPath mailboxPath;
         private final Instant timestamp;
         private final long rulesOnMessagesApplySuccessfully;
         private final long rulesOnMessagesApplyFailed;
@@ -150,14 +150,14 @@ public class RunRulesOnMailboxTask implements Task {
         private final long processedMessagesCount;
 
         public AdditionalInformation(Username username,
-                                     MailboxName mailboxName,
+                                     MailboxPath mailboxPath,
                                      Instant timestamp,
                                      long rulesOnMessagesApplySuccessfully,
                                      long rulesOnMessagesApplyFailed,
                                      boolean maximumAppliedActionExceeded,
                                      long processedMessagesCount) {
             this.username = username;
-            this.mailboxName = mailboxName;
+            this.mailboxPath = mailboxPath;
             this.timestamp = timestamp;
             this.rulesOnMessagesApplySuccessfully = rulesOnMessagesApplySuccessfully;
             this.rulesOnMessagesApplyFailed = rulesOnMessagesApplyFailed;
@@ -169,8 +169,8 @@ public class RunRulesOnMailboxTask implements Task {
             return username;
         }
 
-        public MailboxName getMailboxName() {
-            return mailboxName;
+        public MailboxPath getMailboxPath() {
+            return mailboxPath;
         }
 
         public Instant getTimestamp() {
@@ -238,7 +238,7 @@ public class RunRulesOnMailboxTask implements Task {
 
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
-        return Optional.of(AdditionalInformation.from(username, new MailboxName(mailboxPath.getName()), context));
+        return Optional.of(AdditionalInformation.from(username, mailboxPath, context));
     }
 
     public Username getUsername() {
diff --git a/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTO.java
index 4f3feff328..14d2bc493c 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTO.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTO.java
@@ -23,9 +23,9 @@ import java.time.Instant;
 
 import org.apache.james.core.Username;
 import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
 import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
-import org.apache.james.webadmin.validation.MailboxName;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
@@ -41,7 +41,7 @@ public class RunRulesOnMailboxTaskAdditionalInformationDTO implements Additional
     private static RunRulesOnMailboxTask.AdditionalInformation toDomainObject(RunRulesOnMailboxTaskAdditionalInformationDTO dto) {
         return new RunRulesOnMailboxTask.AdditionalInformation(
             Username.of(dto.getUsername()),
-            new MailboxName(dto.getMailboxName()),
+            MailboxPath.parseEscaped(dto.getMailboxPath()).orElseThrow(),
             dto.getTimestamp(),
             dto.getRulesOnMessagesApplySuccessfully(),
             dto.getRulesOnMessagesApplyFailed(),
@@ -53,7 +53,7 @@ public class RunRulesOnMailboxTaskAdditionalInformationDTO implements Additional
         return new RunRulesOnMailboxTaskAdditionalInformationDTO(
             type,
             domain.getUsername().asString(),
-            domain.getMailboxName().asString(),
+            domain.getMailboxPath().asString(),
             domain.getTimestamp(),
             domain.getRulesOnMessagesApplySuccessfully(),
             domain.getRulesOnMessagesApplyFailed(),
@@ -63,7 +63,7 @@ public class RunRulesOnMailboxTaskAdditionalInformationDTO implements Additional
 
     private final String type;
     private final String username;
-    private final String mailboxName;
+    private final String mailboxPath;
     private final Instant timestamp;
     private final long rulesOnMessagesApplySuccessfully;
     private final long rulesOnMessagesApplyFailed;
@@ -72,7 +72,7 @@ public class RunRulesOnMailboxTaskAdditionalInformationDTO implements Additional
 
     public RunRulesOnMailboxTaskAdditionalInformationDTO(@JsonProperty("type") String type,
                                                          @JsonProperty("username") String username,
-                                                         @JsonProperty("mailboxName") String mailboxName,
+                                                         @JsonProperty("mailboxPath") String mailboxPath,
                                                          @JsonProperty("timestamp") Instant timestamp,
                                                          @JsonProperty("rulesOnMessagesApplySuccessfully") long rulesOnMessagesApplySuccessfully,
                                                          @JsonProperty("rulesOnMessagesApplyFailed") long rulesOnMessagesApplyFailed,
@@ -80,7 +80,7 @@ public class RunRulesOnMailboxTaskAdditionalInformationDTO implements Additional
                                                          @JsonProperty("processedMessagesCount") long processedMessagesCount) {
         this.type = type;
         this.username = username;
-        this.mailboxName = mailboxName;
+        this.mailboxPath = mailboxPath;
         this.timestamp = timestamp;
         this.rulesOnMessagesApplySuccessfully = rulesOnMessagesApplySuccessfully;
         this.rulesOnMessagesApplyFailed = rulesOnMessagesApplyFailed;
@@ -102,8 +102,8 @@ public class RunRulesOnMailboxTaskAdditionalInformationDTO implements Additional
         return username;
     }
 
-    public String getMailboxName() {
-        return mailboxName;
+    public String getMailboxPath() {
+        return mailboxPath;
     }
 
     public long getRulesOnMessagesApplySuccessfully() {
diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxRoutesTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxRoutesTest.java
index 71ca7a9bf3..50b43be71e 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxRoutesTest.java
@@ -1035,7 +1035,7 @@ public class RunRulesOnMailboxRoutesTest {
                 .body("submitDate", Matchers.is(notNullValue()))
                 .body("completedDate", Matchers.is(notNullValue()))
                 .body("additionalInformation.username", Matchers.is(USERNAME.asString()))
-                .body("additionalInformation.mailboxName", Matchers.is(MAILBOX_NAME))
+                .body("additionalInformation.mailboxPath", Matchers.is(MailboxPath.forUser(USERNAME, MAILBOX_NAME).asString()))
                 .body("additionalInformation.rulesOnMessagesApplySuccessfully", Matchers.is(2))
                 .body("additionalInformation.rulesOnMessagesApplyFailed", Matchers.is(0));
         }
diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTOTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTOTest.java
index b6cfcc7a35..6af7e3a24b 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTOTest.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RunRulesOnMailboxTaskAdditionalInformationDTOTest.java
@@ -23,15 +23,15 @@ import java.time.Instant;
 
 import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.core.Username;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.util.ClassLoaderUtils;
-import org.apache.james.webadmin.validation.MailboxName;
 import org.junit.jupiter.api.Test;
 
 public class RunRulesOnMailboxTaskAdditionalInformationDTOTest {
     private static final Instant INSTANT = Instant.parse("2007-12-03T10:15:30.00Z");
 
     private static final RunRulesOnMailboxTask.AdditionalInformation DOMAIN_OBJECT = new RunRulesOnMailboxTask.AdditionalInformation(
-        Username.of("bob@domain.tld"), new MailboxName("mbx1"), INSTANT, 10, 9, false, 30);
+        Username.of("bob@domain.tld"), MailboxPath.forUser(Username.of("bob@domain.tld"), "mbx1"), INSTANT, 10, 9, false, 30);
 
     @Test
     void shouldMatchJsonSerializationContract() throws Exception {
diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/resources/json/runRulesOnMailbox.additionalInformation.json b/server/protocols/webadmin/webadmin-jmap/src/test/resources/json/runRulesOnMailbox.additionalInformation.json
index 6be4f207e4..a9482c4dc1 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/test/resources/json/runRulesOnMailbox.additionalInformation.json
+++ b/server/protocols/webadmin/webadmin-jmap/src/test/resources/json/runRulesOnMailbox.additionalInformation.json
@@ -1,5 +1,5 @@
 {
-  "mailboxName": "mbx1",
+  "mailboxPath": "#private:bob@domain.tld:mbx1",
   "rulesOnMessagesApplyFailed": 9,
   "rulesOnMessagesApplySuccessfully": 10,
   "processedMessagesCount": 30,


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