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

Reply via email to