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>
This commit is contained in:
Andy Scherzinger 2022-12-29 09:23:21 +01:00
parent a33f3fe400
commit 8b9996814f
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
2 changed files with 72 additions and 43 deletions

View File

@ -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";
} }

View File

@ -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 final User conversationUser;
private String webSocketTicket; 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); CallOverallWebSocketMessage callOverallWebSocketMessage =
NCSignalingMessage ncSignalingMessage = callOverallWebSocketMessage.getCallWebSocketMessage().getNcSignalingMessage(); LoganSquare.parse(text, CallOverallWebSocketMessage.class);
if (TextUtils.isEmpty(ncSignalingMessage.getFrom()) && callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage() != null) { NCSignalingMessage ncSignalingMessage = callOverallWebSocketMessage
ncSignalingMessage.setFrom(callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage().getSessionId()); .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) { if (target != null) {
case "room": switch (target) {
if (eventOverallWebSocketMessage.getEventMap().get("type").equals("message")) { case TARGET_ROOM:
processRoomMessageMessage(eventOverallWebSocketMessage); if ("message".equals(eventOverallWebSocketMessage.getEventMap().get("type"))) {
} else if (eventOverallWebSocketMessage.getEventMap().get("type").equals("join")) { processRoomMessageMessage(eventOverallWebSocketMessage);
processRoomJoinMessage(eventOverallWebSocketMessage); } else if ("join".equals(eventOverallWebSocketMessage.getEventMap().get("type"))) {
} processRoomJoinMessage(eventOverallWebSocketMessage);
break; }
case TARGET_PARTICIPANTS: break;
signalingMessageReceiver.process(eventOverallWebSocketMessage.getEventMap()); case TARGET_PARTICIPANTS:
break; 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); JoinedRoomOverallWebSocketMessage joinedRoomOverallWebSocketMessage =
currentRoomToken = joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomId(); LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage.class);
if (joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomPropertiesWebSocketMessage() != null && !TextUtils.isEmpty(currentRoomToken)) { if (joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage() != null) {
sendRoomJoinedEvent(); 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); HelloResponseOverallWebSocketMessage helloResponseWebSocketMessage =
resumeId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getResumeId(); LoganSquare.parse(text, HelloResponseOverallWebSocketMessage.class);
sessionId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getSessionId(); if (helloResponseWebSocketMessage.getHelloResponseWebSocketMessage() != null) {
hasMCU = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().serverHasMCUSupport(); 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.
* * <p>
* All listeners are called in the WebSocket reader thread. This thread should be the same as long as the * All listeners are called in the WebSocket reader thread. This thread should be the same as long as the WebSocket
* WebSocket stays connected, but it may change whenever it is connected again. * 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) {