package Ġm ary k . core . models Ċ Ċ import Ġm ary k . core . properties . ObjectProperty Definitions Ċ import Ġm ary k . core . properties . definitions . Embedded Object Definition Ċ import Ġm ary k . core . properties . definitions . Is Embedded Object Definition Ċ import Ġm ary k . core . properties . definitions . Is Property Definition Ċ import Ġm ary k . core . properties . definitions . wrapper . Object List Definition Wrapper Ċ import Ġm ary k . core . properties . exceptions . Validation U mb rella Exception Ċ import Ġm ary k . core . properties . references . Is Property Reference Ċ import Ġm ary k . core . query . RequestContext Ċ import Ġm ary k . core . values . Is Value Items Ċ import Ġm ary k . core . values . Mutable Value Items Ċ import Ġm ary k . core . values . Object Values Ċ Ċ /** ĠA ĠData Model Ġwhich Ġholds Ġproperties Ġand Ġcan Ġbe Ġvalidated Ġ*/ Ċ interface ĠIs Object DataModel < DO Ġ: ĠAny , ĠP Ġ: ĠObject Property Definitions < DO >> Ġ: ĊĠĠĠ ĠIs DataModel With Values < DO , ĠP , ĠObject Values < DO , ĠP >> Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠValidate Ġa Ġ[ data Object ] Ġand Ġget Ġreference Ġfrom Ġ[ ref Getter ] Ġif Ġexception Ġneeds Ġto Ġbe Ġthrown ĊĠĠĠĠ Ġ* Ġ@ throws ĠValidation U mb rella Exception Ġif Ġinput Ġwas Ġinvalid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġvalidate ( data Object : ĠDO , Ġref Getter : Ġ() Ġ-> ĠIs Property Reference < DO , ĠIs Property Definition < DO >, Ġ* >? Ġ= Ġ{ Ġnull Ġ}) ĊĊĠĠĠ Ġ/** ĠCreates Ġa ĠData ĠObject Ġby Ġ[ values ] Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( values : ĠObject Values < DO , ĠP >): ĠDO ĊĊĠĠĠ Ġ/** ĠCreate Ġa ĠObject Values Ġwith Ġgiven Ġ[ create Values ] Ġfunction Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġvalues ( context : ĠRequest Context ?, Ġcreate Values : ĠP . () Ġ-> ĠIs Value Items ) Ġ= ĊĠĠĠĠĠĠĠ ĠObject Values ( this , Ġcreate Values ( this . properties ), Ġcontext ) Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġa ĠData Object Ġback Ġto ĠObject Values Ċ Ġ*/ Ċ fun Ġ< DO Ġ: ĠAny , ĠDM Ġ: ĠIs Object DataModel < DO , ĠP >, ĠP Ġ: ĠObject Property Definitions < DO >> ĠDM . as Values ( ĊĠĠĠ ĠdataObject : ĠDO , ĊĠĠĠ Ġcontext : ĠRequest Context ? Ġ= Ġnull Ċ ): ĠObject Values < DO , ĠP > Ġ{ ĊĠĠĠ Ġval Ġmutable Map Ġ= ĠMutable Value Items () ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfor Ġ( property Ġin Ġthis . properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( property ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠObject List Definition Wrapper < out ĠAny , Ġ*, Ġ*, Ġ*, ĠDO > Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Model Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( property . definition . value Definition Ġas ĠEmbedded Object Definition < Any , ĠObject Property Definitions < Any >, Ġ*, Ġ*, Ġ*> ). data Model Ġas ĠIs Object DataModel < Any , ĠObject Property Definitions < Any >> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty . getter ( data Object )?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map [ property . index ] Ġ= Ġlist . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Model . as Values ( it , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIs Embedded Object Definition < *, Ġ*, Ġ*, Ġ*, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Model Ġ= Ġproperty . data Model Ġas ĠIs Object DataModel < Any , ĠObject Property Definitions < Any >> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty . getter ( data Object )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map [ property . index ] Ġ= Ġdata Model . as Values ( it , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġproperty . getter ( data Object )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map [ property . index ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġthis . values ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable Map ĊĠĠĠ Ġ} Ċ } Ċ