8282917: Remove InetAddressImplFactory from InetAddress

Reviewed-by: dfuchs, jpai
This commit is contained in:
Aleksei Efimov 2022-03-24 13:50:50 +00:00
parent 14c20bc0e0
commit 929b6a3556
4 changed files with 17 additions and 107 deletions

View file

@ -412,6 +412,9 @@ public sealed class InetAddress implements Serializable permits Inet4Address, In
// Native method to check if IPv4 is available
private static native boolean isIPv4Available();
// Native method to check if IPv6 is available
private static native boolean isIPv6Supported();
/**
* The {@code RuntimePermission("inetAddressResolverProvider")} is
* necessary to subclass and instantiate the {@code InetAddressResolverProvider}
@ -1270,7 +1273,8 @@ public sealed class InetAddress implements Serializable permits Inet4Address, In
static {
// create the impl
impl = InetAddressImplFactory.create();
impl = isIPv6Supported() ?
new Inet6AddressImpl() : new Inet4AddressImpl();
// impl must be initialized before calling this method
PLATFORM_LOOKUP_POLICY = initializePlatformLookupPolicy();
@ -1826,16 +1830,3 @@ public sealed class InetAddress implements Serializable permits Inet4Address, In
s.writeFields();
}
}
/*
* Simple factory to create the impl
*/
class InetAddressImplFactory {
static InetAddressImpl create() {
return isIPv6Supported() ?
new Inet6AddressImpl() : new Inet4AddressImpl();
}
static native boolean isIPv6Supported();
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -76,8 +76,19 @@ Java_java_net_InetAddress_init(JNIEnv *env, jclass cls) {
/*
* Class: java_net_InetAddress
* Method: isIPv4Available
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL
Java_java_net_InetAddress_isIPv4Available(JNIEnv *env, jclass clazz) {
return ipv4_available();
}
/*
* Class: java_net_InetAddress
* Method: isIPv6Supported
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL
Java_java_net_InetAddress_isIPv6Supported(JNIEnv *env, jclass clazz) {
return ipv6_available();
}