Zum Inhalt springen
Anjunar/ DOCS

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.

Constraints

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.

scala
import jakarta.validation.constraints.{NotBlank, Size} class UserDto extends DTO { @(NotBlank @field) @(Size @field)(max = 80) @(JsonbProperty @field) var name: String = null }
Fehler

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.

scala
import com.anjunar.json.mapper.ErrorRequestException try JsonMapper.deserialize(JsonParser.parse("""{"name": ""}"""), target, TypeResolver.resolve(classOf[UserDto]), null, loader, inject, validator) catch case error: ErrorRequestException => error.errors.forEach(request => println(s"${request.path} ${request.message}"))
Ausgabe
[name] must not be blank

ErrorRequest ist selbst für JSON annotiert; ein REST-Endpunkt kann die Liste direkt als Fehlerantwort serialisieren.

Transaktionen

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.

Bei Fehlern zurückrollen

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.