package Ġorg . github . gest alt . config . kotlin . decoder Ċ Ċ import Ġorg . github . gest alt . config . decoder . Decoder Ċ import Ġorg . github . gest alt . config . decoder . Decoder Service Ċ import Ġorg . github . gest alt . config . decoder . Priority Ċ import Ġorg . github . gest alt . config . entity . ValidationError Ċ import Ġorg . github . gest alt . config . kotlin . entity . Data Class Can Not Be Construct ed Ċ import Ġorg . github . gest alt . config . kotlin . entity . Data Class Has No Constructor Ċ import Ġorg . github . gest alt . config . kotlin . entity . Data Class Missing Required Member Ċ import Ġorg . github . gest alt . config . kotlin . reflect . K Type Capture Ċ import Ġorg . github . gest alt . config . node . Config Node Ċ import Ġorg . github . gest alt . config . node . Map Node Ċ import Ġorg . github . gest alt . config . reflect . Type Capture Ċ import Ġorg . github . gest alt . config . utils . Validate Of Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . create Instance Ċ Ċ /** Ċ Ġ* ĠKotlin ĠData ĠDecoder . Ċ Ġ* ĠBuilds Ġa ĠKotlin ĠData Ġclass Ġby Ġcreating Ġa Ġmap Ġof Ġparameters . ĠIf Ġthere Ġare Ġany Ġmissing Ġrequired Ġparameters Ġit Ġfails . Ċ Ġ* ĠRequired Ġparameters Ġare Ġones Ġthat Ġdon 't Ġhave Ġa Ġdefault Ġand Ġare Ġnot Ġnullable . ĠAn Ġexception Ġwill Ġbe Ġthrown Ġin Ġthis Ġcase . Ċ Ġ* Ċ Ġ* Ġ< p > If Ġall Ġmembers Ġare Ġoptional Ġand Ġwe Ġhave Ġno Ġparameters Ġwe Ġwill Ġtry Ġand Ġcreate Ġthe Ġclass Ġwith Ġthe Ġdefault Ġempty Ġconstructor . Ċ Ġ* Ċ Ġ* Ġ@ author ĠCol in ĠRed mond Ċ Ġ*/ Ċ class ĠData Class Decoder Ġ: ĠDecoder < Any > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġname (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Data Class " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpriority (): ĠPriority Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPriority . MEDIUM ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmatches ( klass : ĠType Capture < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( klass Ġis ĠK Type Capture <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclassifier Ġ= Ġklass . k Type . classifier ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( classifier Ġis ĠK Class <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclassifier . is Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecode ( path : ĠString , Ġnode : ĠConfig Node , Ġtype : ĠType Capture <* >, Ġdecoder Service : ĠDecoder Service ): ĠValidate Of < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( node Ġ! is ĠMap Node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠValidate Of . in Valid ( ValidationError . De coding Expected Leaf NodeType ( path , Ġnode , Ġname ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġis ĠK Type Capture <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclassifier Ġ= Ġtype . k Type . classifier ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( classifier Ġis ĠK Class < *> Ġ&& Ġclassifier . is Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( classifier . construct ors . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠValidate Of . in Valid ( Data Class Has No Constructor ( path , Ġclassifier . simple Name Ġ?: Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġclassifier . construct ors . first () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerrors : ĠMutable List < ValidationError > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmissing Members : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġconstructor . parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate With Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Path Ġ= Ġif Ġ( path . isNotEmpty ()) Ġ"$ path .${ it . name }" Ġelse Ġit . name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Node Ġ= Ġdecoder Service . getNext Node ( next Path , Ġit . name , Ġnode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . addAll ( config Node . errors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresults : ĠAny ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! it . is Optional Ġ&& Ġ! config Node . has Results () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmissing Members . add ( it . name Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Node . has Results () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġdecoder Service . decode Node ( next Path , Ġconfig Node . results (), ĠK Type Capture . of < Any >( it . type )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . addAll ( parameter . errors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! parameter . has Results ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidationError . No Results Found For Node ( next Path , Ġit . type . classifier . toString (), Ġ" data Ġdecoding ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġparameter . results () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Values Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmissing Members . isNotEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . add ( Data Class Missing Required Member ( path , Ġclassifier . simple Name Ġ?: Ġ"", Ġmissing Members )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidate Of . in Valid ( errors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . isNotEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidate Of . validate Of ( constructor . call By ( parameters ), Ġerrors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġtry Ġand Ġuse Ġthe Ġdefault Ġconstructor , Ġit Ġmay Ġprovide Ġall Ġthe Ġdefault Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġnot Ġit Ġwill Ġfail Ġconstructing . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidate Of . validate Of ( classifier . create Instance (), Ġerrors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . add ( Data Class Can Not Be Construct ed ( path , Ġclassifier . simple Name Ġ?: Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidate Of . in Valid ( errors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠValidate Of . in Valid ( Data Class Can Not Be Construct ed ( path , Ġ"")) ĊĠĠĠ Ġ} Ċ } Ċ