<name>MSTA – Server</name>
<description>Manual Software Testing Avoidance – Server Component</description>
+ <dependencies>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+ </dependencies>
+
</project>
package de.qsheltier.msta;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import java.awt.Component;
import java.awt.Frame;
import java.awt.Window;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
.filter(window -> !lastOpenWindows.contains(window))
.toList();
openWindows.stream()
- .map(window -> "{\"event\":\"new-window\"}")
+ .map(window -> createEvent("new-window"))
.forEach(writeLine);
var openFrames = allWindows.stream()
.filter(frame -> !lastOpenFrames.contains(frame))
.toList();
openFrames.stream()
- .map(window -> "{\"event\":\"new-frame\"}")
+ .map(frame -> createEvent("new-frame"))
.forEach(writeLine);
lastOpenWindows.addAll(openWindows);
}
}
+ private String createEvent(String name) {
+ Map<String, Object> reply = new HashMap<>();
+ reply.put("event", name);
+ try {
+ return objectMapper.writeValueAsString(reply);
+ } catch (JsonProcessingException e) {
+ return "";
+ }
+ }
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
private final ServerSocket serverSocket = new ServerSocket();
private final Runnable shutdownHook;
private final AtomicBoolean closed = new AtomicBoolean(false);