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