/** Ċ Ġ* ĠĠ ĠCopyright Ġ 2 0 1 8 , ĠC ord ite ĠFoundation . Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . cord ite . network map . storage . jdbc Ċ Ċ import Ġio . cord ite . network map . serial isation . deserialize On Context Ċ import Ġio . cord ite . network map . serial isation . serialize On Context Ċ import Ġio . cord ite . network map . utils . J unit MD CR ule Ċ import Ġio . cord ite . network map . utils . Serialization Test Environment Ċ import Ġnet . cord a . core . node . Network Parameters Ċ import Ġorg . jetbrains . ex posed . sql .* Ċ import Ġorg . jetbrains . ex posed . sql . statements . Update Builder Ċ import Ġorg . jetbrains . ex posed . sql . transactions . Transaction Manager Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġorg . junit .* Ċ import Ġjava . sql . Connection Ċ import Ġjava . time . Instant Ċ import Ġkotlin . test . assertEquals ĊĊ Ċ @ Ignore Ċ open Ġclass ĠKey Value Table < T Ġ: ĠAny >( private Ġval Ġclazz : ĠClass < T >) Ġ: ĠTable () Ġ{ ĊĠ Ġprivate Ġval Ġkey Ġ= Ġvarchar (" key ", Ġ 1 0 2 4 ). primaryKey () ĊĠ Ġprivate Ġval Ġvalue Ġ= Ġblob (" value ") ĊĊĠ Ġopen Ġfun Ġassign ( update Builder : ĠUpdate Builder < Int >, Ġconnection : ĠConnection , Ġkey : ĠString , Ġvalue Ġ: ĠT ) Ġ{ ĊĠĠĠ Ġupdate Builder [ this . key ] Ġ= Ġkey ĊĠĠĠ Ġval Ġblob Ġ= Ġconnection . create Blob () ĊĠĠĠ Ġblob . set Bytes ( 1 , Ġvalue . serialize On Context (). bytes ) ĊĠĠĠ Ġupdate Builder [ this . value ] Ġ= Ġblob ĊĠ Ġ} ĊĊĠ Ġfun Ġextract ( row : ĠResult Row ) Ġ: ĠPair < String , ĠT > Ġ{ ĊĠĠĠ Ġval Ġk Ġ= Ġrow [ this . key ] ĊĠĠĠ Ġval Ġv Ġ= Ġrow [ this . value ]. deserialize On Context ( clazz ) ĊĠĠĠ Ġreturn Ġk Ġto Ġv ĊĠ Ġ} Ċ } Ċ Ċ object ĠNetwork Parameters Table Ġ: ĠKey Value Table < Network Parameters >( Network Parameters :: class . java ) Ġ{ ĊĠ Ġ// Ġadditional Ġfields , Ġthat Ġmay Ġbe Ġmade Ġindexed , Ġunique Ġetc ĊĠ Ġval Ġminimum Version Ġ= Ġinteger (" minimum _ version "). index (" minimum _ version _ idx ") ĊĊĠ Ġ// Ġwe Ġoverride Ġthe Ġassign Ġmethod Ġto Ġadd Ġthe Ġbehaviour Ġfor Ġthe Ġextracted Ġand Ġquery able Ġfields ĊĠ Ġoverride Ġfun Ġassign ( update Builder : ĠUpdate Builder < Int >, Ġconnection : ĠConnection , Ġkey : ĠString , Ġvalue : ĠNetwork Parameters ) Ġ{ ĊĠĠĠ Ġupdate Builder [ minimum Version ] Ġ= Ġvalue . minimum Platform Version ĊĠĠĠ Ġsuper . assign ( update Builder , Ġconnection , Ġkey , Ġvalue ) ĊĠ Ġ} Ċ } Ċ Ċ class ĠTemp Tests Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Class Rule ĊĠĠĠ Ġval Ġm dc Class Rule Ġ= ĠJ unit MD CR ule () ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Field ĊĠ Ġ@ Rule ĊĠ Ġval Ġm dc Rule Ġ= ĠJ unit MD CR ule () ĊĊĠ Ġ@ Before ĊĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠ ĠSerialization Test Environment . init () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` save Ġa Ġsimple Ġbinary Ġpayload Ġand Ġretrieve Ġit `() Ġ{ ĊĠĠĠ Ġval Ġk 1 Ġ= Ġ" foo " ĊĠĠĠ Ġval Ġv 1 Ġ= ĠNetwork Parameters ( ĊĠĠĠĠĠ Ġminimum Platform Version Ġ= Ġ 3 , ĊĠĠĠĠĠ Ġnot aries Ġ= ĠlistOf (), ĊĠĠĠĠĠ Ġmax Message Size Ġ= Ġ 1 0 0 0 , ĊĠĠĠĠĠ Ġmax Transaction Size Ġ= Ġ 2 0 0 0 , ĊĠĠĠĠĠ Ġmodified Time Ġ= ĠInstant . now (), ĊĠĠĠĠĠ Ġepoch Ġ= Ġ 1 , ĊĠĠĠĠĠ Ġwh itelisted Contract Implement ations Ġ= Ġmap Of () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġdb Ġ= ĠDatabase . connect ( url Ġ= Ġ" jdbc : h 2 : mem : test ", Ġdriver Ġ= Ġ" org . h 2 . Driver ") ĊĠĠĠ Ġtransaction ( db ) Ġ{ ĊĠĠĠĠĠ ĠSchema Utils . create ( Network Parameters Table ) ĊĠĠĠĠĠ ĠNetwork Parameters Table . insert Ġ{ ĊĠĠĠĠĠĠĠ Ġassign ( it , Ġdb . connector (), Ġk 1 , Ġv 1 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġresult Ġ= ĠNetwork Parameters Table . select Ġ{ ĠNetwork Parameters Table . minimum Version . eq ( v 1 . minimum Platform Version )}. first () ĊĠĠĠĠĠ Ġval Ġ( k 2 , Ġv 2 ) Ġ= ĠNetwork Parameters Table . extract ( result ) ĊĠĠĠĠĠ ĠassertEquals ( k 1 , Ġk 2 ) ĊĠĠĠĠĠ ĠassertEquals ( v 1 , Ġv 2 ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠTransaction Manager . close And Unregister ( db ) ĊĠ Ġ} Ċ }