/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠLINE ĠCorporation Ċ Ġ* Ċ Ġ* ĠLINE ĠCorporation Ġlicenses Ġthis Ġfile Ġto Ġyou Ġ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 : Ċ Ġ* Ċ Ġ* ĠĠ Ġhttps :// 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 Ġcom . line corp . ar mer ia . server . kotlin Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . node . Array Node Ċ import Ġcom . line corp . ar mer ia . client . Web Client Ċ import Ġcom . line corp . ar mer ia . server . Server Builder Ċ import Ġcom . line corp . ar mer ia . server . annotation . Default Ċ import Ġcom . line corp . ar mer ia . server . annotation . Get Ċ import Ġcom . line corp . ar mer ia . server . annotation . Param Ċ import Ġcom . line corp . ar mer ia . server . docs . Doc Service Ċ import Ġcom . line corp . ar mer ia . testing . junit 5 . server . Server Extension Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Register Extension Ċ Ċ class ĠData Class Doc Service Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdata Class Param Specification () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠWeb Client . of ( server . http Uri ()). blocking () ĊĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= Ġclient . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ docs / specification . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Json ( JsonNode :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content () !! ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġjson Node . get (" services ")[ 0 ][" methods "][ 0 ][" parameters "][ 0 ][" child Field Infos "] Ġas ĠArray Node ĊĠĠĠĠĠĠĠ ĠassertThat ( fields ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( fields [ 0 ][" name "]. as Text ()). isEqualTo (" name ") ĊĠĠĠĠĠĠĠ ĠassertThat ( fields [ 1 ][" name "]. as Text ()). isEqualTo (" limit ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġ@ Register Extension ĊĠĠĠĠĠĠĠ Ġval Ġserver Ġ= Ġobject Ġ: ĠServer Extension () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconfigure ( sb : ĠServer Builder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . annotated Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Converters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . annotated Service ( My Kotlin Service ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . service Under ("/ docs ", ĠDoc Service ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMy Kotlin Service Ġ{ ĊĠĠĠ Ġ@ Get ("/ example ") ĊĠĠĠ Ġfun ĠgetId (@ Suppress (" UNUSED _ PARAMETER ") Ġqueries : ĠExample Queries ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" example " ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠExample Queries ( ĊĠĠĠ Ġ@ Param ĊĠĠĠ Ġval Ġname : ĠString , ĊĊĠĠĠ Ġ@ Param Ġ@ Default ĊĠĠĠ Ġval Ġlimit : ĠInt ? Ċ ) Ċ Ċ data Ġclass ĠExample Body ( val Ġname : ĠString , Ġval Ġlimit : ĠInt ?) Ċ