You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/01/25 05:02:16 UTC

[05/16] james-project git commit: JAMES-2293 Allow to clear a mail repository

JAMES-2293 Allow to clear a mail repository


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3c2559ca
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3c2559ca
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3c2559ca

Branch: refs/heads/master
Commit: 3c2559ca065bcfa25c49f79241f39514ecda11ec
Parents: 9118fd0
Author: benwa <bt...@linagora.com>
Authored: Mon Jan 22 11:49:04 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jan 25 11:39:06 2018 +0700

----------------------------------------------------------------------
 .../mailrepository/file/MBoxMailRepository.java |  8 ++++++
 .../lib/AbstractMailRepository.java             |  8 ++++++
 .../mailrepository/api/MailRepository.java      |  7 +++++
 .../mailrepository/MailRepositoryContract.java  | 30 +++++++++++++++++++-
 .../memory/MemoryMailRepository.java            |  5 ++++
 5 files changed, 57 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2559ca/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
index b0b3992..fa9ba5d 100755
--- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
@@ -77,6 +77,8 @@ import org.apache.mailet.Mail;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
 import com.google.common.hash.Hashing;
 
 /**
@@ -699,4 +701,10 @@ public class MBoxMailRepository implements MailRepository, Configurable {
     public long size() throws MessagingException {
         return loadKeysAsArray().size();
     }
+
+    @Override
+    public void removeAll() throws MessagingException {
+        ImmutableList.copyOf(list())
+            .forEach(Throwing.<String>consumer(this::remove).sneakyThrow());
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2559ca/server/data/data-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java b/server/data/data-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
index 11f3eb6..8f82041 100644
--- a/server/data/data-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
@@ -33,6 +33,8 @@ import org.apache.mailet.Mail;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterators;
 
 /**
@@ -163,4 +165,10 @@ public abstract class AbstractMailRepository implements MailRepository, Configur
     public long size() throws MessagingException {
         return Iterators.size(list());
     }
+
+    @Override
+    public void removeAll() throws MessagingException {
+        ImmutableList.copyOf(list())
+            .forEach(Throwing.<String>consumer(this::remove).sneakyThrow());
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2559ca/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
index 95d7a89..db5e267 100644
--- a/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
+++ b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepository.java
@@ -90,6 +90,13 @@ public interface MailRepository {
     void remove(String key) throws MessagingException;
 
     /**
+     * Removes all mails from this repository
+     *
+     * @throws MessagingException
+     */
+    void removeAll() throws MessagingException;
+
+    /**
      * @deprecated This method is implementation dependent, it has been moved to org.apache.james.mailrepository.lib.AbstractMailRepository
      */
     @Deprecated

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2559ca/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index 7594fde..d52c8cc 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -150,7 +150,6 @@ public interface MailRepositoryContract {
         testee.store(mail);
     }
 
-
     @Test
     default void retrieveShouldGetStoredMail() throws Exception {
         MailRepository testee = retrieveRepository();
@@ -163,6 +162,35 @@ public interface MailRepositoryContract {
     }
 
     @Test
+    default void removeAllShouldRemoveStoredMails() throws Exception {
+        MailRepository testee = retrieveRepository();
+        testee.store(createMail("name"));
+
+        testee.removeAll();
+
+        assertThat(testee.size()).isEqualTo(0L);
+    }
+
+    @Test
+    default void removeAllShouldBeIdempotent() throws Exception {
+        MailRepository testee = retrieveRepository();
+        testee.store(createMail("name"));
+
+        testee.removeAll();
+        testee.removeAll();
+
+        assertThat(testee.size()).isEqualTo(0L);
+    }
+
+    @Test
+    default void removeAllShouldNotFailWhenEmpty() throws Exception {
+        MailRepository testee = retrieveRepository();
+        testee.store(createMail("name"));
+
+        testee.removeAll();
+    }
+
+    @Test
     default void retrieveShouldGetStoredEmojiMail() throws Exception {
         MailRepository testee = retrieveRepository();
         String key1 = "mail1";

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2559ca/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
index b201bc2..6d83596 100644
--- a/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
+++ b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
@@ -78,4 +78,9 @@ public class MemoryMailRepository implements MailRepository {
     public long size() {
         return mails.size();
     }
+
+    @Override
+    public void removeAll() {
+        mails.clear();
+    }
 }


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