sebastianknopf / uic-tlb-interpreter

interpreter library for UIC layout tickets
Other
0 stars 0 forks source link

Optionale Felder #1

Closed sebastianknopf closed 4 months ago

sebastianknopf commented 4 months ago

Zusammenfassung Stand jetzt ist es nicht möglich, Layoutfelder in ihrem Vorhandensein als optional zu kennzeichnen. Es kann bisher lediglich der Ergebniswert als optional gekennzeichnet werden, was bedeutet, dass dieser Null werden darf. Wenn jedoch das referenzierte Layoutfeld nicht vorhanden ist, wird eine Exception geworfen.

Zukünftig soll keine Exception mehr geworfen werden, wenn ein referenziertes Layoutfeld nicht enthalten ist. Stattdessen soll der gesamte Ergebniswert als "nicht vorhanden" (=Null) gekennzeichnet werden.

Beispiel: Ein Issuer gibt Barcodes mit derselben MessageTypeVersion und derselben Record-Version aus. Auch das Layout ist gleich, nur das Feld für das Geburtsdatum ist manchmal vorhanden und manchmal nicht. Nach bisherigem Stand müssten für diese beiden Fälle zwei Interpreter hinterlegt werden, einer mit und einer ohne Geburtsdatum. Wird nun durch ungeschickte Dateibenennung aber zunächst der Interpreter ohne Geburtsdatum versucht auszuführen, führt das unweigerlich dazu, dass das Geburtsdatum nie für diesen Issuer ausgelesn wird, da der erste Versuch mit dem Interpreter ohne Geburtsdatum immer gelingen wird und der zweite Interpreter so nie zum Zuge käme. Indem das Geburtsdatum als optional gekennzeichnet wird, kann es problemlos auch den Wert Null annehmen, wenn das Layoutfeld dazu nicht vorhanden ist.

Akzeptanzkriterien

sebastianknopf commented 4 months ago

Das geforderte Verhalten ist bereits vorhanden, Layoutfelder können bereits einzeln als optional markiert werden. In diesem Fall muss die "optional"-Eigenschaft im Feld selbst, nicht im Ergebniswert auf true gesetzt werden.

Auch im JSON-Schema ist dies bereits enthalten.