From 8b9996814fe00953a9cde955da800512b331532d Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 29 Dec 2022 09:23:21 +0100 Subject: [PATCH] Spotbugs: NPE deference, NPE-equals, unused variable, make vars final, reformat code for line-length 120 chars Signed-off-by: Andy Scherzinger --- .../com/nextcloud/talk/webrtc/Globals.java | 1 + .../talk/webrtc/MagicWebSocketInstance.java | 114 +++++++++++------- 2 files changed, 72 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/Globals.java b/app/src/main/java/com/nextcloud/talk/webrtc/Globals.java index 5e27542ee..317e2939e 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/Globals.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/Globals.java @@ -4,4 +4,5 @@ public class Globals { public static final String ROOM_TOKEN = "roomToken"; public static final String TARGET_PARTICIPANTS = "participants"; + public static final String TARGET_ROOM = "room"; } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java index 42ad896e1..ce3e317d6 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java @@ -67,12 +67,12 @@ import static com.nextcloud.talk.models.json.participants.Participant.ActorType. import static com.nextcloud.talk.models.json.participants.Participant.ActorType.USERS; import static com.nextcloud.talk.webrtc.Globals.ROOM_TOKEN; import static com.nextcloud.talk.webrtc.Globals.TARGET_PARTICIPANTS; +import static com.nextcloud.talk.webrtc.Globals.TARGET_ROOM; @AutoInjector(NextcloudTalkApplication.class) public class MagicWebSocketInstance extends WebSocketListener { private static final String TAG = "MagicWebSocketInstance"; - @Inject OkHttpClient okHttpClient; @@ -82,18 +82,17 @@ public class MagicWebSocketInstance extends WebSocketListener { @Inject Context context; - private User conversationUser; - private String webSocketTicket; + private final User conversationUser; + private final String webSocketTicket; private String resumeId; private String sessionId; private boolean hasMCU; private boolean connected; - private WebSocketConnectionHelper webSocketConnectionHelper; + private final WebSocketConnectionHelper webSocketConnectionHelper; private WebSocket internalWebSocket; - private String connectionUrl; + private final String connectionUrl; private String currentRoomToken; - private int restartCount = 0; private boolean reconnecting = false; private HashMap usersHashMap; @@ -122,9 +121,13 @@ public class MagicWebSocketInstance extends WebSocketListener { private void sendHello() { try { if (TextUtils.isEmpty(resumeId)) { - internalWebSocket.send(LoganSquare.serialize(webSocketConnectionHelper.getAssembledHelloModel(conversationUser, webSocketTicket))); + internalWebSocket.send( + LoganSquare.serialize(webSocketConnectionHelper + .getAssembledHelloModel(conversationUser, webSocketTicket))); } else { - internalWebSocket.send(LoganSquare.serialize(webSocketConnectionHelper.getAssembledHelloModelForResume(resumeId))); + internalWebSocket.send( + LoganSquare.serialize(webSocketConnectionHelper + .getAssembledHelloModelForResume(resumeId))); } } catch (IOException e) { Log.e(TAG, "Failed to serialize hello model"); @@ -160,7 +163,6 @@ public class MagicWebSocketInstance extends WebSocketListener { Log.d(TAG, "restartWebSocket: " + connectionUrl); Request request = new Request.Builder().url(connectionUrl).build(); okHttpClient.newWebSocket(request, this); - restartCount++; } @Override @@ -205,30 +207,43 @@ public class MagicWebSocketInstance extends WebSocketListener { } private void processMessage(String text) throws IOException { - CallOverallWebSocketMessage callOverallWebSocketMessage = LoganSquare.parse(text, CallOverallWebSocketMessage.class); - NCSignalingMessage ncSignalingMessage = callOverallWebSocketMessage.getCallWebSocketMessage().getNcSignalingMessage(); - if (TextUtils.isEmpty(ncSignalingMessage.getFrom()) && callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage() != null) { - ncSignalingMessage.setFrom(callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage().getSessionId()); + CallOverallWebSocketMessage callOverallWebSocketMessage = + LoganSquare.parse(text, CallOverallWebSocketMessage.class); + NCSignalingMessage ncSignalingMessage = callOverallWebSocketMessage + .getCallWebSocketMessage() + .getNcSignalingMessage(); + if (TextUtils.isEmpty(ncSignalingMessage.getFrom()) && + callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage() != null) { + ncSignalingMessage.setFrom( + callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage().getSessionId()); } signalingMessageReceiver.process(ncSignalingMessage); } private void processEventMessage(String text) throws IOException { - EventOverallWebSocketMessage eventOverallWebSocketMessage = LoganSquare.parse(text, EventOverallWebSocketMessage.class); + EventOverallWebSocketMessage eventOverallWebSocketMessage = + LoganSquare.parse(text, EventOverallWebSocketMessage.class); if (eventOverallWebSocketMessage.getEventMap() != null) { String target = (String) eventOverallWebSocketMessage.getEventMap().get("target"); - switch (target) { - case "room": - if (eventOverallWebSocketMessage.getEventMap().get("type").equals("message")) { - processRoomMessageMessage(eventOverallWebSocketMessage); - } else if (eventOverallWebSocketMessage.getEventMap().get("type").equals("join")) { - processRoomJoinMessage(eventOverallWebSocketMessage); - } - break; - case TARGET_PARTICIPANTS: - signalingMessageReceiver.process(eventOverallWebSocketMessage.getEventMap()); - break; + if (target != null) { + switch (target) { + case TARGET_ROOM: + if ("message".equals(eventOverallWebSocketMessage.getEventMap().get("type"))) { + processRoomMessageMessage(eventOverallWebSocketMessage); + } else if ("join".equals(eventOverallWebSocketMessage.getEventMap().get("type"))) { + processRoomJoinMessage(eventOverallWebSocketMessage); + } + break; + case TARGET_PARTICIPANTS: + signalingMessageReceiver.process(eventOverallWebSocketMessage.getEventMap()); + break; + default: + Log.i(TAG, "Received unknown/ignored event target: " + target); + break; + } + } else { + Log.w(TAG, "Received message with event target: null"); } } } @@ -278,16 +293,24 @@ public class MagicWebSocketInstance extends WebSocketListener { } private void processJoinedRoomMessage(String text) throws IOException { - JoinedRoomOverallWebSocketMessage joinedRoomOverallWebSocketMessage = LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage.class); - currentRoomToken = joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomId(); - if (joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomPropertiesWebSocketMessage() != null && !TextUtils.isEmpty(currentRoomToken)) { - sendRoomJoinedEvent(); + JoinedRoomOverallWebSocketMessage joinedRoomOverallWebSocketMessage = + LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage.class); + if (joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage() != null) { + currentRoomToken = joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomId(); + + if (joinedRoomOverallWebSocketMessage + .getRoomWebSocketMessage() + .getRoomPropertiesWebSocketMessage() != null && + !TextUtils.isEmpty(currentRoomToken)) { + sendRoomJoinedEvent(); + } } } private void processErrorMessage(WebSocket webSocket, String text) throws IOException { Log.e(TAG, "Received error: " + text); - ErrorOverallWebSocketMessage errorOverallWebSocketMessage = LoganSquare.parse(text, ErrorOverallWebSocketMessage.class); + ErrorOverallWebSocketMessage errorOverallWebSocketMessage = + LoganSquare.parse(text, ErrorOverallWebSocketMessage.class); if ("no_such_session".equals(errorOverallWebSocketMessage.getErrorWebSocketMessage().getCode())) { Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired"); resumeId = ""; @@ -301,12 +324,14 @@ public class MagicWebSocketInstance extends WebSocketListener { private void processHelloMessage(WebSocket webSocket, String text) throws IOException { connected = true; reconnecting = false; - restartCount = 0; String oldResumeId = resumeId; - HelloResponseOverallWebSocketMessage helloResponseWebSocketMessage = LoganSquare.parse(text, HelloResponseOverallWebSocketMessage.class); - resumeId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getResumeId(); - sessionId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getSessionId(); - hasMCU = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().serverHasMCUSupport(); + HelloResponseOverallWebSocketMessage helloResponseWebSocketMessage = + LoganSquare.parse(text, HelloResponseOverallWebSocketMessage.class); + if (helloResponseWebSocketMessage.getHelloResponseWebSocketMessage() != null) { + resumeId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getResumeId(); + sessionId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getSessionId(); + hasMCU = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().serverHasMCUSupport(); + } for (int i = 0; i < messagesQueue.size(); i++) { webSocket.send(messagesQueue.get(i)); @@ -333,12 +358,12 @@ public class MagicWebSocketInstance extends WebSocketListener { } @Override - public void onMessage(WebSocket webSocket, ByteString bytes) { + public void onMessage(@NonNull WebSocket webSocket, ByteString bytes) { Log.d(TAG, "Receiving bytes : " + bytes.hex()); } @Override - public void onClosing(WebSocket webSocket, int code, String reason) { + public void onClosing(@NonNull WebSocket webSocket, int code, @NonNull String reason) { Log.d(TAG, "Closing : " + code + " / " + reason); } @@ -361,7 +386,8 @@ public class MagicWebSocketInstance extends WebSocketListener { Log.d(TAG, " roomToken: " + roomToken); Log.d(TAG, " session: " + normalBackendSession); try { - String message = LoganSquare.serialize(webSocketConnectionHelper.getAssembledJoinOrLeaveRoomModel(roomToken, normalBackendSession)); + String message = LoganSquare.serialize( + webSocketConnectionHelper.getAssembledJoinOrLeaveRoomModel(roomToken, normalBackendSession)); if (!connected || reconnecting) { messagesQueue.add(message); } else { @@ -378,7 +404,8 @@ public class MagicWebSocketInstance extends WebSocketListener { private void sendCallMessage(NCSignalingMessage ncSignalingMessage) { try { - String message = LoganSquare.serialize(webSocketConnectionHelper.getAssembledCallMessageModel(ncSignalingMessage)); + String message = LoganSquare.serialize( + webSocketConnectionHelper.getAssembledCallMessageModel(ncSignalingMessage)); if (!connected || reconnecting) { messagesQueue.add(message); } else { @@ -419,7 +446,8 @@ public class MagicWebSocketInstance extends WebSocketListener { @Subscribe(threadMode = ThreadMode.BACKGROUND) public void onMessageEvent(NetworkEvent networkEvent) { - if (networkEvent.getNetworkConnectionEvent() == NetworkEvent.NetworkConnectionEvent.NETWORK_CONNECTED && !isConnected()) { + if (networkEvent.getNetworkConnectionEvent() == NetworkEvent.NetworkConnectionEvent.NETWORK_CONNECTED && + !isConnected()) { restartWebSocket(); } } @@ -435,9 +463,9 @@ public class MagicWebSocketInstance extends WebSocketListener { /** * Temporary implementation of SignalingMessageReceiver until signaling related code is extracted to a Signaling * class. - * - * All listeners are called in the WebSocket reader thread. This thread should be the same as long as the - * WebSocket stays connected, but it may change whenever it is connected again. + *

+ * All listeners are called in the WebSocket reader thread. This thread should be the same as long as the WebSocket + * stays connected, but it may change whenever it is connected again. */ private static class ExternalSignalingMessageReceiver extends SignalingMessageReceiver { public void process(Map eventMap) {