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 2017/06/28 07:21:14 UTC

[1/3] james-project git commit: JAMES-2069 Add unit test for missing From on JMAP messages

Repository: james-project
Updated Branches:
  refs/heads/master bf4dc20fb -> 793fec8a6


JAMES-2069 Add unit test for missing From on JMAP messages


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

Branch: refs/heads/master
Commit: 3562b88fc27a08ccc3b54aee48caed4652ece8cb
Parents: bf4dc20
Author: benwa <bt...@linagora.com>
Authored: Tue Jun 27 09:36:41 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Jun 27 09:36:41 2017 +0700

----------------------------------------------------------------------
 .../james/jmap/model/MessageFactoryTest.java    | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3562b88f/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
index bd08b57..4e0141d 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java
@@ -384,6 +384,26 @@ public class MessageFactoryTest {
     }
 
     @Test
+    public void messageWithoutFromShouldHaveEmptyFromField() throws Exception {
+        String headers = "To: user <us...@domain>\n"
+            + "Subject: test subject\n";
+        MetaDataWithContent testMail = MetaDataWithContent.builder()
+            .uid(MessageUid.of(2))
+            .flags(new Flags(Flag.SEEN))
+            .size(headers.length())
+            .internalDate(INTERNAL_DATE)
+            .content(new ByteArrayInputStream(headers.getBytes(Charsets.UTF_8)))
+            .attachments(ImmutableList.of())
+            .mailboxId(MAILBOX_ID)
+            .messageId(new TestMessageId.Factory().generate())
+            .build();
+
+        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+
+        assertThat(testee.getFrom()).isEmpty();
+    }
+
+    @Test
     public void dateFromHeaderShouldBeUsedIfPresent() throws Exception {
         String headers = "From: user <userdomain>\n"
             + "To: user1 <user1domain>, user2 <user2domain>\n"


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


[3/3] james-project git commit: JAMES-2076 setActive was running concurrent operations in parallel

Posted by bt...@apache.org.
JAMES-2076 setActive was running concurrent operations in parallel


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

Branch: refs/heads/master
Commit: 793fec8a63598b1c0af14dfce799f01665533c16
Parents: 416e310
Author: benwa <bt...@linagora.com>
Authored: Wed Jun 28 10:27:39 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jun 28 14:20:47 2017 +0700

----------------------------------------------------------------------
 .../james/sieve/cassandra/CassandraSieveRepository.java   | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/793fec8a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
index 95557e5..0490848 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
@@ -131,12 +131,12 @@ public class CassandraSieveRepository implements SieveRepository {
 
     @Override
     public void setActive(String user, String name) throws ScriptNotFoundException {
-        CompletableFuture<Void> unactivateOldScriptFuture = unactivateOldScript(user);
-        CompletableFuture<Boolean> activateNewScript = updateScriptActivation(user, name, true)
-            .thenCompose(CompletableFutureUtil.composeIfTrue(
-                () -> cassandraActiveScriptDAO.activate(user, name)));
+        CompletableFuture<Boolean> activateNewScript =
+            unactivateOldScript(user)
+                .thenCompose( any -> updateScriptActivation(user, name, true)
+                    .thenCompose(CompletableFutureUtil.composeIfTrue(
+                        () -> cassandraActiveScriptDAO.activate(user, name))));
 
-        unactivateOldScriptFuture.join();
         if (!activateNewScript.join()) {
             throw new ScriptNotFoundException();
         }


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


[2/3] james-project git commit: JAMES-2076 remove useless lightweight condition

Posted by bt...@apache.org.
JAMES-2076 remove useless lightweight condition


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

Branch: refs/heads/master
Commit: 416e31088b8abf262f07e87274db11c97ee13ce5
Parents: 3562b88
Author: benwa <bt...@linagora.com>
Authored: Wed Jun 28 09:19:15 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jun 28 14:20:47 2017 +0700

----------------------------------------------------------------------
 .../james/sieve/cassandra/CassandraSieveDAO.java      |  3 ++-
 .../james/sieve/cassandra/CassandraSieveQuotaDAO.java | 14 ++++++--------
 .../sieve/cassandra/CassandraSieveRepository.java     |  8 ++------
 .../sieverepository/file/SieveFileRepository.java     |  4 ++--
 .../lib/AbstractSieveRepositoryTest.java              |  9 +++++++--
 5 files changed, 19 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/416e3108/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
index 7dab54a..f15dba5 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
@@ -49,6 +49,7 @@ import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.querybuilder.Select;
+import com.github.steveash.guavate.Guavate;
 
 public class CassandraSieveDAO {
 
@@ -116,7 +117,7 @@ public class CassandraSieveDAO {
                 .map(row -> new ScriptSummary(
                     row.getString(SCRIPT_NAME),
                     row.getBool(IS_ACTIVE)))
-                .collect(Collectors.toList()));
+                .collect(Guavate.toImmutableList()));
     }
 
     public CompletableFuture<Boolean> updateScriptActivation(String user, String scriptName, boolean active) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/416e3108/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAO.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAO.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAO.java
index 6dcbe6e..eaeb39e 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAO.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAO.java
@@ -89,14 +89,12 @@ public class CassandraSieveQuotaDAO {
         deleteClusterQuotaStatement = session.prepare(
             delete()
                 .from(CassandraSieveClusterQuotaTable.TABLE_NAME)
-                .where(eq(CassandraSieveClusterQuotaTable.NAME, bindMarker(CassandraSieveClusterQuotaTable.NAME)))
-                .ifExists());
+                .where(eq(CassandraSieveClusterQuotaTable.NAME, bindMarker(CassandraSieveClusterQuotaTable.NAME))));
 
         deleteUserQuotaStatement = session.prepare(
             delete()
                 .from(CassandraSieveQuotaTable.TABLE_NAME)
-                .where(eq(CassandraSieveQuotaTable.USER_NAME, bindMarker(CassandraSieveQuotaTable.USER_NAME)))
-                .ifExists());
+                .where(eq(CassandraSieveQuotaTable.USER_NAME, bindMarker(CassandraSieveQuotaTable.USER_NAME))));
     }
 
     public CompletableFuture<Long> spaceUsedBy(String user) {
@@ -128,8 +126,8 @@ public class CassandraSieveQuotaDAO {
                 .setString(CassandraSieveClusterQuotaTable.NAME, CassandraSieveClusterQuotaTable.DEFAULT_NAME));
     }
 
-    public CompletableFuture<Boolean> removeQuota() {
-        return cassandraAsyncExecutor.executeReturnApplied(
+    public CompletableFuture<Void> removeQuota() {
+        return cassandraAsyncExecutor.executeVoid(
             deleteClusterQuotaStatement.bind()
                 .setString(CassandraSieveClusterQuotaTable.NAME, CassandraSieveClusterQuotaTable.DEFAULT_NAME));
     }
@@ -148,8 +146,8 @@ public class CassandraSieveQuotaDAO {
                 .setString(CassandraSieveQuotaTable.USER_NAME, user));
     }
 
-    public CompletableFuture<Boolean> removeQuota(String user)  {
-        return cassandraAsyncExecutor.executeReturnApplied(
+    public CompletableFuture<Void> removeQuota(String user)  {
+        return cassandraAsyncExecutor.executeVoid(
             deleteUserQuotaStatement.bind()
                 .setString(CassandraSieveQuotaTable.USER_NAME, user));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/416e3108/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
index 1e3ad9f..95557e5 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
@@ -237,9 +237,7 @@ public class CassandraSieveRepository implements SieveRepository {
 
     @Override
     public void removeQuota() throws QuotaNotFoundException {
-        if (!cassandraSieveQuotaDAO.removeQuota().join()) {
-            throw new QuotaNotFoundException();
-        }
+        cassandraSieveQuotaDAO.removeQuota().join();
     }
 
     @Override
@@ -266,9 +264,7 @@ public class CassandraSieveRepository implements SieveRepository {
 
     @Override
     public void removeQuota(String user) throws QuotaNotFoundException {
-        if (!cassandraSieveQuotaDAO.removeQuota(user).join()) {
-            throw new QuotaNotFoundException();
-        }
+        cassandraSieveQuotaDAO.removeQuota(user).join();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/416e3108/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
index 221320e..60f5351 100644
--- a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
@@ -420,7 +420,7 @@ public class SieveFileRepository implements SieveRepository {
     public synchronized void removeQuota() throws QuotaNotFoundException, StorageException {
         File file = getQuotaFile();
         if (!file.exists()) {
-            throw new QuotaNotFoundException("No default quota");
+            return;
         }
         try {
             FileUtils.forceDelete(file);
@@ -475,7 +475,7 @@ public class SieveFileRepository implements SieveRepository {
         synchronized (lock) {
             File file = getQuotaFile(user);
             if (!file.exists()) {
-                throw new QuotaNotFoundException("No quota for user: " + user);
+                return;
             }
             try {
                 FileUtils.forceDelete(file);

http://git-wip-us.apache.org/repos/asf/james-project/blob/416e3108/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
index b07d3dc..b545160 100644
--- a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
@@ -303,12 +303,17 @@ public abstract class AbstractSieveRepositoryTest {
         assertThat(sieveRepository.hasQuota(USER)).isTrue();
     }
 
-    @Test(expected = QuotaNotFoundException.class)
-    public void removeQuotaShouldThrowIfRepositoryDoesNotHaveQuota() throws Exception {
+    @Test
+    public void removeQuotaShouldNotThrowIfRepositoryDoesNotHaveQuota() throws Exception {
         sieveRepository.removeQuota();
     }
 
     @Test
+    public void removeUserQuotaShouldNotThrowWhenAbsent() throws Exception {
+        sieveRepository.removeQuota(USER);
+    }
+
+    @Test
     public void removeQuotaShouldWorkOnRepositories() throws Exception {
         sieveRepository.setQuota(DEFAULT_QUOTA);
         sieveRepository.removeQuota();


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