in library/src/main/java/com/alibaba/dcm/internal/InetAddressCacheUtilForNew.java [238:265]
private static DnsCacheEntry inetAddress$Addresses2DnsCacheEntry(String host, Object addresses)
throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException {
final String addressesClassName = addresses.getClass().getName();
initFieldsOfAddresses();
final InetAddress[] inetAddresses;
final long expiration;
if (addressesClassName.equals(inetAddress$CachedAddresses_ClassName)
// jdk 21 support
|| addressesClassName.equals(inetAddress$CachedLookup_ClassName)) {
inetAddresses = (InetAddress[]) inetAddressesFieldOfInetAddress$CacheAddress.get(addresses);
long expiryTimeNanos = expiryTimeFieldOfInetAddress$CacheAddress.getLong(addresses);
expiration = convertNanoTimeToTimeMillis(expiryTimeNanos);
} else if (addressesClassName.equals(inetAddress$NameServiceAddresses_ClassName)) {
throw new IllegalStateException("child class " + addressesClassName +
" for class InetAddress.Addresses should never happens, report issue for dns-cache-manipulator lib!");
} else {
throw new IllegalStateException("JDK add new child class " + addressesClassName +
" for class InetAddress.Addresses, report issue for dns-cache-manipulator lib!");
}
final String[] ips = getIpFromInetAddress(inetAddresses);
return new DnsCacheEntry(host, ips, expiration);
}