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 ad...@apache.org on 2017/04/25 06:50:01 UTC
[1/3] james-project git commit: MAILBOX-294 Correct MessageIdMapper
test
Repository: james-project
Updated Branches:
refs/heads/master 2a4984533 -> d8e844e3c
MAILBOX-294 Correct MessageIdMapper test
Removing a flag that was not present lead to NOOP.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c6850011
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c6850011
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c6850011
Branch: refs/heads/master
Commit: c68500119ef65dc5b978e61000465c54f93a8e00
Parents: 2a49845
Author: benwa <bt...@linagora.com>
Authored: Fri Apr 21 09:05:07 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Apr 21 17:51:20 2017 +0700
----------------------------------------------------------------------
.../store/mail/model/MessageIdMapperTest.java | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c6850011/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
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 fed386c..b080eda 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
@@ -425,7 +425,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
MessageId messageId = message1.getMessageId();
Flags newFlags = new Flags(Flag.ANSWERED);
- Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, ImmutableList.<MailboxId> of(), newFlags, MessageManager.FlagsUpdateMode.REMOVE);
+ Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, ImmutableList.<MailboxId> of(), newFlags, FlagsUpdateMode.REMOVE);
assertThat(flags).isEmpty();
}
@@ -433,7 +433,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
@ContractTest
public void setFlagsShouldReturnEmptyWhenMessageIdDoesntExist() throws Exception {
MessageId unknownMessageId = mapperProvider.generateMessageId();
- Map<MailboxId, UpdatedFlags> flags = sut.setFlags(unknownMessageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.RECENT), MessageManager.FlagsUpdateMode.REMOVE);
+ Map<MailboxId, UpdatedFlags> flags = sut.setFlags(unknownMessageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.RECENT), FlagsUpdateMode.REMOVE);
assertThat(flags).isEmpty();
}
@@ -448,7 +448,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
MessageId messageId = message1.getMessageId();
- Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), MessageManager.FlagsUpdateMode.ADD);
+ Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), FlagsUpdateMode.ADD);
Flags newFlags = new FlagsBuilder()
.add(Flag.RECENT)
@@ -520,7 +520,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
MessageId messageId = message1.getMessageId();
Flags newFlags = new Flags(Flag.ANSWERED);
- sut.setFlags(messageId, ImmutableList.<MailboxId> of(), newFlags, MessageManager.FlagsUpdateMode.REMOVE);
+ sut.setFlags(messageId, ImmutableList.<MailboxId> of(), newFlags, FlagsUpdateMode.REMOVE);
List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), MessageMapper.FetchType.Body);
assertThat(messages).hasSize(1);
@@ -535,7 +535,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
sut.save(message1);
MessageId messageId = message1.getMessageId();
- sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), MessageManager.FlagsUpdateMode.REMOVE);
+ sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), FlagsUpdateMode.ADD);
List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), MessageMapper.FetchType.Body);
assertThat(messages).hasSize(1);
@@ -553,7 +553,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
MessageId messageId = message1.getMessageId();
Flags newFlags = new Flags(Flag.ANSWERED);
- sut.setFlags(messageId, ImmutableList.<MailboxId> of(), newFlags, MessageManager.FlagsUpdateMode.REMOVE);
+ sut.setFlags(messageId, ImmutableList.<MailboxId> of(), newFlags, FlagsUpdateMode.REMOVE);
List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), MessageMapper.FetchType.Body);
assertThat(messages).hasSize(1);
@@ -755,7 +755,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
sut.save(message1);
- sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.SEEN), MessageManager.FlagsUpdateMode.ADD);
+ sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.SEEN), FlagsUpdateMode.ADD);
assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
}
@@ -767,7 +767,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
message1.setFlags(new Flags(Flag.SEEN));
sut.save(message1);
- sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.SEEN), MessageManager.FlagsUpdateMode.REMOVE);
+ sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.SEEN), FlagsUpdateMode.REMOVE);
assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(1);
}
---------------------------------------------------------------------
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: MAILBOX-294 Fix Eclipse warnings
Posted by ad...@apache.org.
MAILBOX-294 Fix Eclipse warnings
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d8e844e3
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d8e844e3
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d8e844e3
Branch: refs/heads/master
Commit: d8e844e3cce6e3b89c259ac77edddced896a1534
Parents: f60dfe3
Author: Antoine Duprat <ad...@linagora.com>
Authored: Mon Apr 24 09:59:54 2017 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Apr 25 08:47:53 2017 +0200
----------------------------------------------------------------------
.../store/mail/model/MessageIdMapperTest.java | 1 -
.../mailbox/ElasticSearchMailboxModule.java | 3 +--
.../apache/james/DockerElasticSearchRule.java | 6 ++---
.../JamesServerWithRetryConnectionTest.java | 19 ++++++--------
.../apache/james/utils/RetryExecutorUtil.java | 2 +-
.../utils/FileConfigurationProviderTest.java | 1 -
.../james/utils/RetryExecutorUtilTest.java | 26 ++++++++++++--------
.../apache/james/modules/server/JMXServer.java | 1 -
.../java/org/apache/james/jmap/JMAPModule.java | 1 -
9 files changed, 28 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
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 bbac7ad..e9089e7 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
@@ -31,7 +31,6 @@ import javax.mail.Flags.Flag;
import javax.mail.util.SharedByteArrayInputStream;
import org.apache.james.mailbox.FlagsBuilder;
-import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index d1b124b..e4a1011 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -32,7 +32,6 @@ import org.apache.james.backends.es.IndexCreationFactory;
import org.apache.james.backends.es.IndexName;
import org.apache.james.backends.es.NodeMappingFactory;
import org.apache.james.backends.es.TypeName;
-import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.mailbox.elasticsearch.IndexAttachments;
import org.apache.james.mailbox.elasticsearch.MailboxElasticsearchConstants;
import org.apache.james.mailbox.elasticsearch.MailboxMappingFactory;
@@ -41,8 +40,8 @@ import org.apache.james.mailbox.extractor.TextExtractor;
import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.tika.extractor.TikaTextExtractor;
-import org.apache.james.utils.RetryExecutorUtil;
import org.apache.james.utils.PropertiesProvider;
+import org.apache.james.utils.RetryExecutorUtil;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.NoNodeAvailableException;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
index 3dd19c2..3598b4f 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
@@ -19,9 +19,9 @@
package org.apache.james;
-import com.google.inject.Module;
+import java.util.Arrays;
+
import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.modules.mailbox.CassandraSessionConfiguration;
import org.apache.james.modules.mailbox.ElasticSearchConfiguration;
import org.apache.james.util.streams.SwarmGenericContainer;
import org.junit.runner.Description;
@@ -29,7 +29,7 @@ import org.junit.runners.model.Statement;
import org.testcontainers.shaded.com.github.dockerjava.api.model.ExposedPort;
import org.testcontainers.shaded.com.github.dockerjava.api.model.Ports.Binding;
-import java.util.Arrays;
+import com.google.inject.Module;
public class DockerElasticSearchRule implements GuiceModuleTestRule {
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
index 018bda1..ce18ad9 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
@@ -19,13 +19,7 @@
package org.apache.james;
-import org.apache.james.util.streams.SwarmGenericContainer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.testcontainers.DockerClientFactory;
-import org.testcontainers.shaded.com.google.common.base.Throwables;
+import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -36,16 +30,17 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import static org.assertj.core.api.Assertions.assertThat;
+import org.apache.james.util.streams.SwarmGenericContainer;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.testcontainers.shaded.com.google.common.base.Throwables;
public class JamesServerWithRetryConnectionTest {
private static final int IMAP_PORT = 1143;
private static final long WAITING_TIME = TimeUnit.MILLISECONDS.convert(10, TimeUnit.SECONDS);
- private static String getDockerHostIp() {
- return DockerClientFactory.instance().dockerHostIpAddress();
- }
-
private final DockerCassandraRule dockerCassandraRule = new DockerCassandraRule();
private final DockerElasticSearchRule dockerElasticSearchRule = new DockerElasticSearchRule();
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
index 32b807e..8737ffe 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
@@ -26,7 +26,7 @@ public class RetryExecutorUtil {
public static final int INITIAL_DELAY_MILLIS = 500;
public static final int MULTIPLIER = 2;
- public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class<? extends Throwable>... clazz) {
+ public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class<? extends Throwable> clazz) {
return executor
.retryOn(clazz)
.withExponentialBackoff(INITIAL_DELAY_MILLIS, MULTIPLIER)
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
index 04562f2..6318fc7 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
@@ -21,7 +21,6 @@ package org.apache.james.utils;
import static org.assertj.core.api.Assertions.assertThat;
-import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.core.JamesServerResourceLoader;
import org.apache.james.core.filesystem.FileSystemImpl;
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
index 32477ab..a9354f4 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
@@ -19,22 +19,23 @@
package org.apache.james.utils;
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-import com.nurkiewicz.asyncretry.RetryExecutor;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.BDDMockito.given;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.BDDMockito.given;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+import com.nurkiewicz.asyncretry.RetryExecutor;
public class RetryExecutorUtilTest {
private static final int MAX_RETRIES = 3;
@@ -57,6 +58,7 @@ public class RetryExecutorUtilTest {
}
@Test
+ @SuppressWarnings("unchecked")
public void retryOnExceptionsAndExecuteShouldRethrowWhenScheduledServiceAlwaysThrowException() throws Exception {
given(serviceMock.faultyService())
.willThrow(IllegalArgumentException.class)
@@ -72,6 +74,7 @@ public class RetryExecutorUtilTest {
}
@Test
+ @SuppressWarnings("unchecked")
public void retryOnExceptionsAndExecuteShouldRetryWhenMatchExceptionAndSuccess() throws Exception {
given(serviceMock.faultyService())
.willThrow(IllegalArgumentException.class)
@@ -84,6 +87,7 @@ public class RetryExecutorUtilTest {
}
@Test
+ @SuppressWarnings("unchecked")
public void retryOnExceptionsAndExecuteShouldNotRetryWhenDoesNotMatchException() throws Exception {
given(serviceMock.faultyService())
.willThrow(IllegalStateException.class)
@@ -97,6 +101,7 @@ public class RetryExecutorUtilTest {
}
@Test
+ @SuppressWarnings("unchecked")
public void retryOnExceptionsAndExecuteShouldRetryWithMaxTimesAndReturnValue() throws Exception {
given(serviceMock.faultyService())
.willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
@@ -110,6 +115,7 @@ public class RetryExecutorUtilTest {
}
@Test
+ @SuppressWarnings("unchecked")
public void retryOnExceptionsAndExecuteShouldFailIfFailMoreThanMaxRetry() throws Exception {
given(serviceMock.faultyService()).
willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class, IllegalStateException.class).
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java b/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java
index 8be9f76..49b0893 100644
--- a/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java
+++ b/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java
@@ -37,7 +37,6 @@ import javax.management.remote.JMXServiceURL;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.util.RestrictingRMISocketFactory;
import org.apache.james.utils.PropertiesProvider;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8e844e3/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
index 73ef2f5..a43b0d6 100644
--- a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
+++ b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Optional;
import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.io.FileUtils;
import org.apache.james.filesystem.api.FileSystem;
---------------------------------------------------------------------
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: MAILBOX-294 Avoid calling Cassandra
when Noop flags update
Posted by ad...@apache.org.
MAILBOX-294 Avoid calling Cassandra when Noop flags update
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f60dfe31
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f60dfe31
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f60dfe31
Branch: refs/heads/master
Commit: f60dfe31fad132f65027af37a1a6f41af89ce168
Parents: c685001
Author: benwa <bt...@linagora.com>
Authored: Fri Apr 21 09:19:30 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Apr 25 08:47:53 2017 +0200
----------------------------------------------------------------------
.../mail/CassandraMessageIdMapper.java | 10 +++-
.../cassandra/mail/CassandraMessageMapper.java | 19 +++++-
.../store/mail/model/MessageIdMapperTest.java | 61 ++++++++++++++++++++
.../store/mail/model/MessageMapperTest.java | 27 +++++++++
4 files changed, 114 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/f60dfe31/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index bc950b7..bf3dc1d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -263,14 +263,22 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
.join()
.findFirst()
.orElseThrow(MailboxDeleteDuringUpdateException::new);
+ Flags newFlags = new FlagsUpdateCalculator(newState, updateMode).buildNewFlags(oldComposedId.getFlags());
+ if (identicalFlags(oldComposedId, newFlags)) {
+ return Optional.of(Pair.of(oldComposedId.getFlags(), oldComposedId));
+ }
ComposedMessageIdWithMetaData newComposedId = new ComposedMessageIdWithMetaData(
oldComposedId.getComposedMessageId(),
- new FlagsUpdateCalculator(newState, updateMode).buildNewFlags(oldComposedId.getFlags()),
+ newFlags,
modSeqProvider.nextModSeq(mailboxSession, cassandraId));
return updateFlags(oldComposedId, newComposedId);
}
+ private boolean identicalFlags(ComposedMessageIdWithMetaData oldComposedId, Flags newFlags) {
+ return oldComposedId.getFlags().equals(newFlags);
+ }
+
private Optional<Pair<Flags, ComposedMessageIdWithMetaData>> updateFlags(ComposedMessageIdWithMetaData oldComposedId, ComposedMessageIdWithMetaData newComposedId) {
return imapUidDAO.updateMetadata(newComposedId, oldComposedId.getModSeq())
.thenCompose(updateSuccess -> Optional.of(updateSuccess)
http://git-wip-us.apache.org/repos/asf/james-project/blob/f60dfe31/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index e12a93d..c00659a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -333,12 +333,16 @@ public class CassandraMessageMapper implements MessageMapper {
long oldModSeq = message.getModSeq();
Flags oldFlags = message.createFlags();
Flags newFlags = flagUpdateCalculator.buildNewFlags(oldFlags);
+
+ boolean involveFlagsChanges = !identicalFlags(oldFlags, newFlags);
+ long newModSeq = generateNewModSeqIfNeeded(mailbox, oldModSeq, involveFlagsChanges);
+
message.setFlags(newFlags);
- message.setModSeq(modSeqProvider.nextModSeq(mailboxSession, mailbox));
+ message.setModSeq(newModSeq);
if (updateFlags(message, oldModSeq)) {
return Optional.of(UpdatedFlags.builder()
.uid(message.getUid())
- .modSeq(message.getModSeq())
+ .modSeq(newModSeq)
.oldFlags(oldFlags)
.newFlags(newFlags)
.build());
@@ -350,6 +354,17 @@ public class CassandraMessageMapper implements MessageMapper {
}
}
+ private long generateNewModSeqIfNeeded(Mailbox mailbox, long oldModSeq, boolean involveFlagsChanges) throws MailboxException {
+ if (involveFlagsChanges) {
+ return modSeqProvider.nextModSeq(mailboxSession, mailbox);
+ }
+ return oldModSeq;
+ }
+
+ private boolean identicalFlags(Flags oldFlags, Flags newFlags) {
+ return oldFlags.equals(newFlags);
+ }
+
private boolean updateFlags(MailboxMessage message, long oldModSeq) {
ComposedMessageIdWithMetaData composedMessageIdWithMetaData = ComposedMessageIdWithMetaData.builder()
.composedMessageId(new ComposedMessageId(message.getMailboxId(), message.getMessageId(), message.getUid()))
http://git-wip-us.apache.org/repos/asf/james-project/blob/f60dfe31/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
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 b080eda..bbac7ad 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
@@ -773,6 +773,67 @@ public class MessageIdMapperTest<T extends MapperProvider> {
}
@ContractTest
+ public void setFlagsShouldNotUpdateModSeqWhenNoop() throws Exception {
+ message1.setUid(mapperProvider.generateMessageUid());
+ long modSeq = mapperProvider.generateModSeq(benwaInboxMailbox);
+ message1.setModSeq(modSeq);
+ message1.setFlags(new Flags(Flag.SEEN));
+ sut.save(message1);
+
+ sut.setFlags(message1.getMessageId(),
+ ImmutableList.of(message1.getMailboxId()),
+ new Flags(Flag.SEEN),
+ FlagsUpdateMode.ADD);
+
+ List<MailboxMessage> messages = sut.find(ImmutableList.of(message1.getMessageId()), MessageMapper.FetchType.Body);
+ assertThat(messages).hasSize(1);
+ assertThat(messages.get(0).getModSeq()).isEqualTo(modSeq);
+ }
+
+ @ContractTest
+ public void addingFlagToAMessageThatAlreadyHasThisFlagShouldResultInNoChange() throws Exception {
+ message1.setUid(mapperProvider.generateMessageUid());
+ long modSeq = mapperProvider.generateModSeq(benwaInboxMailbox);
+ message1.setModSeq(modSeq);
+ Flags flags = new Flags(Flag.SEEN);
+ message1.setFlags(flags);
+ sut.save(message1);
+
+ sut.setFlags(message1.getMessageId(),
+ ImmutableList.of(message1.getMailboxId()),
+ flags,
+ FlagsUpdateMode.ADD);
+
+ List<MailboxMessage> messages = sut.find(ImmutableList.of(message1.getMessageId()), MessageMapper.FetchType.Body);
+ assertThat(messages).hasSize(1);
+ assertThat(messages.get(0).createFlags()).isEqualTo(flags);
+ }
+
+ @ContractTest
+ public void setFlagsShouldReturnUpdatedFlagsWhenNoop() throws Exception {
+ message1.setUid(mapperProvider.generateMessageUid());
+ long modSeq = mapperProvider.generateModSeq(benwaInboxMailbox);
+ message1.setModSeq(modSeq);
+ Flags flags = new Flags(Flag.SEEN);
+ message1.setFlags(flags);
+ sut.save(message1);
+
+ Map<MailboxId, UpdatedFlags> mailboxIdUpdatedFlagsMap = sut.setFlags(message1.getMessageId(),
+ ImmutableList.of(message1.getMailboxId()),
+ flags,
+ FlagsUpdateMode.ADD);
+
+ assertThat(mailboxIdUpdatedFlagsMap)
+ .containsOnly(MapEntry.entry(message1.getMailboxId(),
+ UpdatedFlags.builder()
+ .modSeq(modSeq)
+ .uid(message1.getUid())
+ .newFlags(flags)
+ .oldFlags(flags)
+ .build()));
+ }
+
+ @ContractTest
public void countUnseenMessageShouldNotTakeCareOfOtherFlagsUpdates() throws Exception {
message1.setUid(mapperProvider.generateMessageUid());
message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
http://git-wip-us.apache.org/repos/asf/james-project/blob/f60dfe31/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
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 8e8e494..955f39a 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
@@ -628,6 +628,16 @@ public class MessageMapperTest<T extends MapperProvider> {
}
@ContractTest
+ public void flagsAdditionShouldHaveNoEffectOnStoredFlagsWhenNoop() throws MailboxException {
+ saveMessages();
+ messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flags.Flag.FLAGGED), FlagsUpdateMode.REPLACE), MessageRange.one(message1.getUid()));
+
+ messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flag.FLAGGED), FlagsUpdateMode.ADD), MessageRange.one(message1.getUid()));
+ assertThat(retrieveMessageFromStorage(message1))
+ .hasFlags(new FlagsBuilder().add(Flags.Flag.FLAGGED).build());
+ }
+
+ @ContractTest
public void flagsRemovalShouldReturnAnUpdatedFlagHighlightingTheRemoval() throws MailboxException {
saveMessages();
messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new FlagsBuilder().add(Flags.Flag.FLAGGED, Flags.Flag.SEEN).build(), FlagsUpdateMode.REPLACE), MessageRange.one(message1.getUid()));
@@ -764,6 +774,23 @@ public class MessageMapperTest<T extends MapperProvider> {
}
@ContractTest
+ public void userFlagsUpdateShouldReturnCorrectUpdatedFlagsWhenNoop() throws Exception {
+ saveMessages();
+
+ assertThat(
+ messageMapper.updateFlags(benwaInboxMailbox,
+ new FlagsUpdateCalculator(new Flags(USER_FLAG), FlagsUpdateMode.REMOVE),
+ MessageRange.one(message1.getUid())))
+ .containsOnly(
+ UpdatedFlags.builder()
+ .uid(message1.getUid())
+ .modSeq(message1.getModSeq())
+ .oldFlags(new Flags())
+ .newFlags(new Flags())
+ .build());
+ }
+
+ @ContractTest
public void userFlagsUpdateShouldWorkInConcurrentEnvironment() throws Exception {
saveMessages();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org