瀏覽代碼

Spotbugs: NPE deference, NPE-equals, unused variable, make vars final, reformat code for line-length 120 chars

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 2 年之前
父節點
當前提交
8b9996814f

+ 1 - 0
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 ROOM_TOKEN = "roomToken";
 
 
     public static final String TARGET_PARTICIPANTS = "participants";
     public static final String TARGET_PARTICIPANTS = "participants";
+    public static final String TARGET_ROOM = "room";
 }
 }

+ 71 - 43
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.models.json.participants.Participant.ActorType.USERS;
 import static com.nextcloud.talk.webrtc.Globals.ROOM_TOKEN;
 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_PARTICIPANTS;
+import static com.nextcloud.talk.webrtc.Globals.TARGET_ROOM;
 
 
 @AutoInjector(NextcloudTalkApplication.class)
 @AutoInjector(NextcloudTalkApplication.class)
 public class MagicWebSocketInstance extends WebSocketListener {
 public class MagicWebSocketInstance extends WebSocketListener {
     private static final String TAG = "MagicWebSocketInstance";
     private static final String TAG = "MagicWebSocketInstance";
 
 
-
     @Inject
     @Inject
     OkHttpClient okHttpClient;
     OkHttpClient okHttpClient;
 
 
@@ -82,18 +82,17 @@ public class MagicWebSocketInstance extends WebSocketListener {
     @Inject
     @Inject
     Context context;
     Context context;
 
 
-    private User conversationUser;
-    private String webSocketTicket;
+    private final User conversationUser;
+    private final String webSocketTicket;
     private String resumeId;
     private String resumeId;
     private String sessionId;
     private String sessionId;
     private boolean hasMCU;
     private boolean hasMCU;
     private boolean connected;
     private boolean connected;
-    private WebSocketConnectionHelper webSocketConnectionHelper;
+    private final WebSocketConnectionHelper webSocketConnectionHelper;
     private WebSocket internalWebSocket;
     private WebSocket internalWebSocket;
-    private String connectionUrl;
+    private final String connectionUrl;
 
 
     private String currentRoomToken;
     private String currentRoomToken;
-    private int restartCount = 0;
     private boolean reconnecting = false;
     private boolean reconnecting = false;
 
 
     private HashMap<String, Participant> usersHashMap;
     private HashMap<String, Participant> usersHashMap;
@@ -122,9 +121,13 @@ public class MagicWebSocketInstance extends WebSocketListener {
     private void sendHello() {
     private void sendHello() {
         try {
         try {
             if (TextUtils.isEmpty(resumeId)) {
             if (TextUtils.isEmpty(resumeId)) {
-                internalWebSocket.send(LoganSquare.serialize(webSocketConnectionHelper.getAssembledHelloModel(conversationUser, webSocketTicket)));
+                internalWebSocket.send(
+                    LoganSquare.serialize(webSocketConnectionHelper
+                                              .getAssembledHelloModel(conversationUser, webSocketTicket)));
             } else {
             } else {
-                internalWebSocket.send(LoganSquare.serialize(webSocketConnectionHelper.getAssembledHelloModelForResume(resumeId)));
+                internalWebSocket.send(
+                    LoganSquare.serialize(webSocketConnectionHelper
+                                              .getAssembledHelloModelForResume(resumeId)));
             }
             }
         } catch (IOException e) {
         } catch (IOException e) {
             Log.e(TAG, "Failed to serialize hello model");
             Log.e(TAG, "Failed to serialize hello model");
@@ -160,7 +163,6 @@ public class MagicWebSocketInstance extends WebSocketListener {
         Log.d(TAG, "restartWebSocket: " + connectionUrl);
         Log.d(TAG, "restartWebSocket: " + connectionUrl);
         Request request = new Request.Builder().url(connectionUrl).build();
         Request request = new Request.Builder().url(connectionUrl).build();
         okHttpClient.newWebSocket(request, this);
         okHttpClient.newWebSocket(request, this);
-        restartCount++;
     }
     }
 
 
     @Override
     @Override
@@ -205,30 +207,43 @@ public class MagicWebSocketInstance extends WebSocketListener {
     }
     }
 
 
     private void processMessage(String text) throws IOException {
     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);
         signalingMessageReceiver.process(ncSignalingMessage);
     }
     }
 
 
     private void processEventMessage(String text) throws IOException {
     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) {
         if (eventOverallWebSocketMessage.getEventMap() != null) {
             String target = (String) eventOverallWebSocketMessage.getEventMap().get("target");
             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 {
     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 {
     private void processErrorMessage(WebSocket webSocket, String text) throws IOException {
         Log.e(TAG, "Received error: " + text);
         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())) {
         if ("no_such_session".equals(errorOverallWebSocketMessage.getErrorWebSocketMessage().getCode())) {
             Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired");
             Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired");
             resumeId = "";
             resumeId = "";
@@ -301,12 +324,14 @@ public class MagicWebSocketInstance extends WebSocketListener {
     private void processHelloMessage(WebSocket webSocket, String text) throws IOException {
     private void processHelloMessage(WebSocket webSocket, String text) throws IOException {
         connected = true;
         connected = true;
         reconnecting = false;
         reconnecting = false;
-        restartCount = 0;
         String oldResumeId = resumeId;
         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++) {
         for (int i = 0; i < messagesQueue.size(); i++) {
             webSocket.send(messagesQueue.get(i));
             webSocket.send(messagesQueue.get(i));
@@ -333,12 +358,12 @@ public class MagicWebSocketInstance extends WebSocketListener {
     }
     }
 
 
     @Override
     @Override
-    public void onMessage(WebSocket webSocket, ByteString bytes) {
+    public void onMessage(@NonNull WebSocket webSocket, ByteString bytes) {
         Log.d(TAG, "Receiving bytes : " + bytes.hex());
         Log.d(TAG, "Receiving bytes : " + bytes.hex());
     }
     }
 
 
     @Override
     @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);
         Log.d(TAG, "Closing : " + code + " / " + reason);
     }
     }
 
 
@@ -361,7 +386,8 @@ public class MagicWebSocketInstance extends WebSocketListener {
         Log.d(TAG, "   roomToken: " + roomToken);
         Log.d(TAG, "   roomToken: " + roomToken);
         Log.d(TAG, "   session: " + normalBackendSession);
         Log.d(TAG, "   session: " + normalBackendSession);
         try {
         try {
-            String message = LoganSquare.serialize(webSocketConnectionHelper.getAssembledJoinOrLeaveRoomModel(roomToken, normalBackendSession));
+            String message = LoganSquare.serialize(
+                webSocketConnectionHelper.getAssembledJoinOrLeaveRoomModel(roomToken, normalBackendSession));
             if (!connected || reconnecting) {
             if (!connected || reconnecting) {
                 messagesQueue.add(message);
                 messagesQueue.add(message);
             } else {
             } else {
@@ -378,7 +404,8 @@ public class MagicWebSocketInstance extends WebSocketListener {
 
 
     private void sendCallMessage(NCSignalingMessage ncSignalingMessage) {
     private void sendCallMessage(NCSignalingMessage ncSignalingMessage) {
         try {
         try {
-            String message = LoganSquare.serialize(webSocketConnectionHelper.getAssembledCallMessageModel(ncSignalingMessage));
+            String message = LoganSquare.serialize(
+                webSocketConnectionHelper.getAssembledCallMessageModel(ncSignalingMessage));
             if (!connected || reconnecting) {
             if (!connected || reconnecting) {
                 messagesQueue.add(message);
                 messagesQueue.add(message);
             } else {
             } else {
@@ -419,7 +446,8 @@ public class MagicWebSocketInstance extends WebSocketListener {
 
 
     @Subscribe(threadMode = ThreadMode.BACKGROUND)
     @Subscribe(threadMode = ThreadMode.BACKGROUND)
     public void onMessageEvent(NetworkEvent networkEvent) {
     public void onMessageEvent(NetworkEvent networkEvent) {
-        if (networkEvent.getNetworkConnectionEvent() == NetworkEvent.NetworkConnectionEvent.NETWORK_CONNECTED && !isConnected()) {
+        if (networkEvent.getNetworkConnectionEvent() == NetworkEvent.NetworkConnectionEvent.NETWORK_CONNECTED &&
+            !isConnected()) {
             restartWebSocket();
             restartWebSocket();
         }
         }
     }
     }
@@ -435,9 +463,9 @@ public class MagicWebSocketInstance extends WebSocketListener {
     /**
     /**
      * Temporary implementation of SignalingMessageReceiver until signaling related code is extracted to a Signaling
      * Temporary implementation of SignalingMessageReceiver until signaling related code is extracted to a Signaling
      * class.
      * 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.
+     * <p>
+     * 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 {
     private static class ExternalSignalingMessageReceiver extends SignalingMessageReceiver {
         public void process(Map<String, Object> eventMap) {
         public void process(Map<String, Object> eventMap) {