Es war einmal … nein, kein Komma. Ein harmloser Software-Entwickler.
Seine Aufgabe bestand darin, eine aus irgendeinem Tool exportierte XML-Datei zu laden und in Java-Objekte zu serialisieren.
In einer Beispiel-Datei (ein Schema oder eine Doku wurden nicht zur Verfügung gestellt) stand zum Beispiel so etwas wie das hier:
<numFiles>712</numFiles>
Das ist ja ganz einfach, man schreibt sich eine Model-Klasse:
public class Whatever {
...
private long numFiles;
...
// getter und setter
}
Schlau, wie wir sind, nehmen wir long, nicht int, denn man weiß ja nie, von was für Dateimengen hier die Rede ist.
Man kann Jackson benutzen, um aus dem XML ein Java-Objekt zu machen:
XmlMapper xmlMapper = new XmlMapper();
Whatever whatever = xmlMapper.readValue(new File(filePath), Whatever.class);
Der Code funktionierte einwandfrei. Er lief (gefühlt) jahrelang problemlos.
Bis eines schönen Tages an einem Freitag dem 13. jemand einen Fehler meldete: Eine seiner XML-Dateien könne nicht geladen werden. Das Programm habe wohl einen Fehler.
Es gab ja keine Codeänderung, also musste es an der fraglichen XML-Datei liegen.
In der Datei fand sich nun folgendes:
<numFiles>2,315</numFiles>
Das ist aus Sicht des XML-Parsers natürlich kein Long, sondern ein String oder (bestenfalls, falls englische Locale voreingestellt ist) ein Double.
Wer zum Kuckuck schreibt einen numerischen Wert in eine XML-Datei mit Tausendertrennzeichen?!
Dazu gibt’s nur einen möglichen Kommentar:
#fail
In diesem Sinne, mögen euch unnötige Kommas erspart bleiben!