X-Git-Url: https://gerrit.onap.org/r/gitweb?p=aaf%2Fauthz.git;a=blobdiff_plain;f=cadi%2Fclient%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Flocator%2FDNSLocator.java;h=53782b3469db499e8e6931e85adb1a2d609a4c0d;hp=c0b9f375f79689e1a30a34a73883b0c9a13ec23d;hb=3ca1b28f07f5a46fbeca439677a98245e50b69ea;hpb=deb396a3d53a84b2eb5a46d40122b4902d72c601 diff --git a/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java b/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java index c0b9f375..53782b34 100644 --- a/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java +++ b/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java @@ -23,8 +23,10 @@ package org.onap.aaf.cadi.locator; import java.io.IOException; import java.net.InetAddress; +//import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; +import java.net.UnknownHostException; import org.onap.aaf.cadi.Access; import org.onap.aaf.cadi.Access.Level; @@ -39,13 +41,21 @@ public class DNSLocator implements SizedLocator { private Host[] hosts; private int startPort, endPort; private String suffix; + // Added for JUnit Purposes. Force correct responses in odd situations on tests + private final DNSLookup dnsLookup; private int size = 1; // initial, until refreshed. public DNSLocator(Access access, String protocol, String host, String range) { + this(access, protocol, host, range, DNSLookup.dflt); + } + + public DNSLocator(Access access, String protocol, String host, String range, DNSLookup dnsLookup) { this.host = host; this.protocol = protocol; this.access = access; + this.dnsLookup = dnsLookup; + int dash = range.indexOf('-'); if (dash<0) { startPort = endPort = Integer.parseInt(range); @@ -57,7 +67,12 @@ public class DNSLocator implements SizedLocator { } public DNSLocator(Access access, String aaf_locate) throws LocatorException { + this(access, aaf_locate, DNSLookup.dflt); + } + + public DNSLocator(Access access, String aaf_locate, DNSLookup dnsLookup) throws LocatorException { this.access = access; + this.dnsLookup = dnsLookup; if (aaf_locate==null) { throw new LocatorException("Null passed into DNSLocator constructor"); } @@ -148,7 +163,7 @@ public class DNSLocator implements SizedLocator { @Override public boolean refresh() { try { - InetAddress[] ias = InetAddress.getAllByName(host); + InetAddress[] ias = dnsLookup.getAllByName(host); Host[] temp = new Host[ias.length * (1 + endPort - startPort)]; int cnt = -1; for (int j=startPort; j<=endPort; ++j) { @@ -214,7 +229,24 @@ public class DNSLocator implements SizedLocator { return host; } - + + /** + * + * Some ISPs return InetEntries for bogus entries, making JUnit Testing difficult. + * We add this interface to force validly empty responses. + * We don't use Lambda at this point, so we can continue to support JKD 1.7 + * a while longer. + * + */ + public interface DNSLookup { + InetAddress[] getAllByName(String host) throws UnknownHostException; + public static final DNSLookup dflt = new DNSLookup() { + public InetAddress[] getAllByName(String host) throws UnknownHostException { + return InetAddress.getAllByName(host); + } + }; + } + private class Host { private URI uri; private InetAddress ia;