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

commit 64609b8b9c4760cc0eda2014ad17a0e8f08bb92e
Author: Benoit Tellier <[email protected]>
AuthorDate: Thu Apr 4 11:37:50 2019 +0700

    JAMES-2723 Merge SimpleMailbox and Mailbox
    
    Mailbox then becomes a standard POJO
---
 .../org/apache/james/mailbox/SimpleMailbox.java    | 146 ---------------------
 .../org/apache/james/mailbox/model/Mailbox.java    | 124 +++++++++++++----
 .../james/mailbox/model/MailboxAssertTests.java    |  25 ++--
 .../mailbox/backup/MailboxMessageFixture.java      |   9 +-
 .../mailbox/cassandra/CassandraMailboxManager.java |   3 +-
 .../cassandra/mail/CassandraMailboxDAO.java        |  16 +--
 .../cassandra/mail/CassandraMailboxMapper.java     |  40 +++---
 .../mail/CassandraIndexTableHandlerTest.java       |   3 +-
 .../mail/CassandraMailboxCounterDAOTest.java       |   6 +-
 .../cassandra/mail/CassandraMailboxDAOTest.java    |  22 ++--
 .../CassandraMailboxMapperConcurrencyTest.java     |   5 +-
 .../cassandra/mail/CassandraMailboxMapperTest.java |  15 +--
 .../mail/CassandraModSeqProviderTest.java          |   6 +-
 .../cassandra/mail/CassandraUidProviderTest.java   |   6 +-
 .../mail/migration/MailboxPathV2MigrationTest.java |   4 +-
 .../james/mailbox/jpa/JPAMailboxManager.java       |   3 +-
 .../james/mailbox/jpa/mail/JPAMailboxMapper.java   |   4 +-
 .../james/mailbox/jpa/mail/model/JPAMailbox.java   |   3 +-
 .../mailbox/jpa/openjpa/OpenJPAMessageManager.java |   4 +-
 .../LuceneMailboxMessageSearchIndexTest.java       |   8 +-
 .../apache/james/mailbox/maildir/MaildirStore.java |   3 +-
 .../inmemory/mail/InMemoryMailboxMapper.java       |   7 +-
 .../InMemoryCombinationManagerTestSystem.java      |   3 +-
 .../inmemory/InMemoryMessageManagerTestSystem.java |   3 +-
 .../spamassassin/SpamAssassinListenerTest.java     |  19 ++-
 .../james/mailbox/store/StoreMailboxManager.java   |   7 +-
 .../james/mailbox/store/StoreRightManagerTest.java |  31 +++--
 .../store/mail/model/ListMailboxAssertTest.java    |   9 +-
 .../store/mail/model/ListMessageAssertTest.java    |   5 +-
 .../store/mail/model/MailboxMapperACLTest.java     |   5 +-
 .../store/mail/model/MailboxMapperTest.java        |   7 +-
 .../store/mail/model/MessageIdMapperTest.java      |  13 +-
 .../store/mail/model/MessageMapperTest.java        |  11 +-
 .../mailbox/store/mail/model/MessageMoveTest.java  |   3 +-
 .../model/MessageWithAttachmentMapperTest.java     |   7 +-
 .../quota/DefaultUserQuotaRootResolverTest.java    |   6 +-
 .../mailbox/store/quota/QuotaCheckerTest.java      |   4 +-
 .../mailbox/store/mail/ZooUidProviderTest.java     |  10 +-
 .../processor/base/MailboxEventAnalyserTest.java   |   4 +-
 .../adapter/mailbox/MailboxManagementTest.java     |  47 ++++---
 40 files changed, 280 insertions(+), 376 deletions(-)

diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/SimpleMailbox.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/SimpleMailbox.java
deleted file mode 100644
index 2bd189b..0000000
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/SimpleMailbox.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.james.mailbox;
-
-import org.apache.james.mailbox.model.Mailbox;
-import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MailboxPath;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-public class SimpleMailbox implements Mailbox {
-
-    private MailboxId id = null;
-    private String namespace;
-    private String user;
-    private String name;
-    private final long uidValidity;
-    private MailboxACL acl = MailboxACL.EMPTY;
-
-    public SimpleMailbox(MailboxPath path, long uidValidity, MailboxId 
mailboxId) {
-        this.id = mailboxId;
-        this.namespace = path.getNamespace();
-        this.user = path.getUser();
-        this.name = path.getName();
-        this.uidValidity = uidValidity;
-    }
-
-    public SimpleMailbox(MailboxPath path, long uidValidity) {
-        this(path, uidValidity, null);
-    }
-
-    public SimpleMailbox(Mailbox mailbox) {
-        this.id = mailbox.getMailboxId();
-        this.namespace = mailbox.getNamespace();
-        this.user = mailbox.getUser();
-        this.name = mailbox.getName();
-        this.uidValidity = mailbox.getUidValidity();
-        this.acl = new MailboxACL(mailbox.getACL().getEntries());
-    }
-
-    @Override
-    public MailboxId getMailboxId() {
-        return id;
-    }
-
-    @Override
-    public String getNamespace() {
-        return namespace;
-    }
-
-    @Override
-    public void setNamespace(String namespace) {
-        this.namespace = namespace;
-    }
-
-    @Override
-    public String getUser() {
-        return user;
-    }
-
-    @Override
-    public void setUser(String user) {
-        this.user = user;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public long getUidValidity() {
-        return uidValidity;
-    }
-
-    @Override
-    public MailboxPath generateAssociatedPath() {
-        return new MailboxPath(getNamespace(), getUser(), getName());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj instanceof SimpleMailbox) {
-            SimpleMailbox o = (SimpleMailbox)obj;
-            return Objects.equal(id, o.getMailboxId());
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(namespace, user, name);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-            .add("namespace", namespace)
-            .add("user", user)
-            .add("name", name)
-            .toString();
-    }
-
-    @Override
-    public void setMailboxId(MailboxId id) {
-        this.id = id;
-    }
-
-    @Override
-    public MailboxACL getACL() {
-        return acl;
-    }
-
-    @Override
-    public void setACL(MailboxACL acl) {
-        this.acl = acl;
-    }
-
-    @Override
-    public boolean isChildOf(Mailbox potentialParent, MailboxSession 
mailboxSession) {
-        return MailboxUtil.isMailboxChildOf(this, potentialParent, 
mailboxSession);
-    }
-}
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java
index 7119187..02d213f 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java
@@ -19,78 +19,158 @@
 package org.apache.james.mailbox.model;
 
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxUtil;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
 
 /**
  * Models long term mailbox data.
  */
-public interface Mailbox {
-    void setMailboxId(MailboxId id);
-    
+public class Mailbox {
+    private MailboxId id = null;
+    private String namespace;
+    private String user;
+    private String name;
+    private final long uidValidity;
+    private MailboxACL acl = MailboxACL.EMPTY;
+
+    public Mailbox(MailboxPath path, long uidValidity, MailboxId mailboxId) {
+        this.id = mailboxId;
+        this.namespace = path.getNamespace();
+        this.user = path.getUser();
+        this.name = path.getName();
+        this.uidValidity = uidValidity;
+    }
+
+    public Mailbox(MailboxPath path, long uidValidity) {
+        this(path, uidValidity, null);
+    }
+
+    public Mailbox(Mailbox mailbox) {
+        this.id = mailbox.getMailboxId();
+        this.namespace = mailbox.getNamespace();
+        this.user = mailbox.getUser();
+        this.name = mailbox.getName();
+        this.uidValidity = mailbox.getUidValidity();
+        this.acl = new MailboxACL(mailbox.getACL().getEntries());
+    }
+
     /**
      * Gets the unique mailbox ID.
      * @return mailbox id
      */
-    MailboxId getMailboxId();
-
-    MailboxPath generateAssociatedPath();
+    public MailboxId getMailboxId() {
+        return id;
+    }
 
     /**
      * Gets the current namespace for this mailbox.
      * @return not null
      */
-    String getNamespace();
-    
+    public String getNamespace() {
+        return namespace;
+    }
+
     /**
      * Sets the current namespace for this mailbox.
      * @param namespace not null
      */
-    void setNamespace(String namespace);
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
 
     /**
      * Gets the current user for this mailbox.
      * @return not null
      */
-    String getUser();
-    
+    public String getUser() {
+        return user;
+    }
+
     /**
      * Sets the current user for this mailbox.
      * @param user not null
      */
-    void setUser(String user);
+    public void setUser(String user) {
+        this.user = user;
+    }
 
     /**
      * Gets the current name for this mailbox.
      * @return not null
      */
-    String getName();
-    
+    public String getName() {
+        return name;
+    }
+
     /**
      * Sets the current name for this mailbox.
      * @param name not null
      */
-    void setName(String name);
+    public void setName(String name) {
+        this.name = name;
+    }
 
     /**
      * Gets the current UID VALIDITY for this mailbox.
      * @return uid validity
      */
-    long getUidValidity();
-    
+    public long getUidValidity() {
+        return uidValidity;
+    }
+
+    public MailboxPath generateAssociatedPath() {
+        return new MailboxPath(getNamespace(), getUser(), getName());
+    }
+
+
+    public void setMailboxId(MailboxId id) {
+        this.id = id;
+    }
 
     /**
      * Gets the current ACL for this mailbox.
      *
      * @return ACL
      */
-    MailboxACL getACL();
-    
+    public MailboxACL getACL() {
+        return acl;
+    }
+
     /**
      * Sets the current ACL for this mailbox.
      *
      * @param acl
      */
-    void setACL(MailboxACL acl);
+    public void setACL(MailboxACL acl) {
+        this.acl = acl;
+    }
+
+    public boolean isChildOf(Mailbox potentialParent, MailboxSession 
mailboxSession) {
+        return MailboxUtil.isMailboxChildOf(this, potentialParent, 
mailboxSession);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Mailbox) {
+            Mailbox o = (Mailbox)obj;
+            return Objects.equal(id, o.getMailboxId());
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(namespace, user, name);
+    }
 
-    boolean isChildOf(Mailbox potentialParent, MailboxSession mailboxSession);
-    
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("namespace", namespace)
+            .add("user", user)
+            .add("name", name)
+            .toString();
+    }
 }
\ No newline at end of file
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertTests.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertTests.java
index b4e7b18..f006308 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertTests.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertTests.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.model;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.junit.Test;
 
 public class MailboxAssertTests {
@@ -29,8 +28,8 @@ public class MailboxAssertTests {
 
     @Test
     public void isEqualToShouldNotFailWithEqualMailbox() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
+        Mailbox mailbox1 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -38,8 +37,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualNamespace() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(new 
MailboxPath("other_namespace", "user", "name"), UID_VALIDITY);
+        Mailbox mailbox1 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(new MailboxPath("other_namespace", 
"user", "name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -47,8 +46,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualUser() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(new 
MailboxPath("namespace", "other_user", "name"), UID_VALIDITY);
+        Mailbox mailbox1 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(new MailboxPath("namespace", 
"other_user", "name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -56,8 +55,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualName() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(new 
MailboxPath("namespace", "user", "other_name"), UID_VALIDITY);
+        Mailbox mailbox1 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(new MailboxPath("namespace", "user", 
"other_name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -65,8 +64,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualId() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
+        Mailbox mailbox1 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(TestId.of(MAILBOX_ID.id + 1));
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -74,8 +73,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualUidValidity() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser("user", 
"name"), UID_VALIDITY + 1);
+        Mailbox mailbox1 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY + 1);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
diff --git 
a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
 
b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
index b7bff63..104d54a 100644
--- 
a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
+++ 
b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
@@ -31,7 +31,6 @@ import javax.mail.util.SharedByteArrayInputStream;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
@@ -81,10 +80,10 @@ public interface MailboxMessageFixture {
     String MAILBOX_1_NAME = "mailbox1";
     String MAILBOX_2_NAME = "mailbox2";
     String MAILBOX_OTHER_USER_NAME = "mailbox_other";
-    Mailbox MAILBOX_1 = new SimpleMailbox(MailboxPath.forUser("user", 
MAILBOX_1_NAME), 42, MAILBOX_ID_1);
-    Mailbox MAILBOX_1_OTHER_USER = new 
SimpleMailbox(MailboxPath.forUser("otherUser", MAILBOX_OTHER_USER_NAME), 42, 
MAILBOX_ID_11);
-    Mailbox MAILBOX_1_SUB_1 = new SimpleMailbox(MailboxPath.forUser("user", 
MAILBOX_1_NAME + MAILBOX_SESSION.getPathDelimiter() + "sub1"), 420, 
TestId.of(11L));
-    Mailbox MAILBOX_2 = new SimpleMailbox(MailboxPath.forUser("user", 
MAILBOX_2_NAME), 43, MAILBOX_ID_2);
+    Mailbox MAILBOX_1 = new Mailbox(MailboxPath.forUser("user", 
MAILBOX_1_NAME), 42, MAILBOX_ID_1);
+    Mailbox MAILBOX_1_OTHER_USER = new 
Mailbox(MailboxPath.forUser("otherUser", MAILBOX_OTHER_USER_NAME), 42, 
MAILBOX_ID_11);
+    Mailbox MAILBOX_1_SUB_1 = new Mailbox(MailboxPath.forUser("user", 
MAILBOX_1_NAME + MAILBOX_SESSION.getPathDelimiter() + "sub1"), 420, 
TestId.of(11L));
+    Mailbox MAILBOX_2 = new Mailbox(MailboxPath.forUser("user", 
MAILBOX_2_NAME), 43, MAILBOX_ID_2);
 
     List<MailboxAnnotation> NO_ANNOTATION = ImmutableList.of();
 
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index d6dec5b..4ce2fbb 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -26,7 +26,6 @@ import javax.inject.Inject;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxACL;
@@ -95,7 +94,7 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
     
     @Override
     protected Mailbox doCreateMailbox(MailboxPath mailboxPath, MailboxSession 
session) {
-        SimpleMailbox cassandraMailbox = new SimpleMailbox(mailboxPath, 
randomUidValidity());
+        Mailbox cassandraMailbox = new Mailbox(mailboxPath, 
randomUidValidity());
         cassandraMailbox.setACL(MailboxACL.EMPTY);
         return cassandraMailbox;
     }
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
index 55ca59c..daa9a9e 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
@@ -37,7 +37,6 @@ import javax.inject.Inject;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.utils.MailboxBaseTupleUtil;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
@@ -49,6 +48,7 @@ import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
 import com.google.common.annotations.VisibleForTesting;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
@@ -131,20 +131,20 @@ public class CassandraMailboxDAO {
             .setUUID(ID, mailboxId.asUuid()));
     }
 
-    public Mono<SimpleMailbox> retrieveMailbox(CassandraId mailboxId) {
+    public Mono<Mailbox> retrieveMailbox(CassandraId mailboxId) {
         return executor.executeSingleRow(readStatement.bind()
             .setUUID(ID, mailboxId.asUuid()))
             .map(this::mailboxFromRow)
             .map(mailbox -> addMailboxId(mailboxId, mailbox));
     }
 
-    private SimpleMailbox addMailboxId(CassandraId cassandraId, SimpleMailbox 
mailbox) {
+    private Mailbox addMailboxId(CassandraId cassandraId, Mailbox mailbox) {
         mailbox.setMailboxId(cassandraId);
         return mailbox;
     }
 
-    private SimpleMailbox mailboxFromRow(Row row) {
-        return new SimpleMailbox(
+    private Mailbox mailboxFromRow(Row row) {
+        return new Mailbox(
             new MailboxPath(
                 
row.getUDTValue(MAILBOX_BASE).getString(CassandraMailboxTable.MailboxBase.NAMESPACE),
                 
row.getUDTValue(MAILBOX_BASE).getString(CassandraMailboxTable.MailboxBase.USER),
@@ -152,14 +152,14 @@ public class CassandraMailboxDAO {
             row.getLong(UIDVALIDITY));
     }
 
-    public Flux<SimpleMailbox> retrieveAllMailboxes() {
+    public Flux<Mailbox> retrieveAllMailboxes() {
         return executor.execute(listStatement.bind())
             .flatMapMany(cassandraUtils::convertToFlux)
             .map(this::toMailboxWithId);
     }
 
-    private SimpleMailbox toMailboxWithId(Row row) {
-        SimpleMailbox mailbox = mailboxFromRow(row);
+    private Mailbox toMailboxWithId(Row row) {
+        Mailbox mailbox = mailboxFromRow(row);
         mailbox.setMailboxId(CassandraId.of(row.getUUID(ID)));
         return mailbox;
     }
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 8821560..919a9c2 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -29,7 +29,6 @@ import java.util.stream.Collectors;
 import javax.inject.Inject;
 
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -46,8 +45,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
@@ -91,21 +90,21 @@ public class CassandraMailboxMapper implements 
MailboxMapper {
             .orElseThrow(() -> new MailboxNotFoundException(path));
     }
 
-    private Mono<SimpleMailbox> fromPreviousTable(MailboxPath path) {
+    private Mono<Mailbox> fromPreviousTable(MailboxPath path) {
         return mailboxPathDAO.retrieveId(path)
             .map(CassandraIdAndPath::getCassandraId)
             .flatMap(this::retrieveMailbox)
             .flatMap(this::migrate);
     }
 
-    private Mono<SimpleMailbox> migrate(SimpleMailbox mailbox) {
+    private Mono<Mailbox> migrate(Mailbox mailbox) {
         CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
         return mailboxPathV2DAO.save(mailbox.generateAssociatedPath(), 
mailboxId)
             .flatMap(success -> deleteIfSuccess(mailbox, success))
             .thenReturn(mailbox);
     }
 
-    private Mono<Void> deleteIfSuccess(SimpleMailbox mailbox, boolean success) 
{
+    private Mono<Void> deleteIfSuccess(Mailbox mailbox, boolean success) {
         if (success) {
             return mailboxPathDAO.delete(mailbox.generateAssociatedPath());
         }
@@ -122,22 +121,22 @@ public class CassandraMailboxMapper implements 
MailboxMapper {
             .orElseThrow(() -> new MailboxNotFoundException(id));
     }
 
-    private Mono<SimpleMailbox> retrieveMailbox(CassandraId mailboxId) {
+    private Mono<Mailbox> retrieveMailbox(CassandraId mailboxId) {
         Mono<MailboxACL> acl = cassandraACLMapper.getACL(mailboxId);
-        Mono<SimpleMailbox> simpleMailbox = 
mailboxDAO.retrieveMailbox(mailboxId);
+        Mono<Mailbox> simpleMailbox = mailboxDAO.retrieveMailbox(mailboxId);
 
         return acl.zipWith(simpleMailbox, this::addAcl);
     }
 
-    private SimpleMailbox addAcl(MailboxACL acl, SimpleMailbox mailbox) {
+    private Mailbox addAcl(MailboxACL acl, Mailbox mailbox) {
         mailbox.setACL(acl);
         return mailbox;
     }
 
     @Override
     public List<Mailbox> findMailboxWithPathLike(MailboxPath path) {
-        List<SimpleMailbox> mailboxesV2 = toMailboxes(path, 
mailboxPathV2DAO.listUserMailboxes(path.getNamespace(), path.getUser()));
-        List<SimpleMailbox> mailboxesV1 = toMailboxes(path, 
mailboxPathDAO.listUserMailboxes(path.getNamespace(), path.getUser()));
+        List<Mailbox> mailboxesV2 = toMailboxes(path, 
mailboxPathV2DAO.listUserMailboxes(path.getNamespace(), path.getUser()));
+        List<Mailbox> mailboxesV1 = toMailboxes(path, 
mailboxPathDAO.listUserMailboxes(path.getNamespace(), path.getUser()));
 
         List<Mailbox> mailboxesV1NotInV2 = mailboxesV1.stream()
             .filter(mailboxV1 -> mailboxesV2.stream()
@@ -151,7 +150,7 @@ public class CassandraMailboxMapper implements 
MailboxMapper {
             .build();
     }
 
-    private List<SimpleMailbox> toMailboxes(MailboxPath path, 
Flux<CassandraIdAndPath> listUserMailboxes) {
+    private List<Mailbox> toMailboxes(MailboxPath path, 
Flux<CassandraIdAndPath> listUserMailboxes) {
         Pattern regex = 
Pattern.compile(constructEscapedRegexForMailboxNameMatching(path));
 
         return listUserMailboxes
@@ -161,7 +160,7 @@ public class CassandraMailboxMapper implements 
MailboxMapper {
                 .block();
     }
 
-    private Mono<SimpleMailbox> retrieveMailbox(CassandraIdAndPath idAndPath) {
+    private Mono<Mailbox> retrieveMailbox(CassandraIdAndPath idAndPath) {
         return retrieveMailbox(idAndPath.getCassandraId())
             .switchIfEmpty(ReactorUtils.executeAndEmpty(
                 () -> LOGGER.warn("Could not retrieve mailbox {} with path {} 
in mailbox table.", idAndPath.getCassandraId(), idAndPath.getMailboxPath())));
@@ -169,28 +168,25 @@ public class CassandraMailboxMapper implements 
MailboxMapper {
 
     @Override
     public MailboxId save(Mailbox mailbox) throws MailboxException {
-        Preconditions.checkArgument(mailbox instanceof SimpleMailbox);
-        SimpleMailbox cassandraMailbox = (SimpleMailbox) mailbox;
-
-        CassandraId cassandraId = retrieveId(cassandraMailbox);
-        cassandraMailbox.setMailboxId(cassandraId);
-        if (!trySave(cassandraMailbox, cassandraId)) {
+        CassandraId cassandraId = retrieveId(mailbox);
+        mailbox.setMailboxId(cassandraId);
+        if (!trySave(mailbox, cassandraId)) {
             throw new 
MailboxExistsException(mailbox.generateAssociatedPath().asString());
         }
         return cassandraId;
     }
 
-    private boolean trySave(SimpleMailbox cassandraMailbox, CassandraId 
cassandraId) {
+    private boolean trySave(Mailbox cassandraMailbox, CassandraId cassandraId) 
{
         boolean isCreated = 
mailboxPathV2DAO.save(cassandraMailbox.generateAssociatedPath(), 
cassandraId).block();
         if (isCreated) {
-            Optional<SimpleMailbox> simpleMailbox = 
retrieveMailbox(cassandraId).blockOptional();
+            Optional<Mailbox> simpleMailbox = 
retrieveMailbox(cassandraId).blockOptional();
             simpleMailbox.ifPresent(mbx -> 
mailboxPathV2DAO.delete(mbx.generateAssociatedPath()).block());
             mailboxDAO.save(cassandraMailbox).block();
         }
         return isCreated;
     }
 
-    private CassandraId retrieveId(SimpleMailbox cassandraMailbox) {
+    private CassandraId retrieveId(Mailbox cassandraMailbox) {
         if (cassandraMailbox.getMailboxId() == null) {
             return CassandraId.timeBased();
         } else {
@@ -255,7 +251,7 @@ public class CassandraMailboxMapper implements 
MailboxMapper {
         }
     }
 
-    private Mono<SimpleMailbox> toMailboxWithAcl(SimpleMailbox mailbox) {
+    private Mono<Mailbox> toMailboxWithAcl(Mailbox mailbox) {
         CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
         return cassandraACLMapper.getACL(cassandraId)
             .map(acl -> {
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
index 9d6644c..c801678 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
@@ -30,7 +30,6 @@ import 
org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import 
org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
@@ -88,7 +87,7 @@ public class CassandraIndexTableHandlerTest {
                                                 applicableFlagDAO,
                                                 deletedMessageDAO);
 
-        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"),
+        mailbox = new Mailbox(MailboxPath.forUser("user", "name"),
             UID_VALIDITY,
             MAILBOX_ID);
     }
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
index 12fc870..4bf8586 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
@@ -23,9 +23,9 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import 
org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxCounters;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.jupiter.api.BeforeEach;
@@ -40,13 +40,13 @@ class CassandraMailboxCounterDAOTest {
     static CassandraClusterExtension cassandraCluster = new 
CassandraClusterExtension(CassandraMailboxCounterModule.MODULE);
 
     private CassandraMailboxCounterDAO testee;
-    private SimpleMailbox mailbox;
+    private Mailbox mailbox;
 
     @BeforeEach
     void setUp(CassandraCluster cassandra) {
         testee = new CassandraMailboxCounterDAO(cassandra.getConf());
 
-        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY, MAILBOX_ID);
+        mailbox = new Mailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY, MAILBOX_ID);
     }
 
     @Test
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index c13d651..d06ea1c 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -28,10 +28,10 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import 
org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -53,17 +53,17 @@ class CassandraMailboxDAOTest {
 
 
     private CassandraMailboxDAO testee;
-    private SimpleMailbox mailbox1;
-    private SimpleMailbox mailbox2;
+    private Mailbox mailbox1;
+    private Mailbox mailbox2;
 
     @BeforeEach
     void setUp(CassandraCluster cassandra) {
         testee = new CassandraMailboxDAO(cassandra.getConf(), 
cassandra.getTypesProvider());
 
-        mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", "abcd"),
+        mailbox1 = new Mailbox(MailboxPath.forUser("user", "abcd"),
             UID_VALIDITY_1,
             CASSANDRA_ID_1);
-        mailbox2 = new SimpleMailbox(MailboxPath.forUser("user", "defg"),
+        mailbox2 = new Mailbox(MailboxPath.forUser("user", "defg"),
             UID_VALIDITY_2,
             CASSANDRA_ID_2);
     }
@@ -78,7 +78,7 @@ class CassandraMailboxDAOTest {
     void saveShouldAddAMailbox() {
         testee.save(mailbox1).block();
 
-        Optional<SimpleMailbox> readMailbox = 
testee.retrieveMailbox(CASSANDRA_ID_1)
+        Optional<Mailbox> readMailbox = testee.retrieveMailbox(CASSANDRA_ID_1)
             .blockOptional();
         assertThat(readMailbox.isPresent()).isTrue();
         assertThat(readMailbox.get()).isEqualToComparingFieldByField(mailbox1);
@@ -92,7 +92,7 @@ class CassandraMailboxDAOTest {
         testee.save(mailbox2).block();
 
 
-        Optional<SimpleMailbox> readMailbox = 
testee.retrieveMailbox(CASSANDRA_ID_1)
+        Optional<Mailbox> readMailbox = testee.retrieveMailbox(CASSANDRA_ID_1)
             .blockOptional();
         assertThat(readMailbox.isPresent()).isTrue();
         assertThat(readMailbox.get()).isEqualToComparingFieldByField(mailbox2);
@@ -100,7 +100,7 @@ class CassandraMailboxDAOTest {
 
     @Test
     void retrieveAllMailboxesShouldBeEmptyByDefault() {
-        List<SimpleMailbox> mailboxes = testee.retrieveAllMailboxes()
+        List<Mailbox> mailboxes = testee.retrieveAllMailboxes()
             .collectList()
             .block();
 
@@ -111,7 +111,7 @@ class CassandraMailboxDAOTest {
     void retrieveAllMailboxesShouldReturnSingleMailbox() {
         testee.save(mailbox1).block();
 
-        List<SimpleMailbox> mailboxes = testee.retrieveAllMailboxes()
+        List<Mailbox> mailboxes = testee.retrieveAllMailboxes()
             .collectList()
             .block();
 
@@ -123,7 +123,7 @@ class CassandraMailboxDAOTest {
         testee.save(mailbox1).block();
         testee.save(mailbox2).block();
 
-        List<SimpleMailbox> mailboxes = testee.retrieveAllMailboxes()
+        List<Mailbox> mailboxes = testee.retrieveAllMailboxes()
             .collectList()
             .block();
 
@@ -159,7 +159,7 @@ class CassandraMailboxDAOTest {
         mailbox1.setNamespace(NEW_MAILBOX_PATH.getNamespace());
         mailbox1.setUser(NEW_MAILBOX_PATH.getUser());
         mailbox1.setName(NEW_MAILBOX_PATH.getName());
-        Optional<SimpleMailbox> readMailbox = 
testee.retrieveMailbox(CASSANDRA_ID_1).blockOptional();
+        Optional<Mailbox> readMailbox = 
testee.retrieveMailbox(CASSANDRA_ID_1).blockOptional();
         assertThat(readMailbox.isPresent()).isTrue();
         assertThat(readMailbox.get()).isEqualToComparingFieldByField(mailbox1);
     }
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 584f87a..71a0919 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -28,7 +28,6 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import 
org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -64,7 +63,7 @@ class CassandraMailboxMapperConcurrencyTest {
     @Test
     void saveShouldBeThreadSafe() throws Exception {
         ConcurrentTestRunner.builder()
-            .operation((a, b) -> testee.save(new SimpleMailbox(MAILBOX_PATH, 
UID_VALIDITY)))
+            .operation((a, b) -> testee.save(new Mailbox(MAILBOX_PATH, 
UID_VALIDITY)))
             .threadCount(THREAD_COUNT)
             .operationCount(OPERATION_COUNT)
             .runAcceptingErrorsWithin(Duration.ofMinutes(1));
@@ -74,7 +73,7 @@ class CassandraMailboxMapperConcurrencyTest {
 
     @Test
     void saveWithUpdateShouldBeThreadSafe() throws Exception {
-        SimpleMailbox mailbox = new SimpleMailbox(MAILBOX_PATH, UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MAILBOX_PATH, UID_VALIDITY);
         testee.save(mailbox);
 
         mailbox.setName("newName");
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index c1e14bc..a2a3ff8 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -31,7 +31,6 @@ import 
org.apache.james.backends.cassandra.components.CassandraModule;
 import 
org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import 
org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -54,12 +53,12 @@ public class CassandraMailboxMapperTest {
     private static final String USER = "user";
     private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
     private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser(USER, 
"name");
-    private static final Mailbox MAILBOX = new SimpleMailbox(MAILBOX_PATH, 
UID_VALIDITY, MAILBOX_ID);
+    private static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, 
UID_VALIDITY, MAILBOX_ID);
 
     private static final CassandraId MAILBOX_ID_2 = CassandraId.timeBased();
 
 
-    private static final Mailbox MAILBOX_BIS = new SimpleMailbox(MAILBOX_PATH, 
UID_VALIDITY, MAILBOX_ID_2);
+    private static final Mailbox MAILBOX_BIS = new Mailbox(MAILBOX_PATH, 
UID_VALIDITY, MAILBOX_ID_2);
     private static final String WILDCARD = "%";
 
     @ClassRule public static DockerCassandraRule cassandraServer = new 
DockerCassandraRule();
@@ -109,10 +108,10 @@ public class CassandraMailboxMapperTest {
     @Ignore("JAMES-2514 Cassandra 3 supports long mailbox names. Hence we can 
not rely on this for failing")
     @Test
     public void 
saveShouldNotRemoveOldMailboxPathWhenCreatingTheNewMailboxPathFails() throws 
Exception {
-        testee.save(new SimpleMailbox(MAILBOX_PATH, UID_VALIDITY));
+        testee.save(new Mailbox(MAILBOX_PATH, UID_VALIDITY));
         Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH);
 
-        SimpleMailbox newMailbox = new 
SimpleMailbox(tooLongMailboxPath(mailbox.generateAssociatedPath()), 
UID_VALIDITY, mailbox.getMailboxId());
+        Mailbox newMailbox = new 
Mailbox(tooLongMailboxPath(mailbox.generateAssociatedPath()), UID_VALIDITY, 
mailbox.getMailboxId());
         assertThatThrownBy(() ->
             testee.save(newMailbox))
             .isInstanceOf(TooLongMailboxNameException.class);
@@ -285,7 +284,7 @@ public class CassandraMailboxMapperTest {
             .block();
         CassandraId childMailboxId = CassandraId.timeBased();
         MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
-        Mailbox childMailbox = new SimpleMailbox(childMailboxPath, 
UID_VALIDITY, childMailboxId);
+        Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, 
childMailboxId);
         mailboxDAO.save(childMailbox)
             .block();
         mailboxPathDAO.save(childMailboxPath, childMailboxId)
@@ -306,7 +305,7 @@ public class CassandraMailboxMapperTest {
             .block();
         CassandraId childMailboxId = CassandraId.timeBased();
         MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
-        Mailbox childMailbox = new SimpleMailbox(childMailboxPath, 
UID_VALIDITY, childMailboxId);
+        Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, 
childMailboxId);
         mailboxDAO.save(childMailbox)
             .block();
         mailboxPathDAO.save(childMailboxPath, childMailboxId)
@@ -325,7 +324,7 @@ public class CassandraMailboxMapperTest {
             .block();
         CassandraId childMailboxId = CassandraId.timeBased();
         MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
-        Mailbox childMailbox = new SimpleMailbox(childMailboxPath, 
UID_VALIDITY, childMailboxId);
+        Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, 
childMailboxId);
         mailboxDAO.save(childMailbox)
             .block();
         mailboxPathV2DAO.save(childMailboxPath, childMailboxId)
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index 3430d74..825c4be 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -28,9 +28,9 @@ import java.util.stream.LongStream;
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import 
org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.jupiter.api.BeforeEach;
@@ -46,14 +46,14 @@ class CassandraModSeqProviderTest {
     static CassandraClusterExtension cassandraCluster = new 
CassandraClusterExtension(CassandraModSeqModule.MODULE);
     
     private CassandraModSeqProvider modSeqProvider;
-    private SimpleMailbox mailbox;
+    private Mailbox mailbox;
 
 
     @BeforeEach
     void setUp(CassandraCluster cassandra) {
         modSeqProvider = new CassandraModSeqProvider(cassandra.getConf(), 
CassandraConfiguration.DEFAULT_CONFIGURATION);
         MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
-        mailbox = new SimpleMailbox(path, 1234);
+        mailbox = new Mailbox(path, 1234);
         mailbox.setMailboxId(CASSANDRA_ID);
     }
 
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index c1aebb4..7c9f1a7 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -30,9 +30,9 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import 
org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.jupiter.api.BeforeEach;
@@ -48,13 +48,13 @@ class CassandraUidProviderTest {
     static CassandraClusterExtension cassandraCluster = new 
CassandraClusterExtension(CassandraUidModule.MODULE);
 
     private CassandraUidProvider uidProvider;
-    private SimpleMailbox mailbox;
+    private Mailbox mailbox;
 
     @BeforeEach
     void setUp(CassandraCluster cassandra) {
         uidProvider = new CassandraUidProvider(cassandra.getConf(), 
CassandraConfiguration.DEFAULT_CONFIGURATION);
         MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
-        mailbox = new SimpleMailbox(path, 1234);
+        mailbox = new Mailbox(path, 1234);
         mailbox.setMailboxId(CASSANDRA_ID);
     }
 
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index a12b37e..ec78b4f 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -27,7 +27,6 @@ import 
org.apache.james.backends.cassandra.components.CassandraModule;
 import 
org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import 
org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraIdAndPath;
@@ -38,6 +37,7 @@ import 
org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathV2DAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraUserMailboxRightsDAO;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeAll;
@@ -49,7 +49,7 @@ class MailboxPathV2MigrationTest {
 
     private static final MailboxPath MAILBOX_PATH_1 = 
MailboxPath.forUser("bob", "Important");
     private static final int UID_VALIDITY_1 = 452;
-    private static final SimpleMailbox MAILBOX_1 = new 
SimpleMailbox(MAILBOX_PATH_1, UID_VALIDITY_1);
+    private static final Mailbox MAILBOX_1 = new Mailbox(MAILBOX_PATH_1, 
UID_VALIDITY_1);
     private static final CassandraId MAILBOX_ID_1 = CassandraId.timeBased();
 
     public static final CassandraModule MODULES = 
CassandraModule.aggregateModules(
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
index 2b28cba..4c80be4 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
@@ -22,7 +22,6 @@ import java.util.EnumSet;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.jpa.mail.JPAMailboxMapper;
@@ -68,7 +67,7 @@ public abstract class JPAMailboxManager extends 
StoreMailboxManager {
     
     @Override
     protected Mailbox doCreateMailbox(MailboxPath path, MailboxSession 
session) {
-        return new SimpleMailbox(path, randomUidValidity());
+        return new Mailbox(path, randomUidValidity());
     }
 
     @Override
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
index 91df53b..45a3d3f 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
@@ -91,9 +91,7 @@ public class JPAMailboxMapper extends JPATransactionalMapper 
implements MailboxM
             JPAMailbox persistedMailbox = JPAMailbox.from(mailbox);
 
             getEntityManager().persist(persistedMailbox);
-            if (!(mailbox instanceof JPAMailbox)) {
-                mailbox.setMailboxId(persistedMailbox.getMailboxId());
-            }
+            mailbox.setMailboxId(persistedMailbox.getMailboxId());
             return mailbox.getMailboxId();
         } catch (PersistenceException e) {
             throw new MailboxException("Save of mailbox " + mailbox.getName() 
+ " failed", e);
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
index aa46e53..7feb8e6 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
@@ -27,7 +27,6 @@ import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.jpa.JPAId;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
@@ -134,7 +133,7 @@ public class JPAMailbox {
     }
 
     public Mailbox toMailbox() {
-        return new SimpleMailbox(generateAssociatedPath(), uidValidity, new 
JPAId(mailboxId));
+        return new Mailbox(generateAssociatedPath(), uidValidity, new 
JPAId(mailboxId));
     }
 
     public MailboxPath generateAssociatedPath() {
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
index a6a54e4..7494fb8 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
@@ -74,9 +74,9 @@ public class OpenJPAMessageManager extends JPAMessageManager {
     protected MailboxMessage createMessage(Date internalDate, int size, int 
bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder 
propertyBuilder, List<MessageAttachment> attachments) throws MailboxException {
         switch (feature) {
         case Streaming:
-            return new JPAStreamingMailboxMessage((JPAMailbox) 
getMailboxEntity(), internalDate, size, flags, content, bodyStartOctet, 
propertyBuilder);
+            return new 
JPAStreamingMailboxMessage(JPAMailbox.from(getMailboxEntity()), internalDate, 
size, flags, content, bodyStartOctet, propertyBuilder);
         case Encryption:
-            return new JPAEncryptedMailboxMessage((JPAMailbox) 
getMailboxEntity(), internalDate, size, flags, content, bodyStartOctet, 
propertyBuilder);
+            return new 
JPAEncryptedMailboxMessage(JPAMailbox.from(getMailboxEntity()), internalDate, 
size, flags, content, bodyStartOctet, propertyBuilder);
         default:
             return super.createMessage(internalDate, size, bodyStartOctet, 
content, flags,  propertyBuilder, attachments);
         }
diff --git 
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
 
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
index 6b811ef..cf57832 100644
--- 
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
+++ 
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
@@ -35,7 +35,7 @@ import javax.mail.Flags.Flag;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.SearchQuery;
@@ -59,9 +59,9 @@ public class LuceneMailboxMessageSearchIndexTest {
     public static final long LIMIT = 100L;
     private LuceneMessageSearchIndex index;
     
-    private SimpleMailbox mailbox = new 
SimpleMailbox(MailboxPath.forUser("bob", "box"), 18, TestId.of(0));
-    private SimpleMailbox mailbox2 = new 
SimpleMailbox(MailboxPath.forUser("bob", "box"), 19, TestId.of(1));
-    private SimpleMailbox mailbox3 = new 
SimpleMailbox(MailboxPath.forUser("bob", "box"), 12, TestId.of(2));
+    private Mailbox mailbox = new Mailbox(MailboxPath.forUser("bob", "box"), 
18, TestId.of(0));
+    private Mailbox mailbox2 = new Mailbox(MailboxPath.forUser("bob", "box"), 
19, TestId.of(1));
+    private Mailbox mailbox3 = new Mailbox(MailboxPath.forUser("bob", "box"), 
12, TestId.of(2));
     private MailboxSession session;
 
     private static final String FROM_ADDRESS = "Harry <[email protected]>";
diff --git 
a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
 
b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
index 1951220..a9a28b1 100644
--- 
a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
+++ 
b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
@@ -27,7 +27,6 @@ import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.Mailbox;
@@ -131,7 +130,7 @@ public class MaildirStore implements UidProvider, 
ModSeqProvider {
         MaildirFolder folder = new 
MaildirFolder(mailboxFile.getAbsolutePath(), mailboxPath, locker);
         folder.setMessageNameStrictParse(isMessageNameStrictParse());
         try {
-            Mailbox loadedMailbox = new SimpleMailbox(mailboxPath, 
folder.getUidValidity());
+            Mailbox loadedMailbox = new Mailbox(mailboxPath, 
folder.getUidValidity());
             loadedMailbox.setMailboxId(folder.readMailboxId());
             loadedMailbox.setACL(folder.getACL(session));
             return loadedMailbox;
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index ffeed7a..9014dfc 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -24,7 +24,6 @@ import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
@@ -66,7 +65,7 @@ public class InMemoryMailboxMapper implements MailboxMapper {
         if (result == null) {
             throw new MailboxNotFoundException(path);
         } else {
-            return new SimpleMailbox(result);
+            return new Mailbox(result);
         }
     }
 
@@ -75,7 +74,7 @@ public class InMemoryMailboxMapper implements MailboxMapper {
         InMemoryId mailboxId = (InMemoryId)id;
         for (Mailbox mailbox: mailboxesByPath.values()) {
             if (mailbox.getMailboxId().equals(mailboxId)) {
-                return new SimpleMailbox(mailbox);
+                return new Mailbox(mailbox);
             }
         }
         throw new MailboxNotFoundException(mailboxId);
@@ -87,7 +86,7 @@ public class InMemoryMailboxMapper implements MailboxMapper {
         return mailboxesByPath.values()
             .stream()
             .filter(mailbox -> mailboxMatchesRegex(mailbox, path, regex))
-            .map(SimpleMailbox::new)
+            .map(Mailbox::new)
             .collect(Guavate.toImmutableList());
     }
 
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
index fde4194..9001e4d 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
@@ -22,7 +22,6 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -47,7 +46,7 @@ public class InMemoryCombinationManagerTestSystem extends 
CombinationManagerTest
     public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession 
session) throws MailboxException {
         inMemoryMailboxManager.createMailbox(mailboxPath, session);
         MessageManager messageManager = 
inMemoryMailboxManager.getMailbox(mailboxPath, session);
-        return new SimpleMailbox(mailboxPath, UID_VALIDITY, 
messageManager.getId());
+        return new Mailbox(mailboxPath, UID_VALIDITY, messageManager.getId());
     }
 
 }
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
index 65a79f3..80a704f 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
@@ -23,7 +23,6 @@ import java.util.Optional;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
@@ -48,7 +47,7 @@ public class InMemoryMessageManagerTestSystem extends 
MessageManagerTestSystem {
     public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession 
mailboxSession) throws MailboxException {
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
         MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, 
mailboxSession);
-        return new SimpleMailbox(mailboxPath, UID_VALIDITY, 
messageManager.getId());
+        return new Mailbox(mailboxPath, UID_VALIDITY, messageManager.getId());
     }
 
     @Override
diff --git 
a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
 
b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
index 76aacf0..36922be 100644
--- 
a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
+++ 
b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
@@ -35,7 +35,6 @@ import javax.mail.util.SharedByteArrayInputStream;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.events.MailboxListener;
 import org.apache.james.mailbox.events.MessageMoveEvent;
@@ -65,15 +64,15 @@ public class SpamAssassinListenerTest {
 
     private SpamAssassin spamAssassin;
     private SpamAssassinListener listener;
-    private SimpleMailbox inbox;
-    private SimpleMailbox mailbox1;
+    private Mailbox inbox;
+    private Mailbox mailbox1;
     private MailboxId mailboxId1;
     private MailboxId mailboxId2;
     private MailboxId spamMailboxId;
     private MailboxId spamCapitalMailboxId;
     private MailboxId trashMailboxId;
     private MailboxSessionMapperFactory mapperFactory;
-    private SimpleMailbox mailbox2;
+    private Mailbox mailbox2;
 
     @Before
     public void setup() throws Exception {
@@ -85,15 +84,15 @@ public class SpamAssassinListenerTest {
         spamAssassin = mock(SpamAssassin.class);
         mapperFactory = mailboxManager.getMapperFactory();
         MailboxMapper mailboxMapper = 
mapperFactory.createMailboxMapper(MAILBOX_SESSION);
-        inbox = new SimpleMailbox(MailboxPath.forUser(USER, 
DefaultMailboxes.INBOX), UID_VALIDITY);
-        mailbox1 = new SimpleMailbox(MailboxPath.forUser(USER, "mailbox1"), 
UID_VALIDITY);
-        mailbox2 = new SimpleMailbox(MailboxPath.forUser(USER, "mailbox2"), 
UID_VALIDITY);
+        inbox = new Mailbox(MailboxPath.forUser(USER, DefaultMailboxes.INBOX), 
UID_VALIDITY);
+        mailbox1 = new Mailbox(MailboxPath.forUser(USER, "mailbox1"), 
UID_VALIDITY);
+        mailbox2 = new Mailbox(MailboxPath.forUser(USER, "mailbox2"), 
UID_VALIDITY);
         mailboxMapper.save(inbox);
         mailboxId1 = mailboxMapper.save(mailbox1);
         mailboxId2 = mailboxMapper.save(mailbox2);
-        spamMailboxId = mailboxMapper.save(new 
SimpleMailbox(MailboxPath.forUser(USER, "Spam"), UID_VALIDITY));
-        spamCapitalMailboxId = mailboxMapper.save(new 
SimpleMailbox(MailboxPath.forUser(USER, "SPAM"), UID_VALIDITY));
-        trashMailboxId = mailboxMapper.save(new 
SimpleMailbox(MailboxPath.forUser(USER, "Trash"), UID_VALIDITY));
+        spamMailboxId = mailboxMapper.save(new 
Mailbox(MailboxPath.forUser(USER, "Spam"), UID_VALIDITY));
+        spamCapitalMailboxId = mailboxMapper.save(new 
Mailbox(MailboxPath.forUser(USER, "SPAM"), UID_VALIDITY));
+        trashMailboxId = mailboxMapper.save(new 
Mailbox(MailboxPath.forUser(USER, "Trash"), UID_VALIDITY));
 
         listener = new SpamAssassinListener(spamAssassin, 
systemMailboxesProvider, mailboxManager, mapperFactory, 
MailboxListener.ExecutionMode.SYNCHRONOUS);
     }
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 9cbe77d..726da72 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -40,7 +40,6 @@ import 
org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MetadataWithMailboxId;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.StandardMailboxMetaDataComparator;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
@@ -266,7 +265,7 @@ public class StoreMailboxManager implements MailboxManager {
     }
 
     /**
-     * Create a Mailbox for the given mailbox path. This will by default 
return a {@link SimpleMailbox}.
+     * Create a Mailbox for the given mailbox path. This will by default 
return a {@link Mailbox}.
      * <p/>
      * If you need to return something more special just override this method
      *
@@ -275,7 +274,7 @@ public class StoreMailboxManager implements MailboxManager {
      * @throws MailboxException
      */
     protected Mailbox doCreateMailbox(MailboxPath mailboxPath, MailboxSession 
session) throws MailboxException {
-        return new SimpleMailbox(mailboxPath, randomUidValidity());
+        return new Mailbox(mailboxPath, randomUidValidity());
     }
 
     @Override
@@ -410,7 +409,7 @@ public class StoreMailboxManager implements MailboxManager {
 
             // We need to create a copy of the mailbox as maybe we can not 
refer to the real
             // mailbox once we remove it
-            SimpleMailbox m = new SimpleMailbox(mailbox);
+            Mailbox m = new Mailbox(mailbox);
             mailboxMapper.delete(mailbox);
             eventBus.dispatch(EventFactory.mailboxDeleted()
                 .randomEventId()
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
index f172efd..7479b95 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
@@ -32,7 +32,6 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
@@ -89,7 +88,7 @@ public class StoreRightManagerTest {
 
     @Test
     public void hasRightShouldReturnTrueWhenTheUserOwnTheMailbox() throws 
MailboxException {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(ALICE, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(ALICE, 
MailboxConstants.INBOX), UID_VALIDITY);
 
         assertThat(storeRightManager.hasRight(mailbox, Right.Write, 
aliceSession))
             .isTrue();
@@ -97,7 +96,7 @@ public class StoreRightManagerTest {
 
     @Test
     public void 
hasRightShouldReturnTrueWhenTheUserDoesNotOwnTheMailboxButHaveTheCorrectRightOnIt()
 throws MailboxException {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.Write)));
 
         assertThat(storeRightManager.hasRight(mailbox, Right.Write, 
aliceSession))
@@ -106,7 +105,7 @@ public class StoreRightManagerTest {
 
     @Test
     public void 
hasRightShouldReturnTrueWhenTheUserDoesNotOwnTheMailboxButHasAtLeastTheCorrectRightOnIt()
 throws MailboxException {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.Write, Right.Lookup)));
 
         assertThat(storeRightManager.hasRight(mailbox, Right.Write, 
aliceSession))
@@ -115,7 +114,7 @@ public class StoreRightManagerTest {
 
     @Test
     public void 
hasRightShouldReturnFalseWhenTheUserDoesNotOwnTheMailboxAndHasNoRightOnIt() 
throws MailboxException {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
 
         assertThat(storeRightManager.hasRight(mailbox, Right.Write, 
aliceSession))
             .isFalse();
@@ -124,7 +123,7 @@ public class StoreRightManagerTest {
     @Test
     public void isReadWriteShouldReturnTrueWhenUserHasInsertRightOnMailbox() 
throws Exception {
         Flags flags = new Flags();
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.Insert)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -134,7 +133,7 @@ public class StoreRightManagerTest {
     @Test
     public void 
isReadWriteShouldReturnTrueWhenUserHasPerformExpungeRightOnMailbox() throws 
Exception {
         Flags flags = new Flags();
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.PerformExpunge)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -144,7 +143,7 @@ public class StoreRightManagerTest {
     @Test
     public void 
isReadWriteShouldReturnTrueWhenUserHasDeleteMessagesRightOnMailboxAndFlagsContainDeletedFlag()
 throws Exception {
         Flags flags = new Flags(Flags.Flag.DELETED);
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.DeleteMessages)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -154,7 +153,7 @@ public class StoreRightManagerTest {
     @Test
     public void 
isReadWriteShouldReturnFalseWhenUserHasDeleteMessagesRightOnMailboxButFlagsDoesNotContainDeletedFlag()
 throws Exception {
         Flags flags = new Flags();
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.DeleteMessages)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -164,7 +163,7 @@ public class StoreRightManagerTest {
     @Test
     public void 
isReadWriteShouldReturnTrueWhenUserHasWriteSeenFlagRightOnMailboxAndFlagsContainSeenFlag()
 throws Exception {
         Flags flags = new Flags(Flags.Flag.SEEN);
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.WriteSeenFlag)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -174,7 +173,7 @@ public class StoreRightManagerTest {
     @Test
     public void 
isReadWriteShouldReturnFalseWhenUserHasWriteSeenFlagRightOnMailboxAndFlagsDoesNotContainSeenFlag()
 throws Exception {
         Flags flags = new Flags();
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.WriteSeenFlag)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -184,7 +183,7 @@ public class StoreRightManagerTest {
     @Test
     public void 
isReadWriteShouldReturnTrueWhenUserHasWriteRightOnMailboxAndFlagsContainAnsweredFlag()
 throws Exception {
         Flags flags = new Flags(Flags.Flag.ANSWERED);
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.Write)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, flags))
@@ -193,7 +192,7 @@ public class StoreRightManagerTest {
 
     @Test
     public void 
isReadWriteShouldReturnFalseWhenUserDoesNotHaveInsertOrPerformExpungeRightOnMailboxAndNullFlag()
 throws Exception {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, 
MailboxConstants.INBOX), UID_VALIDITY);
         mailbox.setACL(new MailboxACL(new 
MailboxACL.Entry(MailboxFixture.ALICE, Right.Administer)));
 
         assertThat(storeRightManager.isReadWrite(aliceSession, mailbox, new 
Flags()))
@@ -206,7 +205,7 @@ public class StoreRightManagerTest {
             .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
             .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
         MailboxACL actual = StoreRightManager.filteredForSession(
-            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, aliceSession);
+            new Mailbox(INBOX_ALICE, UID_VALIDITY), acl, aliceSession);
         assertThat(actual).isEqualTo(acl);
     }
 
@@ -216,7 +215,7 @@ public class StoreRightManagerTest {
             .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
             .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
         MailboxACL actual = StoreRightManager.filteredForSession(
-            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, 
MailboxSessionUtil.create(CEDRIC));
+            new Mailbox(INBOX_ALICE, UID_VALIDITY), acl, 
MailboxSessionUtil.create(CEDRIC));
         assertThat(actual).isEqualTo(acl);
     }
 
@@ -226,7 +225,7 @@ public class StoreRightManagerTest {
             .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
             .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
         MailboxACL actual = StoreRightManager.filteredForSession(
-            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, 
MailboxSessionUtil.create(BOB));
+            new Mailbox(INBOX_ALICE, UID_VALIDITY), acl, 
MailboxSessionUtil.create(BOB));
         
assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUserEntryKey(BOB));
     }
 
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
index f275673..49082aa 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
@@ -24,7 +24,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.List;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.Before;
@@ -38,8 +37,8 @@ public class ListMailboxAssertTest {
     private static final String USER = "user";
     private static final String NAMESPACE = "namespace";
     private static final long UID_VALIDITY = 42;
-    private static final Mailbox mailbox1 = new SimpleMailbox(new 
MailboxPath(NAMESPACE, USER, NAME), UID_VALIDITY);
-    private static final Mailbox mailbox2 = new SimpleMailbox(new 
MailboxPath(OTHER_NAMESPACE, USER, NAME), UID_VALIDITY);
+    private static final Mailbox mailbox1 = new Mailbox(new 
MailboxPath(NAMESPACE, USER, NAME), UID_VALIDITY);
+    private static final Mailbox mailbox2 = new Mailbox(new 
MailboxPath(OTHER_NAMESPACE, USER, NAME), UID_VALIDITY);
 
     private ListMailboxAssert listMaiboxAssert;
     private List<Mailbox> actualMailbox;
@@ -57,7 +56,7 @@ public class ListMailboxAssertTest {
 
     @Test
     public void assertListMailboxShouldWork() {
-        assertMailboxes(actualMailbox).containOnly(new SimpleMailbox(new 
MailboxPath(NAMESPACE, USER, NAME), UID_VALIDITY),
-            new SimpleMailbox(new MailboxPath(OTHER_NAMESPACE, USER, NAME), 
UID_VALIDITY));
+        assertMailboxes(actualMailbox).containOnly(new Mailbox(new 
MailboxPath(NAMESPACE, USER, NAME), UID_VALIDITY),
+            new Mailbox(new MailboxPath(OTHER_NAMESPACE, USER, NAME), 
UID_VALIDITY));
     }
 }
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
index d39e58d..ad84d6a 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
@@ -30,7 +30,6 @@ import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.apache.james.mailbox.model.Mailbox;
@@ -231,8 +230,8 @@ public class ListMessageAssertTest {
         };
     }
 
-    private SimpleMailbox createMailbox(MailboxPath mailboxPath) {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+    private Mailbox createMailbox(MailboxPath mailboxPath) {
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         mailbox.setMailboxId(MAILBOX_ID);
 
         return mailbox;
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index 2548105..4989cf1 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.store.mail.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
@@ -235,8 +234,8 @@ public abstract class MailboxMapperACLTest {
             .containsEntry(key, rights);
     }
 
-    private SimpleMailbox createMailbox(MailboxPath mailboxPath) {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+    private Mailbox createMailbox(MailboxPath mailboxPath) {
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         mailbox.setMailboxId(generateId());
         return mailbox;
     }
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index 905f439..afca3fd 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -25,7 +25,6 @@ import static 
org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.util.List;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -104,7 +103,7 @@ public abstract class MailboxMapperTest {
     public void saveShouldThrowWhenMailboxAlreadyExist() throws 
MailboxException {
         mailboxMapper.save(benwaInboxMailbox);
 
-        SimpleMailbox mailbox = new SimpleMailbox(benwaInboxMailbox);
+        Mailbox mailbox = new Mailbox(benwaInboxMailbox);
         mailbox.setMailboxId(null);
 
         assertThatThrownBy(() -> mailboxMapper.save(mailbox))
@@ -297,8 +296,8 @@ public abstract class MailboxMapperTest {
         mailboxMapper.save(bobInboxMailbox);
     }
 
-    private SimpleMailbox createMailbox(MailboxPath mailboxPath) {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+    private Mailbox createMailbox(MailboxPath mailboxPath) {
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         mailbox.setMailboxId(generateId());
         return mailbox;
     }
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 9fe5c6f..1144443 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -33,7 +33,6 @@ import javax.mail.util.SharedByteArrayInputStream;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.Mailbox;
@@ -71,8 +70,8 @@ public abstract class MessageIdMapperTest {
     private MailboxMapper mailboxMapper;
     private MessageIdMapper sut;
 
-    protected SimpleMailbox benwaInboxMailbox;
-    protected SimpleMailbox benwaWorkMailbox;
+    protected Mailbox benwaInboxMailbox;
+    protected Mailbox benwaWorkMailbox;
     
     protected SimpleMailboxMessage message1;
     protected SimpleMailboxMessage message2;
@@ -164,7 +163,7 @@ public abstract class MessageIdMapperTest {
 
     @Test
     public void saveShouldThrowWhenMailboxDoesntExist() throws Exception {
-        SimpleMailbox notPersistedMailbox = new 
SimpleMailbox(MailboxPath.forUser("benwa", "mybox"), UID_VALIDITY);
+        Mailbox notPersistedMailbox = new Mailbox(MailboxPath.forUser("benwa", 
"mybox"), UID_VALIDITY);
         notPersistedMailbox.setMailboxId(mapperProvider.generateId());
         SimpleMailboxMessage message = createMessage(notPersistedMailbox, 
"Subject: Test \n\nBody\n.\n", BODY_START, new PropertyBuilder());
         message.setUid(mapperProvider.generateMessageUid());
@@ -209,7 +208,7 @@ public abstract class MessageIdMapperTest {
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
         sut.save(message1);
 
-        SimpleMailbox notPersistedMailbox = new 
SimpleMailbox(MailboxPath.forUser("benwa", "mybox"), UID_VALIDITY);
+        Mailbox notPersistedMailbox = new Mailbox(MailboxPath.forUser("benwa", 
"mybox"), UID_VALIDITY);
         notPersistedMailbox.setMailboxId(mapperProvider.generateId());
 
         SimpleMailboxMessage message1InOtherMailbox = 
SimpleMailboxMessage.copy(notPersistedMailbox.getMailboxId(), message1);
@@ -959,8 +958,8 @@ public abstract class MessageIdMapperTest {
                 .build());
     }
 
-    private SimpleMailbox createMailbox(MailboxPath mailboxPath) throws 
MailboxException {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+    private Mailbox createMailbox(MailboxPath mailboxPath) throws 
MailboxException {
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         mailbox.setMailboxId(mapperProvider.generateId());
         mailboxMapper.save(mailbox);
         return mailbox;
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 4d06ddc..78bc895 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -39,7 +39,6 @@ import javax.mail.util.SharedByteArrayInputStream;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -77,8 +76,8 @@ public abstract class MessageMapperTest {
     private MessageMapper messageMapper;
     private MailboxMapper mailboxMapper;
 
-    private SimpleMailbox benwaInboxMailbox;
-    private SimpleMailbox benwaWorkMailbox;
+    private Mailbox benwaInboxMailbox;
+    private Mailbox benwaWorkMailbox;
     
     private MailboxMessage message1;
     private MailboxMessage message2;
@@ -1081,7 +1080,7 @@ public abstract class MessageMapperTest {
 
     @Test
     public void 
getApplicableFlagShouldReturnDefaultApplicableFlagsWhenMailboxEmpty() throws 
Exception {
-        SimpleMailbox emptyMailbox = 
createMailbox(MailboxPath.forUser("benwa", "EMPTY"));
+        Mailbox emptyMailbox = createMailbox(MailboxPath.forUser("benwa", 
"EMPTY"));
 
         assertThat(messageMapper.getApplicableFlag(emptyMailbox))
             .isEqualTo(new FlagsBuilder()
@@ -1144,8 +1143,8 @@ public abstract class MessageMapperTest {
         return messageMapper.deleteMessages(benwaInboxMailbox, uids);
     }
 
-    private SimpleMailbox createMailbox(MailboxPath mailboxPath) throws 
MailboxException {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+    private Mailbox createMailbox(MailboxPath mailboxPath) throws 
MailboxException {
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         mailbox.setMailboxId(mapperProvider.generateId());
         
         mailboxMapper.save(mailbox);
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
index 9cc44c4..27c34fd 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
@@ -26,7 +26,6 @@ import java.util.Date;
 import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
@@ -137,7 +136,7 @@ public abstract class MessageMoveTest {
     }
 
     private Mailbox createMailbox(MailboxPath mailboxPath) throws 
MailboxException {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         MailboxId id = mapperProvider.generateId();
         mailbox.setMailboxId(id);
         mailboxMapper.save(mailbox);
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
index 2d9b616..72d7abb 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
@@ -30,7 +30,6 @@ import java.util.List;
 import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
@@ -62,7 +61,7 @@ public abstract class MessageWithAttachmentMapperTest {
     private MessageMapper messageMapper;
     private AttachmentMapper attachmentMapper;
 
-    private SimpleMailbox attachmentsMailbox;
+    private Mailbox attachmentsMailbox;
     
     private SimpleMailboxMessage messageWithoutAttachment;
     private SimpleMailboxMessage messageWith1Attachment;
@@ -186,8 +185,8 @@ public abstract class MessageWithAttachmentMapperTest {
         assertThat(retrievedMessageIterator).isEmpty();
     }
 
-    private SimpleMailbox createMailbox(MailboxPath mailboxPath) {
-        SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY);
+    private Mailbox createMailbox(MailboxPath mailboxPath) {
+        Mailbox mailbox = new Mailbox(mailboxPath, UID_VALIDITY);
         MailboxId id = mapperProvider.generateId();
         mailbox.setMailboxId(id);
         return mailbox;
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
index 8f48b6c..ec9b637 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
@@ -27,8 +27,8 @@ import static org.mockito.Mockito.when;
 import java.util.Optional;
 
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.QuotaRoot;
@@ -44,10 +44,10 @@ import com.google.common.collect.Lists;
 public class DefaultUserQuotaRootResolverTest {
 
     private static final MailboxPath MAILBOX_PATH = 
MailboxPath.forUser("benwa", "INBOX");
-    public static final SimpleMailbox MAILBOX = new 
SimpleMailbox(MAILBOX_PATH, 10);
+    public static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, 10);
     private static final MailboxPath PATH_LIKE = MailboxPath.forUser("benwa", 
"%");
     private static final MailboxPath MAILBOX_PATH_2 = 
MailboxPath.forUser("benwa", "test");
-    private static final SimpleMailbox MAILBOX_2 = new 
SimpleMailbox(MAILBOX_PATH_2, 10);
+    private static final Mailbox MAILBOX_2 = new Mailbox(MAILBOX_PATH_2, 10);
     private static final QuotaRoot QUOTA_ROOT = 
QuotaRoot.quotaRoot("#private&benwa", Optional.empty());
     private static final MailboxId MAILBOX_ID = TestId.of(42);
     public static final MailboxSession MAILBOX_SESSION = null;
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
index 00015b6..86d5cc1 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
@@ -27,9 +27,9 @@ import java.util.Optional;
 
 import org.apache.james.core.quota.QuotaCount;
 import org.apache.james.core.quota.QuotaSize;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.OverQuotaException;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.Quota;
 import org.apache.james.mailbox.model.QuotaRoot;
@@ -42,7 +42,7 @@ public class QuotaCheckerTest {
 
     public static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot("benwa", 
Optional.empty());
     public static final MailboxPath MAILBOX_PATH = 
MailboxPath.forUser("benwa", "INBOX");
-    public static final SimpleMailbox MAILBOX = new 
SimpleMailbox(MAILBOX_PATH, 10);
+    public static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, 10);
 
     private QuotaRootResolver mockedQuotaRootResolver;
     private QuotaManager mockedQuotaManager;
diff --git 
a/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
 
b/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
index a689550..660a288 100644
--- 
a/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
+++ 
b/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
@@ -30,7 +30,7 @@ import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.RetryOneTime;
 import org.apache.curator.test.TestingServer;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.After;
@@ -143,8 +143,8 @@ public class ZooUidProviderTest {
     private CuratorFramework client;
     private ZooUidProvider uuidProvider;
     private ZooUidProvider longProvider;
-    private SimpleMailbox mailboxUUID;
-    private SimpleMailbox mailboxLong;
+    private Mailbox mailboxUUID;
+    private Mailbox mailboxLong;
     private UUID randomUUID = UUID.randomUUID();
 
     @Before
@@ -158,9 +158,9 @@ public class ZooUidProviderTest {
         longProvider = new ZooUidProvider(client, retryPolicy);
         MailboxPath path1 = new MailboxPath("namespacetest", "namespaceuser", 
"UUID");
         MailboxPath path2 = new MailboxPath("namespacetest", "namespaceuser", 
"Long");
-        mailboxUUID = new SimpleMailbox(path1, 1L);
+        mailboxUUID = new Mailbox(path1, 1L);
         mailboxUUID.setMailboxId(UUIDId.of(randomUUID));
-        mailboxLong = new SimpleMailbox(path2, 2L);
+        mailboxLong = new Mailbox(path2, 2L);
         mailboxLong.setMailboxId(new LongId(123L));
     }
 
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index f38563f..a22744a 100644
--- 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -37,12 +37,12 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.events.Event;
 import org.apache.james.mailbox.events.InVMEventBus;
 import org.apache.james.mailbox.events.MailboxListener;
 import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
@@ -117,7 +117,7 @@ public class MailboxEventAnalyserTest {
     private static final MailboxPath MAILBOX_PATH = new 
MailboxPath("namespace", "user", "name");
     private static final TestId MAILBOX_ID = TestId.of(36);
     private static final int UID_VALIDITY = 1024;
-    private static final SimpleMailbox DEFAULT_MAILBOX = new 
SimpleMailbox(MAILBOX_PATH, UID_VALIDITY, MAILBOX_ID);
+    private static final Mailbox DEFAULT_MAILBOX = new Mailbox(MAILBOX_PATH, 
UID_VALIDITY, MAILBOX_ID);
     private static final MailboxListener.Added ADDED = EventFactory.added()
         .randomEventId()
         .mailboxSession(MAILBOX_SESSION)
diff --git 
a/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
 
b/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index c88b127..84eaaae 100644
--- 
a/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ 
b/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -29,7 +29,6 @@ import java.util.Iterator;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.SimpleMailbox;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.Mailbox;
@@ -65,28 +64,28 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxesShouldDeleteMailboxes() throws Exception {
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
 
     @Test
     void deleteMailboxesShouldDeleteInbox() throws Exception {
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
 
     @Test
     void deleteMailboxesShouldDeleteMailboxesChildren() throws Exception {
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
 
     @Test
     void 
deleteMailboxesShouldNotDeleteMailboxesBelongingToNotPrivateNamespace() throws 
Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath("#top", USER, 
"name"), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(new MailboxPath("#top", USER, "name"), 
UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
@@ -94,7 +93,7 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxesShouldNotDeleteMailboxesBelongingToOtherUsers() throws 
Exception {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser("userbis", 
"name"), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser("userbis", "name"), 
UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
@@ -102,7 +101,7 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxesShouldDeleteMailboxesWithEmptyNames() throws Exception 
{
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, ""), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, ""), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
@@ -121,9 +120,9 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxesShouldDeleteMultipleMailboxes() throws Exception {
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY));
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         
assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
@@ -138,7 +137,7 @@ public class MailboxManagementTest {
     @Test
     void createMailboxShouldThrowIfMailboxAlreadyExists() throws Exception {
         MailboxPath path = MailboxPath.forUser(USER, "name");
-        Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(path, UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
 
         assertThatThrownBy(() -> 
mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, 
"name"))
@@ -149,7 +148,7 @@ public class MailboxManagementTest {
     @Test
     void 
createMailboxShouldNotCreateAdditionalMailboxesIfMailboxAlreadyExists() throws 
Exception {
         MailboxPath path = MailboxPath.forUser(USER, "name");
-        Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(path, UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
 
         
assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
@@ -193,12 +192,12 @@ public class MailboxManagementTest {
 
     @Test
     void listMailboxesShouldReturnUserMailboxes() throws Exception {
-        Mailbox mailbox1 = new SimpleMailbox(new MailboxPath("#top", USER, 
"name1"), UID_VALIDITY);
-        Mailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser(USER, 
"name2"), UID_VALIDITY);
-        Mailbox mailbox3 = new SimpleMailbox(MailboxPath.forUser("other_user", 
"name3"), UID_VALIDITY);
-        Mailbox mailbox4 = new SimpleMailbox(MailboxPath.forUser(USER, 
"name4"), UID_VALIDITY);
-        Mailbox mailbox5 = new SimpleMailbox(MailboxPath.forUser(USER, 
"INBOX"), UID_VALIDITY);
-        Mailbox mailbox6 = new SimpleMailbox(MailboxPath.forUser(USER, 
"INBOX.toto"), UID_VALIDITY);
+        Mailbox mailbox1 = new Mailbox(new MailboxPath("#top", USER, "name1"), 
UID_VALIDITY);
+        Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(USER, "name2"), 
UID_VALIDITY);
+        Mailbox mailbox3 = new Mailbox(MailboxPath.forUser("other_user", 
"name3"), UID_VALIDITY);
+        Mailbox mailbox4 = new Mailbox(MailboxPath.forUser(USER, "name4"), 
UID_VALIDITY);
+        Mailbox mailbox5 = new Mailbox(MailboxPath.forUser(USER, "INBOX"), 
UID_VALIDITY);
+        Mailbox mailbox6 = new Mailbox(MailboxPath.forUser(USER, 
"INBOX.toto"), UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox1);
         mapperFactory.createMailboxMapper(session).save(mailbox2);
         mapperFactory.createMailboxMapper(session).save(mailbox3);
@@ -222,14 +221,14 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxShouldDeleteGivenMailbox() throws Exception {
-        mapperFactory.createMailboxMapper(session).save(new 
SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
+        mapperFactory.createMailboxMapper(session).save(new 
Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
         
mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, 
"name");
         
assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
 
     @Test
     void deleteMailboxShouldNotDeleteGivenMailboxIfWrongNamespace() throws 
Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath("#top", USER, 
"name"), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(new MailboxPath("#top", USER, "name"), 
UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         
mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, 
"name");
         
assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
@@ -237,7 +236,7 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxShouldNotDeleteGivenMailboxIfWrongUser() throws 
Exception {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser("userbis", 
"name"), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser("userbis", "name"), 
UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         
mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, 
"name");
         
assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
@@ -245,7 +244,7 @@ public class MailboxManagementTest {
 
     @Test
     void deleteMailboxShouldNotDeleteGivenMailboxIfWrongName() throws 
Exception {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, 
"wrong_name"), UID_VALIDITY);
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(USER, "wrong_name"), 
UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         
mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, 
"name");
         
assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
@@ -253,7 +252,7 @@ public class MailboxManagementTest {
 
     @Test
     void importEmlFileToMailboxShouldImportEmlFileToGivenMailbox() throws 
Exception {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "name"),
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(USER, "name"),
                 UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         String emlpath = 
ClassLoader.getSystemResource("eml/frnog.eml").getFile();
@@ -270,7 +269,7 @@ public class MailboxManagementTest {
 
     @Test
     void 
importEmlFileToMailboxShouldNotImportEmlFileWithWrongPathToGivenMailbox() 
throws Exception {
-        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "name"),
+        Mailbox mailbox = new Mailbox(MailboxPath.forUser(USER, "name"),
                 UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).save(mailbox);
         String emlpath = 
ClassLoader.getSystemResource("eml/frnog.eml").getFile();


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

Reply via email to