JAMES-2055 Add ability to manage CONDSTORE in IMAP configuration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/281805d6 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/281805d6 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/281805d6 Branch: refs/heads/master Commit: 281805d67de9bb9753a5153a114faa5a22913987 Parents: 02737f5 Author: Antoine Duprat <[email protected]> Authored: Mon Jun 12 14:02:57 2017 +0200 Committer: benwa <[email protected]> Committed: Wed Jun 14 12:43:32 2017 +0700 ---------------------------------------------------------------------- .../james/imap/api/ImapConfiguration.java | 27 +++++++++++++--- .../james/imap/api/ImapConfigurationTest.java | 33 ++++++++++++++++++-- 2 files changed, 53 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/281805d6/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java b/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java index e0b26ca..d06ac60 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java @@ -59,16 +59,20 @@ public class ImapConfiguration { return !StringUtils.isBlank(disableCap); } + private static final boolean DEFAULT_CONDSTORE_DISABLE = false; + private Optional<Long> idleTimeInterval; private Optional<TimeUnit> idleTimeIntervalUnit; private Optional<Boolean> enableIdle; private ImmutableSet<String> disabledCaps; + private Optional<Boolean> isCondstoreEnable; private Builder() { this.idleTimeInterval = Optional.absent(); this.idleTimeIntervalUnit = Optional.absent(); this.enableIdle = Optional.absent(); this.disabledCaps = ImmutableSet.of(); + this.isCondstoreEnable = Optional.absent(); } public Builder idleTimeInterval(long idleTimeInterval) { @@ -101,6 +105,12 @@ public class ImapConfiguration { this.disabledCaps = ImmutableSet.of(disableCap); return this; } + + public Builder isCondstoreEnable(boolean isCondstoreEnable) { + this.isCondstoreEnable = Optional.of(isCondstoreEnable); + return this; + } + public ImapConfiguration build() { ImmutableSet<String> normalizeDisableCaps = FluentIterable.from(disabledCaps) .filter(NO_BLANK) @@ -110,7 +120,8 @@ public class ImapConfiguration { enableIdle.or(DEFAULT_ENABLE_IDLE), idleTimeInterval.or(DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS), idleTimeIntervalUnit.or(DEFAULT_HEARTBEAT_INTERVAL_UNIT), - normalizeDisableCaps); + normalizeDisableCaps, + isCondstoreEnable.or(DEFAULT_CONDSTORE_DISABLE)); } } @@ -118,12 +129,14 @@ public class ImapConfiguration { private final TimeUnit idleTimeIntervalUnit; private final ImmutableSet<String> disabledCaps; private final boolean enableIdle; + private final boolean isCondstoreEnable; - private ImapConfiguration(boolean enableIdle, long idleTimeInterval, TimeUnit idleTimeIntervalUnit, ImmutableSet<String> disabledCaps) { + private ImapConfiguration(boolean enableIdle, long idleTimeInterval, TimeUnit idleTimeIntervalUnit, ImmutableSet<String> disabledCaps, boolean isCondstoreEnable) { this.enableIdle = enableIdle; this.idleTimeInterval = idleTimeInterval; this.idleTimeIntervalUnit = idleTimeIntervalUnit; this.disabledCaps = disabledCaps; + this.isCondstoreEnable = isCondstoreEnable; } public long getIdleTimeInterval() { @@ -141,6 +154,10 @@ public class ImapConfiguration { public boolean isEnableIdle() { return enableIdle; } + + public boolean isCondstoreEnable() { + return isCondstoreEnable; + } @Override public final boolean equals(Object obj) { @@ -149,14 +166,15 @@ public class ImapConfiguration { return Objects.equal(that.isEnableIdle(), enableIdle) && Objects.equal(that.getIdleTimeInterval(), idleTimeInterval) && Objects.equal(that.getIdleTimeIntervalUnit(), idleTimeIntervalUnit) - && Objects.equal(that.getDisabledCaps(), disabledCaps); + && Objects.equal(that.getDisabledCaps(), disabledCaps) + && Objects.equal(that.isCondstoreEnable(), isCondstoreEnable); } return false; } @Override public final int hashCode() { - return Objects.hashCode(enableIdle, idleTimeInterval, idleTimeIntervalUnit, disabledCaps); + return Objects.hashCode(enableIdle, idleTimeInterval, idleTimeIntervalUnit, disabledCaps, isCondstoreEnable); } @Override @@ -166,6 +184,7 @@ public class ImapConfiguration { .add("idleTimeInterval", idleTimeInterval) .add("idleTimeIntervalUnit", idleTimeIntervalUnit) .add("disabledCaps", disabledCaps) + .add("isCondstoreEnable", isCondstoreEnable) .toString(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/281805d6/protocols/imap/src/test/java/org/apache/james/imap/api/ImapConfigurationTest.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/test/java/org/apache/james/imap/api/ImapConfigurationTest.java b/protocols/imap/src/test/java/org/apache/james/imap/api/ImapConfigurationTest.java index 3fa1cdc..e169e84 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/api/ImapConfigurationTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/api/ImapConfigurationTest.java @@ -20,15 +20,17 @@ package org.apache.james.imap.api; import static org.assertj.core.api.Assertions.assertThat; -import java.util.concurrent.TimeUnit; -import com.google.common.collect.ImmutableSet; +import java.util.concurrent.TimeUnit; -import nl.jqno.equalsverifier.EqualsVerifier; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import com.google.common.collect.ImmutableSet; + +import nl.jqno.equalsverifier.EqualsVerifier; + public class ImapConfigurationTest { @Rule public ExpectedException expectedException = ExpectedException.none(); @@ -158,4 +160,29 @@ public class ImapConfigurationTest { assertThat(imapConfiguration.isEnableIdle()).isFalse(); } + + @Test + public void isCondstoreEnableShouldBeFalseWhenNoSetting() { + ImapConfiguration imapConfiguration = ImapConfiguration.builder().build(); + + assertThat(imapConfiguration.isCondstoreEnable()).isFalse(); + } + + @Test + public void isCondstoreEnableShouldBeTrueWhenValueIsTrue() { + ImapConfiguration imapConfiguration = ImapConfiguration.builder() + .isCondstoreEnable(true) + .build(); + + assertThat(imapConfiguration.isCondstoreEnable()).isTrue(); + } + + @Test + public void isCondstoreEnableShouldBeFalseWhenValueIsFalse() { + ImapConfiguration imapConfiguration = ImapConfiguration.builder() + .isCondstoreEnable(false) + .build(); + + assertThat(imapConfiguration.isCondstoreEnable()).isFalse(); + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
