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]

Reply via email to