Skip to content

Commit e1fafb9

Browse files
committed
! fix "identical-code" issue in InetAddressCacheUtilForJava* #63
1 parent 9898cdf commit e1fafb9

File tree

3 files changed

+23
-22
lines changed

3 files changed

+23
-22
lines changed

library/src/main/java/com/alibaba/dcm/internal/InetAddressCacheUtilCommons.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import sun.net.InetAddressCachePolicy;
44

5+
import javax.annotation.Nonnull;
6+
import javax.annotation.Nullable;
57
import java.lang.reflect.Field;
68
import java.net.InetAddress;
79
import java.net.UnknownHostException;
@@ -30,6 +32,17 @@ static InetAddress[] toInetAddressArray(String host, String[] ips) throws Unknow
3032
return addresses;
3133
}
3234

35+
@Nonnull
36+
static String[] getIpFromInetAddress(@Nullable InetAddress[] inetAddresses) {
37+
if (inetAddresses == null) return new String[0];
38+
39+
final String[] ips = new String[inetAddresses.length];
40+
for (int i = 0; i < inetAddresses.length; i++) {
41+
ips[i] = inetAddresses[i].getHostAddress();
42+
}
43+
return ips;
44+
}
45+
3346
/**
3447
* Set JVM DNS cache policy.
3548
*

library/src/main/java/com/alibaba/dcm/internal/InetAddressCacheUtilForJava8Minus.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
import java.util.List;
1616
import java.util.Map;
1717

18-
import static com.alibaba.dcm.internal.InetAddressCacheUtilCommons.NEVER_EXPIRATION;
19-
import static com.alibaba.dcm.internal.InetAddressCacheUtilCommons.toInetAddressArray;
18+
import static com.alibaba.dcm.internal.InetAddressCacheUtilCommons.*;
2019

2120
/**
2221
* Util class to manipulate dns cache for {@code JDK 8-}.
@@ -271,13 +270,11 @@ private static List<DnsCacheEntry> convert(Map<String, Object> cache) throws Ill
271270
}
272271
}
273272

274-
long expiration = expirationFieldOfInetAddress$CacheEntry.getLong(entry);
275-
InetAddress[] addresses = (InetAddress[]) addressesFieldOfInetAddress$CacheEntry.get(entry);
273+
final long expiration = expirationFieldOfInetAddress$CacheEntry.getLong(entry);
274+
275+
final InetAddress[] addresses = (InetAddress[]) addressesFieldOfInetAddress$CacheEntry.get(entry);
276+
final String[] ips = getIpFromInetAddress(addresses);
276277

277-
String[] ips = new String[addresses.length];
278-
for (int i = 0; i < addresses.length; i++) {
279-
ips[i] = addresses[i].getHostAddress();
280-
}
281278
return new DnsCacheEntry(host, ips, expiration);
282279
}
283280

library/src/main/java/com/alibaba/dcm/internal/InetAddressCacheUtilForJava9Plus.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
import java.util.concurrent.ConcurrentMap;
1717
import java.util.concurrent.ConcurrentSkipListSet;
1818

19-
import static com.alibaba.dcm.internal.InetAddressCacheUtilCommons.NEVER_EXPIRATION;
20-
import static com.alibaba.dcm.internal.InetAddressCacheUtilCommons.toInetAddressArray;
19+
import static com.alibaba.dcm.internal.InetAddressCacheUtilCommons.*;
2120
import static com.alibaba.dcm.internal.TimeUtil.convertNanoTimeToTimeMillis;
2221
import static com.alibaba.dcm.internal.TimeUtil.getNanoTimeAfterMs;
2322

@@ -272,32 +271,24 @@ public static DnsCache listInetAddressCache()
272271
}
273272
}
274273

275-
final InetAddress[] inetAddressArray;
274+
final InetAddress[] inetAddresses;
276275
final long expiration;
277276
if (addressesClassName.equals(inetAddress$CachedAddresses_ClassName)) {
278-
inetAddressArray = (InetAddress[]) inetAddressesFieldOfInetAddress$CacheAddress.get(addresses);
277+
inetAddresses = (InetAddress[]) inetAddressesFieldOfInetAddress$CacheAddress.get(addresses);
279278

280279
long expiryTimeNanos = expiryTimeFieldOfInetAddress$CacheAddress.getLong(addresses);
281280
expiration = convertNanoTimeToTimeMillis(expiryTimeNanos);
282281
} else if (addressesClassName.equals(inetAddress$NameServiceAddresses_ClassName)) {
283282
InetAddress inetAddress = (InetAddress) reqAddrFieldOfInetAddress$NameServiceAddress.get(addresses);
284-
inetAddressArray = new InetAddress[]{inetAddress};
283+
inetAddresses = new InetAddress[]{inetAddress};
285284

286285
expiration = NEVER_EXPIRATION;
287286
} else {
288287
throw new IllegalStateException("JDK add new child class " + addressesClassName +
289288
" for class InetAddress.Addresses, report issue for dns-cache-manipulator lib!");
290289
}
291290

292-
final String[] ips;
293-
if (inetAddressArray == null) {
294-
ips = new String[0];
295-
} else {
296-
ips = new String[inetAddressArray.length];
297-
for (int i = 0; i < inetAddressArray.length; i++) {
298-
ips[i] = inetAddressArray[i].getHostAddress();
299-
}
300-
}
291+
final String[] ips = getIpFromInetAddress(inetAddresses);
301292

302293
return new DnsCacheEntry(host, ips, expiration);
303294
}

0 commit comments

Comments
 (0)