Schemas und Regeln
Ein Schema listet die Properties, die eine Entity zeigt. Eine Regel pro Property entscheidet je Instanz, ob sie sichtbar ist und ob sie geschrieben werden darf.
Ein Companion, der es liefert
Das Companion-Objekt erweitert SchemaProvider und deklariert eine verschachtelte Klasse Schema. property wählt eine Property typsicher über ein Makro aus scala-reflect.
Nur, was das Schema listet
Mit Schema wird eine nicht gelistete Property weder serialisiert noch deserialisiert, auch mit @JsonbProperty. Ohne Regel-Argument gilt DefaultRule: sichtbar, aber nur lesbar.
- DefaultRule[E]
- Sichtbar, nie schreibbar. Der Standard.
- DefaultWritableRule[E]
- Sichtbar und schreibbar.
- VisibilityRule[E]
- Eigene Regel: isVisible und isWriteable je Instanz und Property.
Entscheidungen je Instanz
Eine Regel sieht Instanz und Property. Sie entsteht über die inject-Funktion und darf deshalb Abhängigkeiten im Konstruktor nehmen, etwa den aktuellen Benutzer.
Eine Property, die die Regel verbirgt, fehlt im JSON ganz, und eine, die sie nicht schreiben lässt, wird beim Eintreffen still ignoriert. Clients sehen dafür nie einen Fehler.