Example #1
0
  @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;
  }
Example #2
0
 @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;
 }