src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/websocket/BuilderImpl.java
branchhttp-client-branch
changeset 55821 fa0fc03c0853
parent 55764 34d7cc00f87a
child 55824 b922df193260
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/websocket/BuilderImpl.java	Thu Nov 16 12:15:55 2017 +0000
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/websocket/BuilderImpl.java	Thu Nov 16 19:56:44 2017 +0000
@@ -31,11 +31,13 @@
 import jdk.incubator.http.WebSocket.Listener;
 import jdk.incubator.http.internal.common.Pair;
 
+import java.net.ProxySelector;
 import java.net.URI;
 import java.time.Duration;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 
 import static java.lang.String.format;
@@ -49,12 +51,17 @@
     private final Listener listener;
     private final Collection<Pair<String, String>> headers = new LinkedList<>();
     private final Collection<String> subprotocols = new LinkedList<>();
+    private final Optional<ProxySelector> proxySelector;
     private Duration timeout;
 
-    public BuilderImpl(HttpClient client, URI uri, Listener listener) {
+    public BuilderImpl(HttpClient client, URI uri, Listener listener, ProxySelector proxySelector) {
         this.client = requireNonNull(client, "client");
         this.uri = checkURI(requireNonNull(uri, "uri"));
         this.listener = requireNonNull(listener, "listener");
+        this.proxySelector = Optional.ofNullable(proxySelector);
+        // if the proxy selector was supplied by the user, it should be present
+        // on the client and should be the same than what we get as argument.
+        assert !client.proxy().isPresent() || client.proxy().get() == proxySelector;
     }
 
     private static IllegalArgumentException newIAE(String message, Object... args) {
@@ -123,4 +130,6 @@
     Collection<String> getSubprotocols() { return subprotocols; }
 
     Duration getConnectTimeout() { return timeout; }
+
+    Optional<ProxySelector> proxySelector() { return proxySelector; }
 }