DnsServerAddressStreamProviders Class — netty Architecture
Architecture documentation for the DnsServerAddressStreamProviders class in DnsServerAddressStreamProviders.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 6061e093_af14_f18f_d7e0_a66c27bc8d1e["DnsServerAddressStreamProviders"] 841bd276_7a3d_95ef_f1a5_2a8adc12866f["DnsServerAddressStreamProviders.java"] 6061e093_af14_f18f_d7e0_a66c27bc8d1e -->|defined in| 841bd276_7a3d_95ef_f1a5_2a8adc12866f 03af8d59_e95d_409f_dd95_82112234895d["DnsServerAddressStreamProviders()"] 6061e093_af14_f18f_d7e0_a66c27bc8d1e -->|method| 03af8d59_e95d_409f_dd95_82112234895d 8130c896_ce75_3946_1597_4ffe9f8c8cda["DnsServerAddressStreamProvider()"] 6061e093_af14_f18f_d7e0_a66c27bc8d1e -->|method| 8130c896_ce75_3946_1597_4ffe9f8c8cda
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/DnsServerAddressStreamProviders.java lines 32–151
public final class DnsServerAddressStreamProviders {
private static final InternalLogger LOGGER =
InternalLoggerFactory.getInstance(DnsServerAddressStreamProviders.class);
private static final Constructor<? extends DnsServerAddressStreamProvider> STREAM_PROVIDER_CONSTRUCTOR;
private static final String MACOS_PROVIDER_CLASS_NAME =
"io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider";
static {
Constructor<? extends DnsServerAddressStreamProvider> constructor = null;
if (PlatformDependent.isOsx()) {
try {
// As MacOSDnsServerAddressStreamProvider is contained in another jar which depends on this jar
// we use reflection to use it if its on the classpath.
Object maybeProvider = AccessController.doPrivileged(new PrivilegedAction<Object>() {
@Override
public Object run() {
try {
return Class.forName(
MACOS_PROVIDER_CLASS_NAME,
true,
DnsServerAddressStreamProviders.class.getClassLoader());
} catch (Throwable cause) {
return cause;
}
}
});
if (maybeProvider instanceof Class) {
@SuppressWarnings("unchecked")
Class<? extends DnsServerAddressStreamProvider> providerClass =
(Class<? extends DnsServerAddressStreamProvider>) maybeProvider;
constructor = providerClass.getConstructor();
constructor.newInstance(); // ctor ensures availability
LOGGER.debug("{}: available", MACOS_PROVIDER_CLASS_NAME);
} else {
throw (Throwable) maybeProvider;
}
} catch (ClassNotFoundException cause) {
LOGGER.warn("Can not find {} in the classpath, fallback to system defaults. This may result in "
+ "incorrect DNS resolutions on MacOS. Check whether you have a dependency on "
+ "'io.netty:netty-resolver-dns-native-macos'", MACOS_PROVIDER_CLASS_NAME);
} catch (Throwable cause) {
if (LOGGER.isDebugEnabled()) {
LOGGER.error("Unable to load {}, fallback to system defaults. This may result in "
+ "incorrect DNS resolutions on MacOS. Check whether you have a dependency on "
+ "'io.netty:netty-resolver-dns-native-macos'", MACOS_PROVIDER_CLASS_NAME, cause);
} else {
LOGGER.error("Unable to load {}, fallback to system defaults. This may result in "
+ "incorrect DNS resolutions on MacOS. Check whether you have a dependency on "
+ "'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: {}",
MACOS_PROVIDER_CLASS_NAME,
cause.getCause() != null ? cause.getCause().toString() : cause.toString());
}
constructor = null;
}
}
STREAM_PROVIDER_CONSTRUCTOR = constructor;
}
private DnsServerAddressStreamProviders() {
}
/**
* A {@link DnsServerAddressStreamProvider} which inherits the DNS servers from your local host's configuration.
* <p>
* Note that only macOS and Linux are currently supported.
* @return A {@link DnsServerAddressStreamProvider} which inherits the DNS servers from your local host's
* configuration.
*/
public static DnsServerAddressStreamProvider platformDefault() {
if (STREAM_PROVIDER_CONSTRUCTOR != null) {
try {
return STREAM_PROVIDER_CONSTRUCTOR.newInstance();
} catch (IllegalAccessException | InstantiationException | InvocationTargetException e) {
// ignore
}
}
return unixDefault();
}
public static DnsServerAddressStreamProvider unixDefault() {
Source
Frequently Asked Questions
What is the DnsServerAddressStreamProviders class?
DnsServerAddressStreamProviders is a class in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsServerAddressStreamProviders.java.
Where is DnsServerAddressStreamProviders defined?
DnsServerAddressStreamProviders is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsServerAddressStreamProviders.java at line 32.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free