Validierung
Jeder Wert wird vor dem Setzen mit Bean Validation geprüft. Alle Verstöße eines Aufrufs kommen gemeinsam zurück, jeder mit seinem Pfad.
Annotationen am Modell
Der Mapper ruft für jede Property validateValue mit dem Wert aus dem JSON auf. Ein Wert, der einen Constraint verletzt, wird nicht gesetzt.
Eine Exception mit allen Verstößen
Nachdem der ganze Graph besucht ist, wirft der Mapper ErrorRequestException, falls etwas abgelehnt wurde. Jede ErrorRequest trägt einen Pfad durch den Graphen, samt Collection-Indizes, und die Meldung des Constraints.
ErrorRequest ist selbst für JSON annotiert; ein REST-Endpunkt kann die Liste direkt als Fehlerantwort serialisieren.
Gültige Werte sind schon gesetzt
Die Validierung läuft pro Property. Wenn die Exception fliegt, sind die gültigen Properties desselben Aufrufs bereits geschrieben.
Deserialisiere verwaltete Entities in einer Transaktion und rolle sie bei ErrorRequestException zurück, oder arbeite auf einer Kopie. Sonst hinterlässt eine abgelehnte Anfrage ein teilweise aktualisiertes Objekt.