private CloudSqlInstanceName resolveDomainName()

in core/src/main/java/com/google/cloud/sql/core/DnsInstanceConnectionNameResolver.java [59:96]


  private CloudSqlInstanceName resolveDomainName(String name) {
    // Next, attempt to resolve DNS name.
    Collection<String> instanceNames;
    try {
      instanceNames = this.dnsResolver.resolveTxt(name);
    } catch (NameNotFoundException ne) {
      // No DNS record found. This is not a valid instance name.
      throw new IllegalArgumentException(
          String.format(
              "Unable to resolve TXT record containing the instance name for "
                  + "domain name \"%s\".",
              name));
    }

    // Use the first valid instance name from the list
    // or throw an IllegalArgumentException if none of the values can be parsed.
    return instanceNames.stream()
        .map(
            target -> {
              try {
                return new CloudSqlInstanceName(target, name);
              } catch (IllegalArgumentException e) {
                logger.info(
                    "Unable to parse instance name in TXT record for "
                        + "domain name \"{}\" with target \"{}\"",
                    name,
                    target,
                    e);
                return null;
              }
            })
        .filter(Objects::nonNull)
        .findFirst()
        .orElseThrow(
            () ->
                new IllegalArgumentException(
                    String.format("Unable to parse values of TXT record for \"%s\".", name)));
  }