From f79527c16be7362436d15eed4b084f53b42af821 Mon Sep 17 00:00:00 2001 From: WickedJack99 Date: Sun, 7 Apr 2024 11:57:26 +0200 Subject: [PATCH] Added nullcheck and moved functionality to ReceivedData class. --- .../src/Request/RequestExecuterThread.java | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/main/java/vslab1/src/Request/RequestExecuterThread.java b/src/main/java/vslab1/src/Request/RequestExecuterThread.java index 10052e3..c07093e 100644 --- a/src/main/java/vslab1/src/Request/RequestExecuterThread.java +++ b/src/main/java/vslab1/src/Request/RequestExecuterThread.java @@ -45,15 +45,13 @@ public class RequestExecuterThread extends Thread implements Terminatable { try { ReceivedData receivedData = receivingQueue.take(); - JSONObject receivedDataAsJSONObject = new JSONObject(receivedData.data()); - - Requestable request = toRequestable(receivedDataAsJSONObject, jobList); + Requestable request = toRequestable(receivedData.interpretAsJSONObject(), jobList); if (request != null) { request.execute(sendingQueue); } } catch (InterruptedException e) { - System.out.println("Error, receiving queue was interrupted. Terminating (this) request executer thread.."); + System.err.println("Error, receiving queue was interrupted. Terminating (this) request executer thread.."); this.terminate(); } } @@ -65,37 +63,39 @@ public class RequestExecuterThread extends Thread implements Terminatable { } private static Requestable toRequestable(JSONObject receivedData, JobList jobList) { - if (receivedData.has("onlineState")) { - String onlineState = receivedData.getString("onlineState"); - switch (onlineState) { - case "": { - return new OnlineStateNotificationRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), jobList); - } - case "online": { - return new OnlineStateRequestRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate)); - } - default: { - System.err.println("Unknown online state."); - return null; + if (receivedData != null) { + if (receivedData.has("onlineState")) { + String onlineState = receivedData.getString("onlineState"); + switch (onlineState) { + case "": { + return new OnlineStateNotificationRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), jobList); + } + case "online": { + return new OnlineStateRequestRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate)); + } + default: { + System.err.println("Unknown online state."); + return null; + } } } - } - if (receivedData.has("pullFileList")) { - return new PullFileListRequestRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.Update)); - } - if (receivedData.has("publishFileName")) { - String fileName = receivedData.getString("publishFileName"); - return new PublishFileNameNotificationRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), fileName); - } - if (receivedData.has("pullFile")) { - String fileName = receivedData.getString("pullFile"); - return new PullFileRequestRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), fileName); - } - if (receivedData.has("sendFile")) { - String fileContent = receivedData.getString("sendFile"); - String fileName = receivedData.getString("fileName"); - - return new SendFileReplyRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), fileName, fileContent); + if (receivedData.has("pullFileList")) { + return new PullFileListRequestRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.Update)); + } + if (receivedData.has("publishFileName")) { + String fileName = receivedData.getString("publishFileName"); + return new PublishFileNameNotificationRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), fileName); + } + if (receivedData.has("pullFile")) { + String fileName = receivedData.getString("pullFile"); + return new PullFileRequestRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), fileName); + } + if (receivedData.has("sendFile")) { + String fileContent = receivedData.getString("sendFile"); + String fileName = receivedData.getString("fileName"); + + return new SendFileReplyRequest(parseIPPortField(receivedData), FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate), fileName, fileContent); + } } return null; }