@Override public final boolean equals(Object obj) { if (obj instanceof ImapConfiguration) { ImapConfiguration that = (ImapConfiguration)obj; return Objects.equal(that.isEnableIdle(), enableIdle) && Objects.equal(that.getIdleTimeInterval(), idleTimeInterval) && Objects.equal(that.getIdleTimeIntervalUnit(), idleTimeIntervalUnit) && Objects.equal(that.getDisabledCaps(), disabledCaps) && Objects.equal(that.isCondstoreEnable(), isCondstoreEnable); } return false; }
public ImapConfiguration build() { ImmutableSet<String> normalizeDisableCaps = disabledCaps.stream() .filter(Builder::noBlankString) .map(StringUtils::normalizeSpace) .collect(Guavate.toImmutableSet()); return new ImapConfiguration( enableIdle.orElse(DEFAULT_ENABLE_IDLE), idleTimeInterval.orElse(DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS), idleTimeIntervalUnit.orElse(DEFAULT_HEARTBEAT_INTERVAL_UNIT), normalizeDisableCaps, isCondstoreEnable.orElse(DEFAULT_CONDSTORE_DISABLE)); } }
@Override public void configure(ImapConfiguration imapConfiguration) { super.configure(imapConfiguration); this.heartbeatInterval = imapConfiguration.getIdleTimeInterval(); this.heartbeatIntervalUnit = imapConfiguration.getIdleTimeIntervalUnit(); this.enableIdle = imapConfiguration.isEnableIdle(); if (enableIdle) { this.heartbeatExecutor = Executors.newScheduledThreadPool(DEFAULT_SCHEDULED_POOL_CORE_SIZE); } }
@Test public void disabledCapsShouldBeEmptyAsDefault() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .build(); assertThat(imapConfiguration.getDisabledCaps()).isEmpty(); }
@Test public void isCondstoreEnableShouldBeFalseWhenNoSetting() { ImapConfiguration imapConfiguration = ImapConfiguration.builder().build(); assertThat(imapConfiguration.isCondstoreEnable()).isFalse(); }
@VisibleForTesting static ImapConfiguration getImapConfiguration(HierarchicalConfiguration configuration) { ImmutableSet<String> disabledCaps = ImmutableSet.copyOf(Splitter.on(CAPABILITY_SEPARATOR).split(configuration.getString("disabledCaps", ""))); return ImapConfiguration.builder() .enableIdle(configuration.getBoolean("enableIdle", ImapConfiguration.DEFAULT_ENABLE_IDLE)) .idleTimeInterval(configuration.getLong("idleTimeInterval", ImapConfiguration.DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS)) .idleTimeIntervalUnit(getTimeIntervalUnit(configuration.getString("idleTimeIntervalUnit", DEFAULT_TIME_UNIT))) .disabledCaps(disabledCaps) .build(); }
@Test public void millisecondsShouldBeDefaultValueWhenNoSetting() { ImapConfiguration imapConfiguration = ImapConfiguration.builder().build(); assertThat(imapConfiguration.getIdleTimeIntervalUnit()).isEqualTo(ImapConfiguration.DEFAULT_HEARTBEAT_INTERVAL_UNIT); }
@Test public void idleKeepAliveShouldBeDefaultValueWhenNoSetting() { ImapConfiguration imapConfiguration = ImapConfiguration.builder().build(); assertThat(imapConfiguration.getIdleTimeInterval()).isEqualTo(ImapConfiguration.DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS); }
@Test public void idleShouldEnableByDefault() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .build(); assertThat(imapConfiguration.isEnableIdle()).isTrue(); }
private boolean shouldDisableCondstore(ImapConfiguration imapConfiguration) { return !imapConfiguration.isCondstoreEnable() && !disabledCaps.contains(SUPPORTS_CONDSTORE); }
@Override public void configure(ImapConfiguration imapConfiguration) { super.configure(imapConfiguration); disabledCaps.addAll(imapConfiguration.getDisabledCaps()); if (shouldDisableCondstore(imapConfiguration)) { disabledCaps.add(SUPPORTS_CONDSTORE); } }
@Test public void disabledCapsShouldReturnMultipleSetValues() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .disabledCaps(ImmutableSet.of("AnyValue", "OtherValue")) .build(); assertThat(imapConfiguration.getDisabledCaps()).containsExactly("AnyValue", "OtherValue"); }
@Test public void isCondstoreEnableShouldBeTrueWhenValueIsTrue() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .isCondstoreEnable(true) .build(); assertThat(imapConfiguration.isCondstoreEnable()).isTrue(); }
@Test public void condstoreShouldBeDisableByDefault() throws Exception { system.configure(ImapConfiguration.builder().build()); simpleScriptedTestProtocol.run("CondstoreDisable"); }
@Test public void millisecondsShouldReturnSetValue() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .idleTimeIntervalUnit(TimeUnit.MINUTES) .build(); assertThat(imapConfiguration.getIdleTimeIntervalUnit()).isEqualTo(TimeUnit.MINUTES); }
@Test public void idleKeepAliveShouldReturnSetValue() { long idleValue = 1; ImapConfiguration imapConfiguration = ImapConfiguration.builder() .idleTimeInterval(idleValue) .build(); assertThat(imapConfiguration.getIdleTimeInterval()).isEqualTo(idleValue); }
@Test public void idleShouldBeDisable() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .enableIdle(false) .build(); assertThat(imapConfiguration.isEnableIdle()).isFalse(); }
@Test public void disabledCapsShouldReturnMultipleSetValuesWithNormalizeValue() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .disabledCaps(ImmutableSet.of(" AnyValue ", " OtherValue ")) .build(); assertThat(imapConfiguration.getDisabledCaps()).containsExactly("AnyValue", "OtherValue"); }
@Test public void isCondstoreEnableShouldBeFalseWhenValueIsFalse() { ImapConfiguration imapConfiguration = ImapConfiguration.builder() .isCondstoreEnable(false) .build(); assertThat(imapConfiguration.isCondstoreEnable()).isFalse(); } }
@Test public void condstoreShouldBeDisableWhenGivenAndFalse() throws Exception { system.configure(ImapConfiguration.builder().isCondstoreEnable(false).build()); simpleScriptedTestProtocol.run("CondstoreDisable"); }