Skip to content

Commit 498930f

Browse files
authored
Enabled NullAway for ws package (#1894)
* Enabled NullAway for ws package * Updated test case to redirect to google instead of microsoft
1 parent 4dee060 commit 498930f

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

client/src/main/java/org/asynchttpclient/netty/handler/WebSocketHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,14 @@ private void upgrade(Channel channel, NettyResponseFuture<?> future, WebSocketUp
8080
// if it comes in the same frame as the HTTP Upgrade response
8181
Channels.setAttribute(channel, future);
8282

83-
handler.setWebSocket(new NettyWebSocket(channel, responseHeaders));
83+
final NettyWebSocket webSocket = new NettyWebSocket(channel, responseHeaders);
84+
handler.setWebSocket(webSocket);
8485
channelManager.upgradePipelineForWebSockets(channel.pipeline());
8586

8687
// We don't need to synchronize as replacing the "ws-decoder" will
8788
// process using the same thread.
8889
try {
89-
handler.onOpen();
90+
handler.onOpen(webSocket);
9091
} catch (Exception ex) {
9192
logger.warn("onSuccess unexpected exception", ex);
9293
}

client/src/main/java/org/asynchttpclient/ws/WebSocketUpgradeHandler.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.asynchttpclient.HttpResponseBodyPart;
2121
import org.asynchttpclient.HttpResponseStatus;
2222
import org.asynchttpclient.netty.ws.NettyWebSocket;
23+
import org.jetbrains.annotations.Nullable;
2324

2425
import java.util.ArrayList;
2526
import java.util.List;
@@ -32,7 +33,7 @@
3233
public class WebSocketUpgradeHandler implements AsyncHandler<NettyWebSocket> {
3334

3435
private final List<WebSocketListener> listeners;
35-
private NettyWebSocket webSocket;
36+
private @Nullable NettyWebSocket webSocket;
3637

3738
public WebSocketUpgradeHandler(List<WebSocketListener> listeners) {
3839
this.listeners = listeners;
@@ -78,7 +79,7 @@ public final State onBodyPartReceived(HttpResponseBodyPart bodyPart) throws Exce
7879
}
7980

8081
@Override
81-
public final NettyWebSocket onCompleted() throws Exception {
82+
public final @Nullable NettyWebSocket onCompleted() throws Exception {
8283
onCompleted0();
8384
return webSocket;
8485
}
@@ -99,7 +100,11 @@ public final void setWebSocket(NettyWebSocket webSocket) {
99100
setWebSocket0(webSocket);
100101
}
101102

102-
public final void onOpen() {
103+
/**
104+
* @param webSocket this parameter is the same object as the field webSocket,
105+
* but guaranteed to be not null. This is done to satisfy NullAway requirements
106+
*/
107+
public final void onOpen(NettyWebSocket webSocket) {
103108
onOpen0();
104109
for (WebSocketListener listener : listeners) {
105110
webSocket.addWebSocketListener(listener);

client/src/test/java/org/asynchttpclient/PerRequestRelative302Test.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,15 @@ public void runAllSequentiallyBecauseNotThreadSafe() throws Exception {
8080
public void redirected302Test() throws Exception {
8181
isSet.getAndSet(false);
8282
try (AsyncHttpClient c = asyncHttpClient()) {
83-
Response response = c.prepareGet(getTargetUrl()).setFollowRedirect(true).setHeader("X-redirect", "https://www.microsoft.com/").execute().get();
83+
Response response = c.prepareGet(getTargetUrl()).setFollowRedirect(true).setHeader("X-redirect", "https://www.google.com/").execute().get();
8484

8585
assertNotNull(response);
86-
assertEquals(response.getStatusCode(), 200);
86+
assertEquals(200, response.getStatusCode());
8787

88-
String anyMicrosoftPage = "https://www.microsoft.com[^:]*:443";
88+
String anyGooglePage = "https://www.google.com[^:]*:443";
8989
String baseUrl = getBaseUrl(response.getUri());
9090

91-
assertTrue(baseUrl.matches(anyMicrosoftPage), "response does not show redirection to " + anyMicrosoftPage);
91+
assertTrue(baseUrl.matches(anyGooglePage), "response does not show redirection to " + anyGooglePage);
9292
}
9393
}
9494

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@
233233
-Xep:NullOptional:ERROR
234234
-XepExcludedPaths:.*/src/test/java/.*
235235
-XepOpt:NullAway:AnnotatedPackages=org.asynchttpclient
236-
-XepOpt:NullAway:UnannotatedSubPackages=org.asynchttpclient.netty,org.asynchttpclient.request,org.asynchttpclient.ws
236+
-XepOpt:NullAway:UnannotatedSubPackages=org.asynchttpclient.netty,org.asynchttpclient.request
237237
-XepOpt:NullAway:AcknowledgeRestrictiveAnnotations=true
238238
-Xep:NullAway:ERROR
239239
</arg>

0 commit comments

Comments
 (0)