Skip to content

Commit c89596a

Browse files
Merge pull request #13231 from jetty/jetty-12.1.x-13213-wsClientAPI
Issue #13213 - review of WebSocketClient.connect API
2 parents 6cd7ce4 + e0f7fcb commit c89596a

File tree

35 files changed

+201
-180
lines changed

35 files changed

+201
-180
lines changed

documentation/jetty/modules/code/examples/src/main/java/org/eclipse/jetty/docs/programming/client/websocket/WebSocketClientDocs.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public void customHTTPRequest() throws Exception
151151
URI serverURI = URI.create("ws://domain.com/path");
152152

153153
// Create a custom HTTP request.
154-
ClientUpgradeRequest customRequest = new ClientUpgradeRequest();
154+
ClientUpgradeRequest customRequest = new ClientUpgradeRequest(serverURI);
155155
// Specify a cookie.
156156
customRequest.getCookies().add(new HttpCookie("name", "value"));
157157
// Specify a custom header.
@@ -160,7 +160,7 @@ public void customHTTPRequest() throws Exception
160160
customRequest.setSubProtocols("chat");
161161

162162
// Connect the client EndPoint to the server with a custom HTTP request.
163-
CompletableFuture<Session> clientSessionPromise = webSocketClient.connect(clientEndPoint, serverURI, customRequest);
163+
CompletableFuture<Session> clientSessionPromise = webSocketClient.connect(clientEndPoint, customRequest);
164164
// end::customHTTPRequest[]
165165
}
166166

@@ -184,7 +184,7 @@ public void onHandshakeResponse(Request request, Response response)
184184
};
185185

186186
// Connect the client EndPoint to the server with a custom HTTP request.
187-
CompletableFuture<Session> clientSessionPromise = webSocketClient.connect(clientEndPoint, serverURI, null, listener);
187+
CompletableFuture<Session> clientSessionPromise = webSocketClient.connect(clientEndPoint, serverURI, listener);
188188
// end::inspectHTTPResponse[]
189189
}
190190

jetty-core/jetty-websocket/jetty-websocket-jetty-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,16 @@ public final class ClientUpgradeRequest implements UpgradeRequest
4343
private long timeout;
4444
private String httpVersion;
4545

46+
/**
47+
* @deprecated use {@link #ClientUpgradeRequest(URI)} instead.
48+
*/
49+
@Deprecated(forRemoval = true, since = "12.1.0")
4650
public ClientUpgradeRequest()
4751
{
4852
/* anonymous, no requestURI, upgrade request */
4953
this.requestURI = null;
5054
}
5155

52-
/**
53-
* @deprecated use {@link #ClientUpgradeRequest()} instead.
54-
*/
55-
@Deprecated
5656
public ClientUpgradeRequest(URI uri)
5757
{
5858
this.requestURI = uri;
@@ -84,22 +84,14 @@ public String getHeader(String name)
8484
public int getHeaderInt(String name)
8585
{
8686
List<String> values = headers.get(name);
87-
// no value list
8887
if (values == null)
89-
{
9088
return -1;
91-
}
89+
9290
int size = values.size();
93-
// empty value list
94-
if (size <= 0)
95-
{
91+
if (size == 0)
9692
return -1;
97-
}
98-
// simple return
9993
if (size == 1)
100-
{
10194
return Integer.parseInt(values.get(0));
102-
}
10395
throw new NumberFormatException("Cannot convert multi-value header into int");
10496
}
10597

jetty-core/jetty-websocket/jetty-websocket-jetty-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.time.Duration;
2020
import java.util.Collection;
2121
import java.util.List;
22+
import java.util.Objects;
2223
import java.util.concurrent.CompletableFuture;
2324
import java.util.concurrent.CopyOnWriteArrayList;
2425
import java.util.concurrent.Executor;
@@ -84,9 +85,56 @@ public WebSocketClient(HttpClient httpClient)
8485
installBean(sessionTracker);
8586
}
8687

88+
/**
89+
* Connect to remote websocket endpoint
90+
*
91+
* @param websocket the websocket object
92+
* @param toUri the websocket uri to connect to
93+
* @return the future for the session, available on success of connect
94+
* @throws IOException if unable to connect
95+
*/
8796
public CompletableFuture<Session> connect(Object websocket, URI toUri) throws IOException
8897
{
89-
return connect(websocket, toUri, null);
98+
return connect(websocket, toUri, (JettyUpgradeListener)null);
99+
}
100+
101+
/**
102+
* Connect to remote websocket endpoint
103+
*
104+
* @param websocket the websocket object
105+
* @param toUri the websocket uri to connect to
106+
* @return the future for the session, available on success of connect
107+
* @throws IOException if unable to connect
108+
*/
109+
public CompletableFuture<Session> connect(Object websocket, URI toUri, JettyUpgradeListener upgradeListener) throws IOException
110+
{
111+
return connect(websocket, toUri, null, upgradeListener);
112+
}
113+
114+
/**
115+
* Connect to remote websocket endpoint
116+
*
117+
* @param websocket the websocket object
118+
* @param request the upgrade request information
119+
* @return the future for the session, available on success of connect
120+
* @throws IOException if unable to connect
121+
*/
122+
public CompletableFuture<Session> connect(Object websocket, ClientUpgradeRequest request) throws IOException
123+
{
124+
return connect(websocket, request, null);
125+
}
126+
127+
/**
128+
* Connect to remote websocket endpoint
129+
*
130+
* @param websocket the websocket object
131+
* @param request the upgrade request information
132+
* @return the future for the session, available on success of connect
133+
* @throws IOException if unable to connect
134+
*/
135+
public CompletableFuture<Session> connect(Object websocket, ClientUpgradeRequest request, JettyUpgradeListener upgradeListener) throws IOException
136+
{
137+
return connect(websocket, Objects.requireNonNull(request).getRequestURI(), request, upgradeListener);
90138
}
91139

92140
/**
@@ -98,6 +146,7 @@ public CompletableFuture<Session> connect(Object websocket, URI toUri) throws IO
98146
* @return the future for the session, available on success of connect
99147
* @throws IOException if unable to connect
100148
*/
149+
@Deprecated(forRemoval = true, since = "12.1.0")
101150
public CompletableFuture<Session> connect(Object websocket, URI toUri, ClientUpgradeRequest request) throws IOException
102151
{
103152
return connect(websocket, toUri, request, null);
@@ -112,7 +161,9 @@ public CompletableFuture<Session> connect(Object websocket, URI toUri, ClientUpg
112161
* @param upgradeListener the upgrade listener
113162
* @return the future for the session, available on success of connect
114163
* @throws IOException if unable to connect
164+
* @deprecated use {@link #connect(Object, ClientUpgradeRequest, JettyUpgradeListener)} or {@link #connect(Object, URI, JettyUpgradeListener)}.
115165
*/
166+
@Deprecated(forRemoval = true, since = "12.1.0")
116167
public CompletableFuture<Session> connect(Object websocket, URI toUri, ClientUpgradeRequest request, JettyUpgradeListener upgradeListener) throws IOException
117168
{
118169
for (Connection.Listener listener : getBeans(Connection.Listener.class))

jetty-core/jetty-websocket/jetty-websocket-jetty-client/src/test/java/examples/ClientDemo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,11 @@ private void disconnect()
271271
private void open() throws Exception
272272
{
273273
client.setIdleTimeout(Duration.ofMillis(timeout));
274-
ClientUpgradeRequest request = new ClientUpgradeRequest();
274+
URI wsUri = new URI("ws://" + host + ":" + port + "/");
275+
ClientUpgradeRequest request = new ClientUpgradeRequest(wsUri);
275276
request.setSubProtocols(protocol);
276277
socket = new TestSocket();
277-
URI wsUri = new URI("ws://" + host + ":" + port + "/");
278-
client.connect(socket, wsUri, request).get(10, TimeUnit.SECONDS);
278+
client.connect(socket, request).get(10, TimeUnit.SECONDS);
279279
}
280280

281281
private void send(byte op, byte[] data, int fragment)

jetty-core/jetty-websocket/jetty-websocket-jetty-client/src/test/java/examples/SimpleEchoClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public static void main(String[] args)
3939
client.start();
4040

4141
URI echoUri = new URI(destUri);
42-
ClientUpgradeRequest request = new ClientUpgradeRequest();
43-
client.connect(socket, echoUri, request);
42+
ClientUpgradeRequest request = new ClientUpgradeRequest(echoUri);
43+
client.connect(socket, request);
4444
System.out.printf("Connecting to : %s%n", echoUri);
4545

4646
// wait for closed socket connection.

jetty-core/jetty-websocket/jetty-websocket-jetty-tests/src/test/java/org/eclipse/jetty/websocket/tests/ConnectionHeaderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void onHandshakeRequest(Request request)
8484
};
8585

8686
EventSocket clientEndpoint = new EventSocket();
87-
try (Session session = client.connect(clientEndpoint, uri, null, upgradeListener).get(5, TimeUnit.SECONDS))
87+
try (Session session = client.connect(clientEndpoint, uri, upgradeListener).get(5, TimeUnit.SECONDS))
8888
{
8989
// Generate text frame
9090
String msg = "this is an echo ... cho ... ho ... o";

jetty-core/jetty-websocket/jetty-websocket-jetty-tests/src/test/java/org/eclipse/jetty/websocket/tests/JettyWebSocketExtensionConfigTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void testJettyExtensionConfig() throws Exception
9595
URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/filterPath");
9696
EventSocket socket = new EventSocket();
9797

98-
ClientUpgradeRequest request = new ClientUpgradeRequest();
98+
ClientUpgradeRequest request = new ClientUpgradeRequest(uri);
9999
request.addExtensions(ExtensionConfig.parse("permessage-deflate"));
100100

101101
CountDownLatch correctResponseExtensions = new CountDownLatch(1);
@@ -113,7 +113,7 @@ public void onHandshakeResponse(Request request, Response response)
113113
}
114114
};
115115

116-
CompletableFuture<Session> connect = client.connect(socket, uri, request, listener);
116+
CompletableFuture<Session> connect = client.connect(socket, request, listener);
117117
try (Session session = connect.get(5, TimeUnit.SECONDS))
118118
{
119119
session.sendText("hello world", Callback.NOOP);

jetty-core/jetty-websocket/jetty-websocket-jetty-tests/src/test/java/org/eclipse/jetty/websocket/tests/JettyWebSocketNegotiationTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ public void testBadRequest() throws Exception
7777
URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/filterPath");
7878
EventSocket socket = new EventSocket();
7979

80-
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest();
80+
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest(uri);
8181
upgradeRequest.addExtensions("permessage-deflate;invalidParameter");
8282

83-
CompletableFuture<Session> connect = client.connect(socket, uri, upgradeRequest);
83+
CompletableFuture<Session> connect = client.connect(socket, upgradeRequest);
8484
Throwable t = assertThrows(ExecutionException.class, () -> connect.get(5, TimeUnit.SECONDS));
8585
assertThat(t.getMessage(), containsString("Failed to upgrade to websocket:"));
8686
assertThat(t.getMessage(), containsString("400 Bad Request"));
@@ -126,7 +126,7 @@ public void testManualNegotiationInCreator() throws Exception
126126
URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/filterPath");
127127
EventSocket socket = new EventSocket();
128128
AtomicReference<Response> responseReference = new AtomicReference<>();
129-
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest();
129+
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest(uri);
130130
upgradeRequest.addExtensions("permessage-deflate;client_no_context_takeover");
131131
JettyUpgradeListener upgradeListener = new JettyUpgradeListener()
132132
{
@@ -137,7 +137,7 @@ public void onHandshakeResponse(Request request, Response response)
137137
}
138138
};
139139

140-
client.connect(socket, uri, upgradeRequest, upgradeListener).get(5, TimeUnit.SECONDS);
140+
client.connect(socket, upgradeRequest, upgradeListener).get(5, TimeUnit.SECONDS);
141141
Response response = responseReference.get();
142142
String extensions = response.getHeaders().get("Sec-WebSocket-Extensions");
143143
assertThat(extensions, is("permessage-deflate"));

jetty-core/jetty-websocket/jetty-websocket-jetty-tests/src/test/java/org/eclipse/jetty/websocket/tests/LargeDeflateTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ public void after() throws Exception
7575
@Test
7676
public void testDeflate() throws Exception
7777
{
78-
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest();
78+
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest(URI.create("ws://localhost:" + _connector.getLocalPort() + "/ws"));
7979
upgradeRequest.addExtensions("permessage-deflate");
8080

8181
EventSocket clientSocket = new EventSocket();
82-
Session session = _client.connect(clientSocket, URI.create("ws://localhost:" + _connector.getLocalPort() + "/ws"), upgradeRequest).get();
82+
Session session = _client.connect(clientSocket, upgradeRequest).get();
8383
ByteBuffer sentMessage = largePayloads();
8484
session.sendBinary(sentMessage, Callback.NOOP);
8585
session.close(StatusCode.NORMAL, "close from test", Callback.NOOP);

jetty-core/jetty-websocket/jetty-websocket-jetty-tests/src/test/java/org/eclipse/jetty/websocket/tests/MaxOutgoingFramesTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ public void testMaxOutgoingFrames() throws Exception
137137

138138
URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/");
139139
EventSocket socket = new EventSocket();
140-
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest();
140+
ClientUpgradeRequest upgradeRequest = new ClientUpgradeRequest(uri);
141141
upgradeRequest.addExtensions(BlockingOutgoingExtension.class.getName());
142-
client.connect(socket, uri, upgradeRequest).get(5, TimeUnit.SECONDS);
142+
client.connect(socket, upgradeRequest).get(5, TimeUnit.SECONDS);
143143
assertTrue(socket.openLatch.await(5, TimeUnit.SECONDS));
144144

145145
int numFrames = 30;

0 commit comments

Comments
 (0)