From: David Roden Date: Sun, 26 Jan 2025 18:31:10 +0000 (+0100) Subject: ♻️ Use a JSON object node instead of a Map X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=9a483828cc31a70ea05f289bd586769109c9371f;p=msta.git ♻️ Use a JSON object node instead of a Map --- diff --git a/server/src/main/java/de/qsheltier/msta/Server.java b/server/src/main/java/de/qsheltier/msta/Server.java index 8b42f90..bd7fd3f 100644 --- a/server/src/main/java/de/qsheltier/msta/Server.java +++ b/server/src/main/java/de/qsheltier/msta/Server.java @@ -1,7 +1,9 @@ package de.qsheltier.msta; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import java.awt.Component; import java.awt.Frame; import java.awt.Window; @@ -17,7 +19,6 @@ import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketAddress; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -134,7 +135,7 @@ public class Server implements Closeable { var newWindows = currentlyOpenWindows.stream().filter(window -> !windows.containsValue(window)).toList(); newWindows.forEach(newWindow -> { synchronized (outputWriters) { - outputWriters.forEach(writeLine -> writeLine.accept(createEvent("window-opened", new Pair("id", newWindow.getName()), new Pair("is-frame", newWindow instanceof Frame)))); + outputWriters.forEach(writeLine -> writeLine.accept(createEvent("window-opened", objectMapper.createObjectNode().put("id", newWindow.getName()).put("is-frame", newWindow instanceof Frame)))); } windows.put(newWindow.getName(), newWindow); }); @@ -155,7 +156,7 @@ public class Server implements Closeable { } }; try (var inputReader = new BufferedReader(new InputStreamReader(inputStream))) { - writeLine.accept(createEvent("connected")); + writeLine.accept(createEvent("connected", objectMapper.createObjectNode())); synchronized (outputWriters) { outputWriters.add(writeLine); } @@ -169,7 +170,7 @@ public class Server implements Closeable { if (words.getFirst().equalsIgnoreCase("info") && (words.size() == 3) && words.get(1).equalsIgnoreCase("window")) { var windowName = words.get(2); stream(Window.getWindows()).filter(window -> window.getName().equals(windowName)) - .forEach(window -> writeLine.accept(createMessage(new Pair("info", "window"), new Pair("id", window.getName())))); + .forEach(window -> writeLine.accept(createMessage(objectMapper.createObjectNode().put("info", "window").put("id", window.getName())))); } } } finally { @@ -180,16 +181,14 @@ public class Server implements Closeable { } } - private String createEvent(String name, Pair... parameters) { - return createMessage(new Pair("event", name), parameters); + private String createEvent(String name, ObjectNode parameters) { + parameters.put("event", name); + return createMessage(parameters); } - private String createMessage(Pair messageName, Pair... parameters) { - Map reply = new HashMap<>(); - reply.put(messageName.first, messageName.second); - stream(parameters).forEach(pair -> reply.put(pair.first, pair.second)); + private String createMessage(JsonNode messageNode) { try { - return objectMapper.writeValueAsString(reply); + return objectMapper.writeValueAsString(messageNode); } catch (JsonProcessingException e) { return ""; } @@ -202,6 +201,4 @@ public class Server implements Closeable { private final Set> outputWriters = new HashSet<>(); private final Map windows = new ConcurrentHashMap<>(); - private record Pair(String first, Object second) {} - }