List<Proxy> (@NotNull URI uri) { LOG.debug("IDEA-wide proxy selector asked for " + uri.toString()); String scheme = uri.getScheme(); if (!("http".equals(scheme) || "https".equals(scheme))) { LOG.debug("No proxy: not http/https scheme: " + scheme); return CommonProxy.NO_PROXY_LIST; } if (myHttpConfigurable.USE_HTTP_PROXY) { if (myHttpConfigurable.isProxyException(uri)) { LOG.debug("No proxy: URI '", uri, "' matches proxy exceptions [", myHttpConfigurable.PROXY_EXCEPTIONS, "]"); return CommonProxy.NO_PROXY_LIST; } if (myHttpConfigurable.PROXY_PORT < 0 || myHttpConfigurable.PROXY_PORT > 65535) { LOG.debug("No proxy: invalid port: " + myHttpConfigurable.PROXY_PORT); return CommonProxy.NO_PROXY_LIST; } Proxy.Type type = myHttpConfigurable.PROXY_TYPE_IS_SOCKS ? Proxy.Type.SOCKS : Proxy.Type.HTTP; Proxy proxy = new Proxy(type, new InetSocketAddress(myHttpConfigurable.PROXY_HOST, myHttpConfigurable.PROXY_PORT)); LOG.debug("Defined proxy: ", proxy); myHttpConfigurable.LAST_ERROR = null; return Collections.singletonList(proxy); } if (myHttpConfigurable.USE_PROXY_PAC) { // https://youtrack.jetbrains.com/issue/IDEA-262173 String oldDocumentBuilderFactory = System.setProperty(DOCUMENT_BUILDER_FACTORY_KEY, "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); try { return selectUsingPac(uri); } catch (Throwable e) { LOG.error("Cannot select using PAC", e); } finally { SystemProperties.setProperty(DOCUMENT_BUILDER_FACTORY_KEY, oldDocumentBuilderFactory); } } return CommonProxy.NO_PROXY_LIST; }