@Override public Address getSingleAddress( AddressType t, Collection<Address> addresses, Location whoIsAsking) { if (addresses == null || addresses.size() == 0) { return null; } for (DnsProvider p : getProviders()) { Address rewrite = p.getAddress(this, t, addresses, whoIsAsking); if (rewrite != null) { return rewrite; } } Iterator<Address> i = addresses.iterator(); Address first = i.next(); if (addresses.size() == 1 || whoIsAsking == null) { return first; } // return the address local to who is asking if available Address a = first; while (a != null) { if (a.getAddress().equals(whoIsAsking.getAddress())) { return a; } a = (i.hasNext() ? i.next() : null); } // first is as good as any other return first; }
@Override public List<ResourceRecords> getResourceRecords(Location whoIsAsking) { List<ResourceRecords> rrs = new ArrayList<ResourceRecords>(); for (DnsProvider p : getProviders()) { List<ResourceRecords> rRecords = p.getResourceRecords(this, whoIsAsking); if (rRecords != null) { rrs.addAll(rRecords); } } return rrs; }