JAMES-2015 Improve DNSService and InMemoryDnsService API
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d174d5ed Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d174d5ed Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d174d5ed Branch: refs/heads/master Commit: d174d5ed1588c58217634e7e03047bcba45ab13d Parents: 787b759 Author: Luc DUZAN <[email protected]> Authored: Fri May 5 14:39:47 2017 +0200 Committer: benwa <[email protected]> Committed: Wed May 17 15:09:07 2017 +0700 ---------------------------------------------------------------------- .../apache/james/mpt/smtp/ForwardSmtpTest.java | 2 +- .../james/domainlist/xml/XMLDomainListTest.java | 6 +++-- .../domainlist/lib/AbstractDomainList.java | 3 ++- .../domainlist/lib/AbstractDomainListTest.java | 9 +++++-- .../apache/james/dnsservice/api/DNSService.java | 2 +- .../dnsservice/api/InMemoryDNSService.java | 25 +++++++++++--------- .../dnsservice/api/AbstractDNSServiceTest.java | 6 +++-- .../james/dnsservice/api/mock/DNSFixture.java | 10 ++++---- .../dnsservice/api/mock/MockDNSService.java | 2 +- .../dnsservice/dnsjava/DNSJavaService.java | 9 +++---- .../library/MXHostAddressIterator.java | 10 ++++---- .../library/MXHostAddressIteratorTest.java | 8 ++++--- .../apache/james/smtpserver/SMTPServerTest.java | 5 ++-- 13 files changed, 59 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java ---------------------------------------------------------------------- diff --git a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java index 293e364..06b632f 100644 --- a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java +++ b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java @@ -69,7 +69,7 @@ public class ForwardSmtpTest extends AbstractSimpleScriptedTestProtocol { super.setUp(); InetAddress containerIp = InetAddresses.forString(fakeSmtp.getIp()); hostSystem.getInMemoryDnsService() - .registerRecord("yopmail.com", new InetAddress[]{containerIp}, ImmutableList.of("yopmail.com"), ImmutableList.of()); + .registerRecord("yopmail.com", containerIp, "yopmail.com"); hostSystem.addAddressMapping(USER, DOMAIN, "[email protected]"); RestAssured.requestSpecification = new RequestSpecBuilder() http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/data/data-file/src/test/java/org/apache/james/domainlist/xml/XMLDomainListTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-file/src/test/java/org/apache/james/domainlist/xml/XMLDomainListTest.java b/server/data/data-file/src/test/java/org/apache/james/domainlist/xml/XMLDomainListTest.java index d8412a8..68e5363 100644 --- a/server/data/data-file/src/test/java/org/apache/james/domainlist/xml/XMLDomainListTest.java +++ b/server/data/data-file/src/test/java/org/apache/james/domainlist/xml/XMLDomainListTest.java @@ -23,8 +23,10 @@ import static org.assertj.core.api.Assertions.assertThat; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import com.google.common.collect.ImmutableList; import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.dnsservice.api.DNSService; @@ -61,8 +63,8 @@ public class XMLDomainListTest { } @Override - public InetAddress[] getAllByName(String name) throws UnknownHostException { - return new InetAddress[]{InetAddress.getByName("127.0.0.1")}; + public Collection<InetAddress> getAllByName(String name) throws UnknownHostException { + return ImmutableList.of(InetAddress.getByName("127.0.0.1")); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/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 c84e836..689d35c 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.Collection; import java.util.List; import java.util.Locale; @@ -178,7 +179,7 @@ public abstract class AbstractDomainList implements DomainList, LogEnabled, Conf private static List<String> getDomainIP(String domain, DNSService dns, Logger log) { List<String> domainIP = new ArrayList<String>(); try { - InetAddress[] addrs = dns.getAllByName(domain); + Collection<InetAddress> addrs = dns.getAllByName(domain); for (InetAddress addr : addrs) { String ip = addr.getHostAddress(); if (!domainIP.contains(ip)) { http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java index 31320f2..532ac02 100644 --- a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java @@ -23,6 +23,9 @@ import static org.junit.Assert.fail; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.Collection; + +import com.google.common.collect.ImmutableList; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.mock.MockDNSService; import org.apache.james.domainlist.api.DomainList; @@ -31,6 +34,8 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import javax.management.ImmutableDescriptor; + public abstract class AbstractDomainListTest { private final String DOMAIN_1 = "domain1.tld"; @@ -181,8 +186,8 @@ public abstract class AbstractDomainListTest { } @Override - public InetAddress[] getAllByName(String name) throws UnknownHostException { - return new InetAddress[]{InetAddress.getByName("127.0.0.1")}; + public Collection<InetAddress> getAllByName(String name) throws UnknownHostException { + return ImmutableList.of(InetAddress.getByName("127.0.0.1")); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/DNSService.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/DNSService.java b/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/DNSService.java index 1902367..c307f0a 100644 --- a/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/DNSService.java +++ b/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/DNSService.java @@ -66,7 +66,7 @@ public interface DNSService { * * @return An array of InetAddress */ - InetAddress[] getAllByName(String host) throws UnknownHostException; + Collection<InetAddress> getAllByName(String host) throws UnknownHostException; /** * Resolve the given hostname to an InetAddress based on the DNS Server. It http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/InMemoryDNSService.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/InMemoryDNSService.java b/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/InMemoryDNSService.java index 2622d63..16085d3 100644 --- a/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/InMemoryDNSService.java +++ b/server/dns-service/dnsservice-api/src/main/java/org/apache/james/dnsservice/api/InMemoryDNSService.java @@ -44,14 +44,19 @@ public class InMemoryDNSService implements DNSService { private DNSRecord dnsRecordFor(InetAddress addresses) { Collection<String> emptyList = ImmutableList.of(); - return dnsRecordFor(emptyList, emptyList, addresses); + return dnsRecordFor(emptyList, emptyList, ImmutableList.of(addresses)); } - private DNSRecord dnsRecordFor(Collection<String> mxRecords, Collection<String> txtRecords, InetAddress... addresses) { + private DNSRecord dnsRecordFor(Collection<String> mxRecords, Collection<String> txtRecords, List<InetAddress> addresses) { return new DNSRecord(addresses, mxRecords, txtRecords); } - public void registerRecord(String hostname, InetAddress[] addresses,Collection<String> mxRecords, Collection<String> txtRecords ){ + public void registerRecord(String hostname, InetAddress address, String mxRecord) { + Collection<String> emptyTxtRecords = ImmutableList.of(); + registerRecord(hostname, ImmutableList.of(address), ImmutableList.of(mxRecord), emptyTxtRecords); + } + + public void registerRecord(String hostname, List<InetAddress> addresses, Collection<String> mxRecords, Collection<String> txtRecords ){ records.put(hostname, dnsRecordFor(mxRecords, txtRecords, addresses)); } @@ -70,13 +75,13 @@ public class InMemoryDNSService implements DNSService { } @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { + public List<InetAddress> getAllByName(String host) throws UnknownHostException { return hostRecord(host).addresses; } @Override public InetAddress getByName(String host) throws UnknownHostException { - return hostRecord(host).addresses[0]; + return hostRecord(host).addresses.get(0); } private DNSRecord hostRecord(final String host) { @@ -115,20 +120,18 @@ public class InMemoryDNSService implements DNSService { private static class DNSRecord { - final InetAddress[] addresses; final Collection<String> mxRecords; final Collection<String> txtRecords; - private final List<InetAddress> addressList; + private final List<InetAddress> addresses; - public DNSRecord(InetAddress[] adresses, Collection<String> mxRecords, Collection<String> txtRecords) { - this.addresses = adresses; + public DNSRecord(List<InetAddress> addresses, Collection<String> mxRecords, Collection<String> txtRecords) { + this.addresses = addresses; this.mxRecords = mxRecords; this.txtRecords = txtRecords; - this.addressList = ImmutableList.copyOf(addresses); } public boolean contains(InetAddress address){ - return addressList.contains(address); + return addresses.contains(address); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/AbstractDNSServiceTest.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/AbstractDNSServiceTest.java b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/AbstractDNSServiceTest.java index 1dabbd6..1748064 100644 --- a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/AbstractDNSServiceTest.java +++ b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/AbstractDNSServiceTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.dnsservice.api; +import com.google.common.collect.ImmutableList; import org.apache.james.dnsservice.api.mock.MockDNSService; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -26,6 +27,7 @@ import org.junit.Test; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.Collection; /** * Basic tests for AbstractDNSServer. The goal is to verify that the interface @@ -44,8 +46,8 @@ public class AbstractDNSServiceTest { } @Override - public InetAddress[] getAllByName(String name) throws UnknownHostException { - return InetAddress.getAllByName(name); + public Collection<InetAddress> getAllByName(String name) throws UnknownHostException { + return ImmutableList.copyOf(InetAddress.getAllByName(name)); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/DNSFixture.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/DNSFixture.java b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/DNSFixture.java index db986a2..91fbf3e 100644 --- a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/DNSFixture.java +++ b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/DNSFixture.java @@ -20,7 +20,9 @@ package org.apache.james.dnsservice.api.mock; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.Collection; +import com.google.common.collect.ImmutableList; import org.apache.james.dnsservice.api.DNSService; /** @@ -52,8 +54,8 @@ public class DNSFixture { } @Override - public InetAddress[] getAllByName(String name) throws UnknownHostException { - return new InetAddress[]{InetAddress.getByName("127.0.0.1")}; + public Collection<InetAddress> getAllByName(String name) throws UnknownHostException { + return ImmutableList.of(InetAddress.getByName("127.0.0.1")); } @Override @@ -77,8 +79,8 @@ public class DNSFixture { } @Override - public InetAddress[] getAllByName(String name) throws UnknownHostException { - return new InetAddress[]{InetAddress.getByName("::1")}; + public Collection<InetAddress> getAllByName(String name) throws UnknownHostException { + return ImmutableList.of(InetAddress.getByName("::1")); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/MockDNSService.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/MockDNSService.java b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/MockDNSService.java index 382985a..5f30924 100644 --- a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/MockDNSService.java +++ b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/mock/MockDNSService.java @@ -49,7 +49,7 @@ public class MockDNSService implements DNSService { * @see org.apache.james.dnsservice.api.DNSService#getAllByName(String) */ @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { + public Collection<InetAddress> getAllByName(String host) throws UnknownHostException { throw new UnsupportedOperationException("Unimplemented Stub Method"); } http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-dnsjava/src/main/java/org/apache/james/dnsservice/dnsjava/DNSJavaService.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-dnsjava/src/main/java/org/apache/james/dnsservice/dnsjava/DNSJavaService.java b/server/dns-service/dnsservice-dnsjava/src/main/java/org/apache/james/dnsservice/dnsjava/DNSJavaService.java index 80b4703..766dde2 100644 --- a/server/dns-service/dnsservice-dnsjava/src/main/java/org/apache/james/dnsservice/dnsjava/DNSJavaService.java +++ b/server/dns-service/dnsservice-dnsjava/src/main/java/org/apache/james/dnsservice/dnsjava/DNSJavaService.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.dnsservice.dnsjava; +import com.google.common.collect.ImmutableList; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.dnsservice.api.DNSService; @@ -461,17 +462,17 @@ public class DNSJavaService implements DNSService, DNSServiceMBean, LogEnabled, } @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { + public Collection<InetAddress> getAllByName(String host) throws UnknownHostException { TimeMetric timeMetric = metricFactory.timer("getAllByName"); String name = allowIPLiteral(host); try { // Check if its local if (name.equalsIgnoreCase(localHostName) || name.equalsIgnoreCase(localCanonicalHostName) || name.equals(localAddress)) { - return new InetAddress[]{getLocalHost()}; + return ImmutableList.of(getLocalHost()); } InetAddress addr = org.xbill.DNS.Address.getByAddress(name); - return new InetAddress[]{addr}; + return ImmutableList.of(addr); } catch (UnknownHostException e) { Record[] records = lookupNoException(name, Type.A, "A"); @@ -481,7 +482,7 @@ public class DNSJavaService implements DNSService, DNSServiceMBean, LogEnabled, ARecord a = (ARecord) records[i]; addrs[i] = InetAddress.getByAddress(name, a.getAddress().getAddress()); } - return addrs; + return ImmutableList.copyOf(addrs); } else throw e; } finally { http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/MXHostAddressIterator.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/MXHostAddressIterator.java b/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/MXHostAddressIterator.java index 1123925..c91847c 100644 --- a/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/MXHostAddressIterator.java +++ b/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/MXHostAddressIterator.java @@ -22,10 +22,12 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; +import com.google.common.collect.ImmutableList; import org.apache.james.dnsservice.api.DNSService; import org.apache.mailet.HostAddress; import org.slf4j.Logger; @@ -42,7 +44,7 @@ import com.google.common.collect.Maps; public class MXHostAddressIterator implements Iterator<HostAddress> { private final Iterator<HostAddress> addresses; - + public MXHostAddressIterator(Iterator<String> hosts, DNSService dns, boolean useSingleIP, Logger logger) { this(hosts, 25, dns, useSingleIP, logger); } @@ -57,15 +59,15 @@ public class MXHostAddressIterator implements Iterator<HostAddress> { Map.Entry<String, String> hostAndPort = extractHostAndPort(nextHostname, defaultPort); try { - final InetAddress[] addrs; + final Collection<InetAddress> addrs; if (useSingleIP) { - addrs = new InetAddress[]{dns.getByName(hostAndPort.getKey())}; + addrs = ImmutableList.of(dns.getByName(hostAndPort.getKey())); } else { addrs = dns.getAllByName(hostAndPort.getKey()); } for (InetAddress addr : addrs) { hAddresses.add(new HostAddress(hostAndPort.getKey(), - "smtp://" + addr.getHostAddress() + ":" + hostAndPort.getValue())); + "smtp://" + addr.getHostAddress() + ":" + hostAndPort.getValue())); } } catch (UnknownHostException uhe) { // this should never happen, since we just got http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/dns-service/dnsservice-library/src/test/java/org/apache/james/dnsservice/library/MXHostAddressIteratorTest.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-library/src/test/java/org/apache/james/dnsservice/library/MXHostAddressIteratorTest.java b/server/dns-service/dnsservice-library/src/test/java/org/apache/james/dnsservice/library/MXHostAddressIteratorTest.java index fc557ab..d162de3 100644 --- a/server/dns-service/dnsservice-library/src/test/java/org/apache/james/dnsservice/library/MXHostAddressIteratorTest.java +++ b/server/dns-service/dnsservice-library/src/test/java/org/apache/james/dnsservice/library/MXHostAddressIteratorTest.java @@ -22,6 +22,8 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Arrays; import java.util.Collection; + +import com.google.common.collect.ImmutableList; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.TemporaryResolutionException; import static org.junit.Assert.*; @@ -56,9 +58,9 @@ public class MXHostAddressIteratorTest { * Every time this method is called it will return two InetAddress instances */ @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { + public Collection<InetAddress> getAllByName(String host) throws UnknownHostException { InetAddress addr = InetAddress.getLocalHost(); - return new InetAddress[]{addr, addr}; + return ImmutableList.of(addr, addr); } @Override @@ -111,7 +113,7 @@ public class MXHostAddressIteratorTest { * Every time this method is called it will return two InetAddress instances */ @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { + public Collection<InetAddress> getAllByName(String host) throws UnknownHostException { throw new UnknownHostException(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/d174d5ed/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java index 387db29..40afa1c 100644 --- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java +++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java @@ -42,6 +42,7 @@ import java.util.Map; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; +import com.google.common.collect.ImmutableList; import org.apache.commons.net.ProtocolCommandEvent; import org.apache.commons.net.ProtocolCommandListener; import org.apache.commons.net.smtp.SMTPClient; @@ -101,8 +102,8 @@ public class SMTPServerTest { } @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { - return new InetAddress[]{getByName(host)}; + public Collection<InetAddress> getAllByName(String host) throws UnknownHostException { + return ImmutableList.of(getByName(host)); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
