package Ġcom . on eli ang . k tx . util . common čĊč Ċ import Ġcom . on eli ang . k tx . Constants č Ċ import Ġcom . on eli ang . k tx . exception . Method Invoke Exception čĊč Ċ fun Ġ< T Ġ: ĠAny > ĠMap < String , ĠArray < String >> . toObject ( instance : ĠT , Ġclass Processor : ĠKotlin Class Util . Kotlin Class Processor Ġ= ĠKotlin Class Util . DEFAULT _ K OT LIN _ CLASS _ PROCESS OR ) Ġ{ čĊĠĠĠ Ġif Ġ( this . isEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠ Ġ} čĊĠĠĠ Ġval Ġmethods Ġ= Ġinstance . java Class . methods čĊĠĠĠ Ġfor Ġ( method Ġin Ġmethods ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġmethod . name čĊĠĠĠĠĠĠĠ Ġval ĠfieldName Ġ= Ġif Ġ( methodName . startsWith ( Constants . Method . PREFIX _ SET )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Util . methodName To FieldName ( Constants . Method . PREFIX _ SET , ĠmethodName ) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . String . BLANK čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( fieldName . isBlank ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ(! this . containsKey ( fieldName )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġthis [ fieldName ] Ġ?: Ġcontinue čĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġmethod . parameter Types čĊĠĠĠĠĠĠĠ Ġif Ġ( classes . size Ġ== Ġ 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠKotlin Class Util . change Type ( classes [ 0 ]. kotlin , Ġvalues , ĠfieldName , Ġclass Processor ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( instance , Ġvalue ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMethod Invoke Exception ( e ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊč Ċ @ Throws ( Exception :: class ) č Ċ fun Ġ< T Ġ: ĠAny > ĠMap < String , ĠArray < String >> . toObject List ( clazz : ĠClass < T >, Ġclass Processor : ĠKotlin Class Util . Kotlin Class Processor Ġ= ĠKotlin Class Util . DEFAULT _ K OT LIN _ CLASS _ PROCESS OR ): ĠList < T > Ġ{ čĊĠĠĠ Ġif Ġ( this . isEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () čĊĠĠĠ Ġ} čĊĠĠĠ Ġval Ġmethods Ġ= Ġclazz . methods čĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < T >() čĊĠĠĠ Ġfor Ġ( method Ġin Ġmethods ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġmethod . name čĊĠĠĠĠĠĠĠ Ġval ĠfieldName Ġ= Ġif Ġ( methodName . startsWith ( Constants . Method . PREFIX _ SET )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Util . methodName To FieldName ( Constants . Method . PREFIX _ SET , ĠmethodName ) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . String . BLANK čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( fieldName . isBlank ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ(! this . containsKey ( fieldName )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġthis [ fieldName ] Ġ?: Ġcontinue čĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġmethod . parameter Types čĊĠĠĠĠĠĠĠ Ġif Ġ( classes . size Ġ!= Ġ 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġparameter Value ) Ġin Ġvalues . with Index ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance : ĠT čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġlist . size ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= Ġlist [ i ] čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= Ġclazz . newInstance () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( instance ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠKotlin Class Util . change Type ( classes [ 0 ]. kotlin , ĠarrayOf ( parameter Value ), ĠfieldName , Ġclass Processor ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( instance , Ġvalue ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMethod Invoke Exception ( e ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠ Ġreturn Ġlist č Ċ } čĊč Ċ fun Ġ< K , ĠV , ĠR > ĠMap < K , ĠV >. toList ( transform : Ġ( K , ĠV ) Ġ-> ĠR ): ĠList < R > Ġ{ čĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < R >() čĊĠĠĠ Ġthis . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> čĊĠĠĠĠĠĠĠ Ġlist . add ( transform ( key , Ġvalue )) čĊĠĠĠ Ġ} čĊĠĠĠ Ġreturn Ġlist č Ċ }