Home / Class/ DnsServerAddressStreamProviders Class — netty Architecture

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() {

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