JAMES-1589 Add domains mentioned in configuration upon start
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5edfac13 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5edfac13 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5edfac13 Branch: refs/heads/master Commit: 5edfac13b71af385fab4b8220d1a02494790c7de Parents: 6e36b22 Author: benwa <btell...@linagora.com> Authored: Fri Jul 28 18:07:44 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Tue Aug 8 17:08:50 2017 +0700 ---------------------------------------------------------------------- .../james/domainlist/xml/XMLDomainList.java | 13 ------------- .../james/domainlist/lib/AbstractDomainList.java | 18 ++++++++++++++++++ .../lib/AbstractDomainListPrivateMethodsTest.java | 15 +++++++++++++++ 3 files changed, 33 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5edfac13/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java ---------------------------------------------------------------------- diff --git a/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java b/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java index 813f521..c73590b 100644 --- a/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java +++ b/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java @@ -51,13 +51,6 @@ public class XMLDomainList extends AbstractDomainList implements Configurable { @Override public void configure(HierarchicalConfiguration config) throws ConfigurationException { super.configure(config); - for (String serverNameConf : config.getStringArray("domainnames.domainname")) { - try { - addToServedDomains(serverNameConf); - } catch (DomainListException e) { - throw new ConfigurationException("Unable to add domain to memory", e); - } - } isConfigured = true; } @@ -87,10 +80,4 @@ public class XMLDomainList extends AbstractDomainList implements Configurable { domainNames.remove(domain); } - private void addToServedDomains(String domain) throws DomainListException { - String newDomain = domain.toLowerCase(Locale.US); - if (!containsDomain(newDomain)) { - domainNames.add(newDomain); - } - } } http://git-wip-us.apache.org/repos/asf/james-project/blob/5edfac13/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java index c08abbe..62c4f09 100644 --- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java +++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java @@ -22,6 +22,7 @@ package org.apache.james.domainlist.lib; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Locale; @@ -55,6 +56,7 @@ public abstract class AbstractDomainList implements DomainList, LogEnabled, Conf public static final String CONFIGURE_AUTODETECT = "autodetect"; public static final String CONFIGURE_AUTODETECT_IP = "autodetectIP"; public static final String CONFIGURE_DEFAULT_DOMAIN = "defaultDomain"; + public static final String CONFIGURE_DOMAIN_NAMES = "domainnames.domainname"; public static final String ENV_DOMAIN = "DOMAIN"; private final DNSService dns; @@ -83,11 +85,27 @@ public abstract class AbstractDomainList implements DomainList, LogEnabled, Conf configureDefaultDomain(config); addEnvDomain(); + addConfiguredDomains(config); setAutoDetect(config.getBoolean(CONFIGURE_AUTODETECT, true)); setAutoDetectIP(config.getBoolean(CONFIGURE_AUTODETECT_IP, true)); } + protected void addConfiguredDomains(HierarchicalConfiguration config) { + String[] configuredDomainNames = config.getStringArray(CONFIGURE_DOMAIN_NAMES); + try { + if (configuredDomainNames != null) { + for (String domain : Arrays.asList(configuredDomainNames)) { + if (!containsDomainInternal(domain)) { + addDomain(domain.toLowerCase(Locale.US)); + } + } + } + } catch (DomainListException e) { + throw Throwables.propagate(e); + } + } + private void addEnvDomain() { String envDomain = envDetector.getEnv(ENV_DOMAIN); if (!Strings.isNullOrEmpty(envDomain)) { http://git-wip-us.apache.org/repos/asf/james-project/blob/5edfac13/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java index 9f6de93..86137dc 100644 --- a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import java.net.InetAddress; +import java.util.Arrays; import java.util.List; import org.apache.commons.configuration.HierarchicalConfiguration; @@ -330,4 +331,18 @@ public class AbstractDomainListPrivateMethodsTest { assertThat(domainList.containsDomain(envDomain)).isTrue(); } + @Test + public void configuredDomainShouldBeAddedUponConfiguration() throws Exception { + String[] configuredDomain = new String[] {"conf1.tld", "conf2.tld"}; + + HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); + when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, true)).thenReturn(true); + when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, true)).thenReturn(false); + when(configuration.getStringArray(AbstractDomainList.CONFIGURE_DOMAIN_NAMES)).thenReturn(configuredDomain); + domainList.configure(configuration); + + assertThat(domainList.getDomains()) + .containsOnlyElementsOf(Arrays.asList(configuredDomain)); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org