feat(fls): write the topology of a .fls, loaded by Java as the original

topologyWriter.ts writes konfiguration.xml from Java's view of a project:
the version line, the node items (label position, device with name,
host label flags, interfaces or ports), the cable items and the
documentation items. What a device's constructor makes is changed through
getters, as XMLEncoder does, and more is added; fewer than it makes set the
list anew. Cable ends name the port objects the getters return (the writer
now names a getter's result, <void id="Port0" property="port"/>), and each
cable carries the nodes the editor draws it between.

Checked by Java against Java: every corpus file, read and written again,
loads in Java FILIUS (the oracle's loading method, --sha256 ties its result
to the written bytes) to the same devices, names, positions, interfaces,
cables and documentation as the original; so does a synthetic topology with
what the corpus never sets. The oracle and the reader now also report a
cable's drawing ends (JCablePanel ziel1/ziel2): in the corpus the nodes it
joins, for all 183 cables. Mutation probes rewrite the files and let Java
load each mutant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 08:04:21 +00:00
co-authored by Claude Opus 5.5
parent 3795316fae
commit 314f696515
17 changed files with 16251 additions and 204 deletions
+41
View File
@@ -296,6 +296,47 @@
],
"errors": []
},
"references.xml": {
"values": [
{
"id": 0,
"class": "java.util.LinkedList",
"items": [
{
"id": 1,
"class": "filius.hardware.NetzwerkInterface",
"properties": {
"dns": {
"string": ""
},
"gateway": {
"string": ""
},
"ip": {
"string": "10.0.0.1"
},
"mac": {
"string": "8E:A8:7E:96:38:62"
},
"port": {
"id": 2,
"class": "filius.hardware.Port",
"properties": {}
},
"subnetzMaske": {
"string": "255.255.255.0"
},
"wireless": false
}
},
{
"ref": 2
}
]
}
],
"errors": []
},
"shared.xml": {
"values": [
{
+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<java version="17" class="java.beans.XMLDecoder">
<object class="java.util.LinkedList">
<void method="add">
<object class="filius.hardware.NetzwerkInterface">
<void property="ip">
<string>10.0.0.1</string>
</void>
<void id="Port0" property="port"/>
</object>
</void>
<void method="add">
<object idref="Port0"/>
</void>
</object>
</java>