package Ġcore Ċ Ċ import Ġorg . example . core . I Rule Ċ Ċ class ĠRules Vi olations Ġ{ ĊĠĠĠ Ġvar Ġviolations Ġ= Ġmutable ListOf < Constraint Violation <* >>() ĊĊĠĠĠ Ġoperator Ġfun Ġget ( propertyName : ĠString ): ĠConstraint Violation < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġviolations . single OrNull Ġ{ Ġit . propertyName Ġ== ĠpropertyName Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġset ( propertyName : ĠString , Ġproperty Value : ĠAny ?, Ġrules Vi olated : ĠList < Rule Vi olated >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( vi olations . any Ġ{ Ġit . propertyName Ġ== ĠpropertyName Ġ}. not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviolations . add ( Constraint Violation ( propertyName , Ġproperty Value , Ġmutable ListOf ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġviolations . single Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . propertyName Ġ== ĠpropertyName ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . rules Vi olated Ġ+= Ġrules Vi olated ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠConstraint Violation Ġ< T > Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpropertyName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Value : ĠT ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrules Vi olated : ĠMutable List < Rule Vi olated > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġclass ĠRule Vi olated ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrule : ĠI Rule <* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation : ĠAnnotation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage : ĠString Ġ= Ġ" Message Ġnot Ġprovided " ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrule Name Ġ= Ġrule Class . name ĊĠĠĠ Ġ} Ċ } Ċ