Java validace – Sapia Vlad

Úvod

Vlad je validační framework java objektů – bean. Mezi hlavní výhody patří to, že na rozdíl od standardního JSR 303, umožňuje validovat jednotlivé objekty různými pravidly. Validační pravidla se definují v XML konfiguračních souborech a lze je vzájemně přepisovat. Tyto konfigurační soubory se vkládají do validátorů – org.sapia.validator.Vlad.


Vlastnosti:

  • Validace se definují vně validované třídy
  • Pro jednu třídu lze použít více validačních pravidel
    • Definicí více validátorů (rozdílný validační předpis XML)
    • Spouštění rozdílných úloh / validačních pravidel (RuleSet) v rámci jednoho validátoru
  • Validační pravidla lze přepisovat (poslední vyhrává) – ideální pro PRODUCT <> CUSTOM vývoj

Nastavení

Pro zapojení knihovny je potřeba do projektu přidat MVN závislost.

Validace

Nastavení validací se provádí pomocí validačních pravidel. Definice pravidel se nachází v souboru vlad_rules.xml, který je součástí knihovny sapia-vlad-x.x.jar. Seznam pravidel je vyjmenován na stránkách projektu – Rule Reference. Pravidla si lze vytvářet vlastní.

Konfigurace

 

Vlad bohužel nepodporuje proměnné / konstanty. Tím by se daly elegantně řešit společné patterny atd.

Validační pravidla – Rule

Pro tvorbu vlastních pravidel lze použít předka org.sapia.validator.Rule (nebo BeanRule).

Uvedený příklad provádí validaci hodnoty na výskyt v číselníku identifikovaným pomocí kóducodelist.

Tyto vlastní pravidla je potřeba následně zaregistrovat:

A následuje příklad použití:

Validační pravidla – Condition

V rámci vlastních pravidel je možné řídit validace na základě splnění předem definnovaných podmínek. To lze zajistit implementováním rozhraní org.sapia.util.xml.confix.ObjectHandlerIF do pravidla – Rule.

Uvedená podmínka spustí zapozdřenou validaci, pokud je hodnota atributu validovaného objektu shodná s nastavenou hodnotou value. Spuštění validací obstarává v tomto případě předek AbstractRuleCondition.

Tuto podmínku je opět nutné zaregistrovat:

A použití:

Spring context

Nastavení springového aplikačního kontextu je triviální, stačí danému validátoru nastavit seznam souborů s nadefinovanými validačními pravidly.

 

Připomínám, že je možné nastavit libovolný počet validátorů, nebo použít třeba jen jeden a řídit validace přes názvy validačních pravidel (případně to vše kombinovat).

Rozšířit základní vladValidator o CUSTOM pravidla lze následovně:

Závěr

Framework Vlad je vhodné použít tam, kde je potřeba provozovat totožný / společný kód v destinacích s různými validačními požadavky. Pak stačí vydefinovat společné výchozí validace a pro dané destinace validace a) rozšířit (např. checkEntityExtended) b) přepsat (např. checkEntityStatusEnum) “country specific” část.

Zdroje

Leave a Reply

Your email address will not be published. Required fields are marked *