--- a/src/java.net.http/share/classes/java/net/http/HttpClient.java Sun Mar 11 13:50:18 2018 +0000
+++ b/src/java.net.http/share/classes/java/net/http/HttpClient.java Mon Mar 12 13:11:15 2018 +0000
@@ -358,7 +358,7 @@
* builder, then the {@code Optional} is empty.
*
* <p> Even though this method may return an empty optional, the {@code
- * HttpClient} may still have an non-exposed {@linkplain
+ * HttpClient} may still have a non-exposed {@linkplain
* Builder#proxy(ProxySelector) default proxy selector} that is
* used for sending HTTP requests.
*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/DefaultProxyDriver.java Mon Mar 12 13:11:15 2018 +0000
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @modules java.net.http/jdk.internal.net.http
+ * @summary Verifies that the HTTP Client, by default, uses the system-wide
+ * proxy selector, and that that selector supports the standard HTTP proxy
+ * system properties.
+ * @run testng/othervm
+ * -Dhttp.proxyHost=foo.proxy.com
+ * -Dhttp.proxyPort=9876
+ * -Dhttp.nonProxyHosts=*.direct.com
+ * -Dhttps.proxyHost=secure.proxy.com
+ * -Dhttps.proxyPort=5443
+ * java.net.http/jdk.internal.net.http.DefaultProxy
+ */
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/DefaultProxy.java Mon Mar 12 13:11:15 2018 +0000
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.internal.net.http;
+
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.net.ProxySelector;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.util.List;
+import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+
+public class DefaultProxy {
+
+ static ProxySelector getProxySelector() {
+ return (((HttpClientFacade)HttpClient.newHttpClient()).impl).proxySelector();
+ }
+
+ @Test
+ public void testDefault() {
+ ProxySelector ps = getProxySelector();
+ System.out.println("HttpClientImpl proxySelector:" + ps);
+ assertEquals(ps, ProxySelector.getDefault());
+ }
+
+ // From the test driver
+ // -Dhttp.proxyHost=foo.proxy.com
+ // -Dhttp.proxyPort=9876
+ // -Dhttp.nonProxyHosts=*.direct.com
+ @Test
+ public void testHttpProxyProps() {
+ ProxySelector ps = getProxySelector();
+
+ URI uri = URI.create("http://foo.com/example.html");
+ List<Proxy> plist = ps.select(uri);
+ System.out.println("proxy list for " + uri + " : " + plist);
+ assertEquals(plist.size(), 1);
+ Proxy proxy = plist.get(0);
+ assertEquals(proxy.type(), Proxy.Type.HTTP);
+ InetSocketAddress expectedAddr =
+ InetSocketAddress.createUnresolved("foo.proxy.com", 9876);
+ assertEquals(proxy.address(), expectedAddr);
+
+ // nonProxyHosts
+ uri = URI.create("http://foo.direct.com/example.html");
+ plist = ps.select(uri);
+ System.out.println("proxy list for " + uri + " : " + plist);
+ assertEquals(plist.size(), 1);
+ proxy = plist.get(0);
+ assertEquals(proxy.type(), Proxy.Type.DIRECT);
+ assertEquals(proxy.address(), null);
+ }
+
+ // From the test driver
+ // -Dhttp.proxyHost=secure.proxy.com
+ // -Dhttp.proxyPort=5443
+ @Test
+ public void testHttpsProxyProps() {
+ ProxySelector ps = getProxySelector();
+
+ URI uri = URI.create("https://foo.com/example.html");
+ List<Proxy> plist = ps.select(uri);
+ System.out.println("proxy list for " + uri + " : " + plist);
+ assertEquals(plist.size(), 1);
+ Proxy proxy = plist.get(0);
+ assertEquals(proxy.type(), Proxy.Type.HTTP);
+ InetSocketAddress expectedAddr =
+ InetSocketAddress.createUnresolved("secure.proxy.com", 5443);
+ assertEquals(proxy.address(), expectedAddr);
+
+ // nonProxyHosts
+ uri = URI.create("https://foo.direct.com/example.html");
+ plist = ps.select(uri);
+ System.out.println("proxy list for " + uri + " : " + plist);
+ assertEquals(plist.size(), 1);
+ proxy = plist.get(0);
+ assertEquals(proxy.type(), Proxy.Type.DIRECT);
+ assertEquals(proxy.address(), null);
+ }
+
+}