package Ġio . v rap . codegen . languages . jav al ang . client . builder . requests Ċ Ċ import Ġcom . google . common . collect . Lists Ċ import Ġcom . google . common . net . MediaType Ċ import Ġio . v rap . codegen . languages . extensions .* Ċ import Ġio . v rap . codegen . languages . java . base . Java Sub Templates Ċ import Ġio . v rap . codegen . languages . java . base . extensions .* Ċ import Ġio . v rap . rm f . codegen . first UpperCase Ċ import Ġio . v rap . rm f . codegen . first LowerCase Ċ import Ġio . v rap . rm f . codegen . io . Template File Ċ import Ġio . v rap . rm f . codegen . rendering . Method Renderer Ċ import Ġio . v rap . rm f . codegen . rendering . utils . escape All Ċ import Ġio . v rap . rm f . codegen . rendering . utils . keep Indent ation Ċ import Ġio . v rap . rm f . codegen . types . V rap ObjectType Ċ import Ġio . v rap . rm f . codegen . types . V rap Scalar Type Ċ import Ġio . v rap . rm f . codegen . types . V rap Type Provider Ċ import Ġio . v rap . rm f . r aml . model . resources . Method Ċ import Ġio . v rap . rm f . r aml . model . resources . Resource Ċ import Ġio . v rap . rm f . r aml . model . resources . Trait Ċ import Ġio . v rap . rm f . r aml . model . types .* Ċ import Ġio . v rap . rm f . r aml . model . types . Annotation Ċ import Ġio . v rap . rm f . r aml . model . util . String Case Format Ċ import Ġorg . eclipse . emf . ecore . EObject Ċ Ċ /** Ċ Ġ* ĠQuery Ġparameters Ġwith Ġthis Ġannotation Ġshould Ġbe Ġignored Ġby ĠJVM Ġsdk . Ċ Ġ*/ Ċ const Ġval ĠPL ACE HOLDER _ PARAM _ AN NOT ATION Ġ= Ġ" placeholder Param " Ċ Ċ class ĠJava HttpRequest Renderer Ġconstructor ( override Ġval Ġv rap Type Provider : ĠV rap Type Provider ) Ġ: ĠMethod Renderer , ĠJava ObjectType Extensions , ĠJava E ObjectType Extensions Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( type : ĠMethod ): ĠTemplate File Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv rap Type Ġ= Ġv rap Type Provider . do Switch ( type Ġas ĠE Object ) Ġas ĠV rap ObjectType ĊĊĠĠĠĠĠĠĠ Ġval Ġimplements Ġ= ĠLists . newArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġex Ġ= Ġtype . getAnnotation (" java - implements ") Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAnnotation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ex . value Ġas ĠString Instance ). value . escape All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype .` is `. distinct By Ġ{ Ġit . trait . name Ġ}. map Ġ{ Ġ"${ it . trait . className ()} < ${ type . to Request Name () }> ". escape All () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter NotNull () ĊĠĠĠĠĠĠĠ Ġval Ġbody Type Ġ= Ġif Ġ( type . bodies Ġ!= Ġnull Ġ&& Ġtype . bodies . isNotEmpty () Ġ&& Ġtype . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġapi Method Class Ġ= Ġif ( body Type Ġ!= Ġnull ) Ġ" Body Api Method " Ġelse Ġ" Api Method " ĊĠĠĠĠĠĠĠ Ġval Ġbody Type Class Ġ= Ġif ( body Type Ġ!= Ġnull ) Ġ", Ġ${ body Type .` package `. to Java Package ()}. ${ body Type . simple Name () }" Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| package Ġ${ v rap Type .` package `. to Java Package ()}; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġio . v rap . rm f . base . client . utils . Utils ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . io . InputStream ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . io . IOException ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . net . URI ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . net . URLConnection ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . nio . charset . StandardCharsets ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . nio . file . Files ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . time . Duration ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . ArrayList ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . List ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . Map ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . HashMap ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . Optional ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . function . Function ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . function . Supplier ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . stream . Collectors ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . util . concurrent . Comp letableFuture ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġio . v rap . rm f . base . client . utils . Generated ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjavax . annotation . Nullable ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . io . Unsupported EncodingException ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġjava . net . URL Encoder ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġio . v rap . rm f . base . client .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ type . imports ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġorg . apache . commons . lang 3 . builder . Equals Builder ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġorg . apache . commons . lang 3 . builder . HashCode Builder ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġstatic Ġio . v rap . rm f . base . client . utils . Client Utils . blocking Wait ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ type . to Comment (" Ġ* "). escape All ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġ\< hr \> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ< ${ type . builder Comment (). escape All () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|< ${ Java Sub Templates . generated Annotation }> ${ if Ġ( type . mark Deprecated () Ġ) Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| @ Deprecated """ Ġelse Ġ"" } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġclass Ġ${ type . to Request Name ()} Ġextends Ġ$ api Method Class \< ${ type . to Request Name ()}, Ġ${ type . java ReturnType ( v rap Type Provider )} $ body Type Class \ >${ if Ġ( implements . isNotEmpty ()) Ġ" Ġimplements Ġ${ implements . join ToString (", Ġ") }" Ġelse Ġ"" } Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . fields () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . constructor () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . copy Constructor () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . build Request Method () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . execute Blocking Method () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . execute Method () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . path Arguments Get ters () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . queryParams Get ters () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . path Arguments Set ters () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . queryParams Set ters () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . queryParams Template Set ters () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . body Methods () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . form Param Methods () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . equals Method () }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġprotected Ġ${ type . to Request Name ()} Ġcopy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġreturn Ġnew Ġ${ type . to Request Name ()} ( this ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. keep Indent ation () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠTemplate File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Path Ġ= Ġ"${ v rap Type .` package ` }.${ type . to Request Name ()} ". replace (".", Ġ"/") Ġ+ Ġ". java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun ĠMethod . builder Comment (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġthis . e Container () Ġas ĠResource ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| \< div Ġclass = code - example \> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| \< pre \ >\ < code Ġclass =' java '\ >{@ code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠCompletableFuture \< Api HttpResponse \< ${ this . java ReturnType ( v rap Type Provider )}\ >\ > Ġresult Ġ= Ġapi Root ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġ< ${ builder Comment ( resource , Ġthis )}> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| }\ </ code \ >\ </ pre \> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|\ </ div \> ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation (). split ("\ n "). join ToString ("\ n ", Ġtransform Ġ= Ġ{ Ġ"* Ġ$ it "}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuilder Comment ( resource : ĠResource , Ġmethod : ĠMethod ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresource . resource Path List (). map Ġ{ Ġr Ġ-> Ġ". ${ r . get MethodName ()} (${ if Ġ( r . relative Uri . param Values (). isNotEmpty ()) Ġ"\" ${ r . relative Uri . param Values (). join ToString ("\ ", Ġ\" ") Ġ{ Ġp Ġ-> Ġ" {$ p } "} Ġ}\ "" Ġelse Ġ"" })" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (". ${ method . method } (${ body Content ( method )}) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( method . query Parameters . filter Ġ{ Ġit . required Ġ}. map Ġ{ Ġ". with ${ it . fieldName (). first UpperCase ()} (${ it . fieldName () })" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (". execute () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbody Content ( method : ĠMethod ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Def Ġ= Ġmethod . first Body () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( body Def Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body Def . type . isFile ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" file " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" null " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . equals Method () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody : ĠString Ġ= Ġif Ġ( this . bodies Ġ!= Ġnull Ġ&& Ġthis . bodies . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body V rap Type Ġ= Ġthis . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Body V rap Type . simple ClassName . first LowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bodies [ 0 ]. content MediaType .` is `( MediaType . FORM _ DATA ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" form Params " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" obj " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġthis . path Arguments (). plus ( body ). filter Not Ġ{ Ġs Ġ-> Ġs . isEmpty () Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| @ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġboolean Ġequals ( Object Ġo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġif Ġ( this Ġ== Ġo ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġif Ġ( o Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġo . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ${ this . to Request Name ()} Ġthat Ġ= Ġ(${ this . to Request Name () }) Ġo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġnew ĠEquals Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ< ${ fields . join ToString ("\ n ") Ġ{ Ġ". append (${ it }, Ġthat .${ it })" Ġ}}> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Equals (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| @ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġint ĠhashCode () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġnew ĠHash Code Builder ( 1 7 , Ġ 3 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ< ${ fields . join ToString ("\ n ") Ġ{ Ġ". append (${ it })" Ġ}}> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ. to HashCode (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTrait . className (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv rap Type Ġ= Ġv rap Type Provider . do Switch ( this Ġas ĠE Object ) Ġas ĠV rap ObjectType ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ v rap Type .` package `. to Java Package ()}. ${ v rap Type . simple ClassName }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . constructor (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstructor Arguments Ġ= Ġmutable ListOf (" final ĠApi HttpClient Ġapi HttpClient ") ĊĠĠĠĠĠĠĠ Ġval Ġconstructor Assignments Ġ= Ġmutable ListOf (" super ( api HttpClient ); ") ĊĊĠĠĠĠĠĠĠ Ġthis . path Arguments (). map Ġ{ Ġ" String Ġ$ it " Ġ}. forEach Ġ{ Ġconstructor Arguments . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġthis . path Arguments (). map Ġ{ Ġ" this .$ it Ġ= Ġ$ it ;" Ġ}. forEach Ġ{ Ġconstructor Assignments . add ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( this . bodies Ġ!= Ġnull Ġ&& Ġthis . bodies . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body V rap Type Ġ= Ġthis . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body Argument Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ method Body V rap Type .` package `. to Java Package ()}. ${ method Body V rap Type . simple ClassName } Ġ${ method Body V rap Type . simple ClassName . first LowerCase () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Arguments . add ( method Body Argument ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body Assignment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" this .${ method Body V rap Type . simple ClassName . first LowerCase ()} Ġ= Ġ${ method Body V rap Type . simple ClassName . first LowerCase ()}; " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments . add ( method Body Assignment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . bodies [ 0 ]. content MediaType .` is `( MediaType . FORM _ DATA )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Arguments . add (" List < Param Entry < String , ĠString >> Ġform Params ". escape All ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments [ 0 ] Ġ= Ġ" super ( api HttpClient , Ġnew ĠApi HttpHeaders ( new ĠApi HttpHeaders . String Header Entry ( Api HttpHeaders . CONTENT _ TYPE , Ġ\" application / x - www - form - urlencoded \ ")), Ġnew ĠArrayList <> ()); ". escape All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments . add (" this . form Params Ġ= Ġform Params Ġ!= Ġnull Ġ? Ġform Params Ġ: Ġnew ĠArrayList <>(); ". escape All ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Arguments . add (" Object Ġobj ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments . add (" this . obj Ġ= Ġobj ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} (${ constructor Arguments . join ToString ( separator Ġ= Ġ", Ġ") }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ constructor Assignments . join ToString ( separator Ġ= Ġ"\ n ") }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation (). escape All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . copy Constructor (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstructor Assignments Ġ= Ġmutable ListOf (" super ( t ); ") ĊĊĠĠĠĠĠĠĠ Ġthis . path Arguments (). map Ġ{ Ġ" this .$ it Ġ= Ġt .$ it ;" Ġ}. forEach Ġ{ Ġconstructor Assignments . add ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( this . bodies Ġ!= Ġnull Ġ&& Ġthis . bodies . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body V rap Type Ġ= Ġthis . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body Assignment Ġ= Ġ" this .${ method Body V rap Type . simple ClassName . first LowerCase ()} Ġ= Ġt .${ method Body V rap Type . simple ClassName . first LowerCase ()}; " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments . add ( method Body Assignment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . bodies [ 0 ]. content MediaType .` is `( MediaType . FORM _ DATA )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments . add (" this . form Params Ġ= Ġnew ĠArrayList <>( t . form Params ); ". escape All ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Assignments . add (" this . obj Ġ= Ġt . obj ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} (${ this . to Request Name ()} Ġt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ constructor Assignments . join ToString ( separator Ġ= Ġ"\ n ") }> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation (). escape All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . fields (): ĠString ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpath Args Ġ= Ġthis . path Arguments (). map Ġ{ Ġ" private ĠString Ġ$ it ;" Ġ}. join ToString ( separator Ġ= Ġ"\ n ") ĊĊĠĠĠĠĠĠĠ Ġval Ġbody : ĠString Ġ= Ġif ( this . bodies Ġ!= Ġnull Ġ&& Ġthis . bodies . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body V rap Type Ġ= Ġthis . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private Ġ${ method Body V rap Type .` package `. to Java Package ()}. ${ method Body V rap Type . simple ClassName } Ġ${ method Body V rap Type . simple ClassName . first LowerCase ()}; " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . bodies [ 0 ]. content MediaType .` is `( MediaType . FORM _ DATA )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private ĠList < Param Entry < String , ĠString >> Ġform Params ; ". escape All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private ĠObject Ġobj ;" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" | ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| <$ path Args > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| <$ body > ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠQuery Parameter . fieldName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠString Case Format . LOWER _ C AME L _ CASE . apply ( this . name . replace (".", Ġ"- ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . path Arguments () Ġ: ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . resource (). full Uri . variables . toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . build Request Method () Ġ: ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpath Arguments Ġ= Ġthis . path Arguments (). map Ġ{ Ġ" {$ it }" Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġstring Format Ġ= Ġthis . resource (). full Uri . template ĊĠĠĠĠĠĠĠ Ġpath Arguments . forEach Ġ{ Ġstring Format Ġ= Ġstring Format . replace ( it , Ġ"% s ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstring Format Args Ġ= Ġpath Arguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . replace ("{ ", Ġ""). replace (" }", Ġ"") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ" this .$ it " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ", Ġ") ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Name Ġ: ĠString ? Ġ= Ġif ( this . bodies Ġ!= Ġnull Ġ&& Ġthis . bodies . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body V rap Type Ġ= Ġthis . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Body V rap Type . simple ClassName . first LowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" obj " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Path Generation Ġ: ĠString Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| List < String > Ġparams Ġ= Ġnew ĠArrayList <>( getQuery Param Uri Strings ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| String ĠhttpRequest Path Ġ= ĠString . format ("$ string Format ", Ġ$ string Format Args ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| if Ġ(! params . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ ĠhttpRequest Path Ġ+= Ġ" ?" Ġ+ ĠString . join ("& ", Ġparams ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin (). escape All () ĊĠĠĠĠĠĠĠ Ġval Ġbody Setter : ĠString Ġ= Ġif ( body Name Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . bodies [ 0 ]. type . isFile ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Api HttpHeaders Ġheaders Ġ= Ġget Headers (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| if Ġ( headers . getFirst ( Api HttpHeaders . CONTENT _ TYPE ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġfinal ĠString ĠmimeType Ġ= ĠOptional . of Nullable ( URLConnection . guess ContentType FromName ( file . getName ())). orElse (" application / octet - stream "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġheaders Ġ= Ġheaders . with Header ( Api HttpHeaders . CONTENT _ TYPE , ĠmimeType ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| return Ġnew ĠApi HttpRequest ( Api HttpMethod .${ this . method . name }, ĠURI . create ( httpRequest Path ), Ġheaders , Ġio . v rap . rm f . base . client . utils . FileUtils . exec uting (() Ġ- \> ĠFiles . read All Bytes ( file . to Path ()))); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( this . bodies [ 0 ]. content MediaType .` is `( MediaType . FORM _ DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| return Ġnew ĠApi HttpRequest ( Api HttpMethod .${ this . method . name }, ĠURI . create ( httpRequest Path ), Ġget Headers (), Ġget Form Param Uri String (). getBytes ( StandardCharsets . UTF _ 8 )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| return Ġnew ĠApi HttpRequest ( Api HttpMethod .${ this . method . name }, ĠURI . create ( httpRequest Path ), Ġget Headers (), Ġio . v rap . rm f . base . client . utils . json . Json Utils . exec uting (() Ġ- \> Ġapi HttpClient (). get Serializer Service (). toJson ByteArray ($ body Name ))); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| return Ġnew ĠApi HttpRequest ( Api HttpMethod .${ this . method . name }, ĠURI . create ( httpRequest Path ), Ġget Headers (), Ġnull ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| @ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| protected ĠApi HttpRequest Ġbuild HttpRequest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ<$ request Path Generation > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ$ body Setter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . execute Blocking Method () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| @ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public ĠApi HttpResponse \< ${ this . java ReturnType ( v rap Type Provider )}\ > Ġexecute Blocking ( final ĠApi HttpClient Ġclient , Ġfinal ĠDuration Ġtimeout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġexecute Blocking ( client , Ġtimeout , Ġ${ this . java ReturnType ( v rap Type Provider )}. class ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . execute Method () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| @ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| public ĠCompletableFuture \< Api HttpResponse \< ${ this . java ReturnType ( v rap Type Provider )}\ >\ > Ġexecute ( final ĠApi HttpClient Ġclient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġexecute ( client , Ġ${ this . java ReturnType ( v rap Type Provider )}. class ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . path Arguments Get ters () Ġ: ĠString Ġ= Ġthis . path Arguments () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ" public ĠString Ġget ${ it . first UpperCase ()} () Ġ{ return Ġthis .$ it ; }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n ") ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . path Arguments Set ters () Ġ: ĠString Ġ= Ġthis . path Arguments () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ" public Ġvoid Ġset ${ it . first UpperCase ()} ( final ĠString Ġ$ it ) Ġ{ Ġthis .$ it Ġ= Ġ$ it ; Ġ}" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n \ n ") ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . queryParams Get ters () Ġ: ĠString Ġ= Ġthis . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . getAnnotation ( PLACE HOLDER _ PARAM _ AN NOT ATION , Ġtrue ) Ġ== Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public ĠList < String > Ġget ${ it . fieldName (). first UpperCase ()} () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġthis . getQuery Param ("${ it . name }"); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). escape All () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n \ n ") ĊĊĠĠĠ Ġprivate Ġfun ĠQuery Parameter . with er Type () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġthis . type ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArray Type Ġ-> Ġtype . items . to V rap Type (). simple Name (). to Scalar Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtype . to V rap Type (). simple Name (). to Scalar Type () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠQuery Parameter . with er Boxed Type () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġthis . type ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArray Type Ġ-> Ġtype . items . to V rap Type (). simple Name () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtype . to V rap Type (). simple Name () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . queryParams Template Set ters () Ġ: ĠString Ġ= Ġthis . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . getAnnotation ( PLACE HOLDER _ PARAM _ AN NOT ATION , Ġtrue ) Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanno Ġ= Ġit . getAnnotation (" placeholder Param ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġanno . value Ġas ĠObject Instance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Name Ġ= Ġo . value . stream (). filter Ġ{ Ġproperty Value Ġ-> Ġproperty Value . name Ġ== Ġ" param Name " Ġ}. findFirst (). orElse ( null ). value Ġas ĠString Instance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplaceholder Ġ= Ġo . value . stream (). filter Ġ{ Ġproperty Value Ġ-> Ġproperty Value . name Ġ== Ġ" placeholder " Ġ}. findFirst (). orElse ( null ). value Ġas ĠString Instance ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= Ġo . value . stream (). filter Ġ{ Ġproperty Value Ġ-> Ġproperty Value . name Ġ== Ġ" template " Ġ}. findFirst (). orElse ( null ). value Ġas ĠString Instance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ" String . format (\ "" Ġ+ Ġtemplate . value . replace ("< " Ġ+ Ġplaceholder . value Ġ+ Ġ"> ", Ġ"% s ") Ġ+ Ġ"\ ", Ġ" Ġ+ Ġplaceholder . value Ġ+ Ġ")" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= ĠString Case Format . UPPER _ C AME L _ CASE . apply ( param Name . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġ Ġ" final ĠString Ġ" Ġ+ ĠString Case Format . LOWER _ C AME L _ CASE . apply ( placeholder . value ) Ġ+ Ġ", Ġfinal ĠTValue Ġ" Ġ+ Ġparam Name . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Parameters Ġ= Ġ Ġ" final ĠString Ġ" Ġ+ ĠString Case Format . LOWER _ C AME L _ CASE . apply ( placeholder . value ) Ġ+ Ġ", Ġfinal ĠList < TValue > Ġ" Ġ+ Ġparam Name . value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġset Ġ${ param Name . value } Ġwith Ġthe Ġspecific ied Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġwith $ methodName ($ parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). with QueryParam ($ value , Ġ${ param Name . value }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġadd Ġadditional Ġ${ param Name . value } Ġquery Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġadd $ methodName ($ parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). add QueryParam ($ value , Ġ${ param Name . value }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġset Ġ${ param Name . value } Ġwith Ġthe Ġspecific ied Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġwith $ methodName ($ list Parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġfinal ĠString Ġplaceholder Name Ġ= ĠString . format (" var .% s ", Ġ${ String Case Format . LOWER _ C AME L _ CASE . apply ( placeholder . value )}); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). without QueryParam ( placeholder Name ). add QueryParams (${ param Name . value }. stream (). map ( s Ġ-> Ġnew ĠParam Entry <>( placeholder Name , Ġs . toString ())). collect ( Collectors . toList ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġadd Ġadditional Ġ${ param Name . value } Ġquery Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġadd $ methodName ($ list Parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġfinal ĠString Ġplaceholder Name Ġ= ĠString . format (" var .% s ", Ġ${ String Case Format . LOWER _ C AME L _ CASE . apply ( placeholder . value )}); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). add QueryParams (${ param Name . value }. stream (). map ( s Ġ-> Ġnew ĠParam Entry <>( placeholder Name , Ġs . toString ())). collect ( Collectors . toList ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). escape All () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n \ n ") ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . queryParams Set ters () Ġ: ĠString Ġ= Ġthis . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . getAnnotation ( PLACE HOLDER _ PARAM _ AN NOT ATION , Ġtrue ) Ġ== Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġset Ġ${ it . fieldName ()} Ġwith Ġthe Ġspecified Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġwith ${ it . fieldName (). first UpperCase ()} ( final ĠTValue Ġ${ it . fieldName () }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). with QueryParam ("${ it . name }", Ġ${ it . fieldName () }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġadd Ġadditional Ġ${ it . fieldName ()} Ġquery Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġadd ${ it . fieldName (). first UpperCase ()} ( final ĠTValue Ġ${ it . fieldName () }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). add QueryParam ("${ it . name }", Ġ${ it . fieldName () }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġset Ġ${ it . fieldName ()} Ġwith Ġthe Ġspecified Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} Ġwith ${ it . fieldName (). first UpperCase ()} ( final ĠSupplier < ${ it . with er Boxed Type () }> Ġsupplier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). with QueryParam ("${ it . name }", Ġsupplier . get ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġadd Ġadditional Ġ${ it . fieldName ()} Ġquery Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} Ġadd ${ it . fieldName (). first UpperCase ()} ( final ĠSupplier < ${ it . with er Boxed Type () }> Ġsupplier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). add QueryParam ("${ it . name }", Ġsupplier . get ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġset Ġ${ it . fieldName ()} Ġwith Ġthe Ġspecified Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} Ġwith ${ it . fieldName (). first UpperCase ()} ( final ĠFunction < StringBuilder , ĠStringBuilder > Ġop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). with QueryParam ("${ it . name }", Ġop . apply ( new ĠStringBuilder ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġadd Ġadditional Ġ${ it . fieldName ()} Ġquery Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} Ġadd ${ it . fieldName (). first UpperCase ()} ( final ĠFunction < StringBuilder , ĠStringBuilder > Ġop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). add QueryParam ("${ it . name }", Ġop . apply ( new ĠStringBuilder ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġset Ġ${ it . fieldName ()} Ġwith Ġthe Ġspecified Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġwith ${ it . fieldName (). first UpperCase ()} ( final ĠList < TValue > Ġ${ it . fieldName () }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). without QueryParam ("${ it . name } "). add QueryParams (${ it . fieldName ()}. stream (). map ( s Ġ-> Ġnew ĠParam Entry < >(" ${ it . name }", Ġs . toString ())). collect ( Collectors . toList ())); ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġadd Ġadditional Ġ${ it . fieldName ()} Ġquery Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ< TValue > Ġ${ this . to Request Name ()} Ġadd ${ it . fieldName (). first UpperCase ()} ( final ĠList < TValue > Ġ${ it . fieldName () }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġcopy (). add QueryParams (${ it . fieldName ()}. stream (). map ( s Ġ-> Ġnew ĠParam Entry < >(" ${ it . name }", Ġs . toString ())). collect ( Collectors . toList ())); ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). escape All () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n \ n ") ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . body Methods () Ġ: ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif ( this . bodies Ġ!= Ġnull Ġ&& Ġthis . bodies . isNotEmpty () Ġ&& Ġthis . bodies [ 0 ]. type . to V rap Type () Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Body V rap Type Ġ= Ġthis . bodies [ 0 ]. type . to V rap Type () Ġas ĠV rap ObjectType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ method Body V rap Type .` package `. to Java Package ()}. ${ method Body V rap Type . simple ClassName } Ġget Body () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġ${ method Body V rap Type . simple ClassName . first LowerCase ()}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| public Ġ${ this . to Request Name ()} Ġwith Body (${ method Body V rap Type .` package `. to Java Package ()}. ${ method Body V rap Type . simple ClassName } Ġ${ method Body V rap Type . simple ClassName . first LowerCase () }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ${ this . to Request Name ()} Ġt Ġ= Ġcopy (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġt .${ method Body V rap Type . simple ClassName . first LowerCase ()} Ġ= Ġ${ method Body V rap Type . simple ClassName . first LowerCase ()}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġt ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . form Param Methods () Ġ: ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( this . bodies Ġ!= Ġnull Ġ&& Ġ! this . bodies . isEmpty () Ġ&& Ġthis . bodies [ 0 ]. content MediaType .` is `( MediaType . FORM _ DATA )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġadd Ġan Ġadditional Ġform Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġform Ġparameter Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġform Ġparameter Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< V > Ġvalue Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ< V > Ġ${ this . to Request Name ()} Ġadd Form Param ( final ĠString Ġkey , Ġfinal ĠV Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ this . to Request Name ()} Ġc Ġ= Ġcopy (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . form Params . add ( new ĠParam Entry <>( key , Ġvalue . toString ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġc ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġset Ġthe Ġform Ġparameter Ġwith Ġthe Ġspecified Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġform Ġparameter Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġform Ġparameter Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< V > Ġvalue Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ< V > Ġ${ this . to Request Name ()} Ġwith Form Param ( final ĠString Ġkey , Ġfinal ĠV Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwithout Form Param ( key ). add Form Param ( key , Ġvalue ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġremoves Ġthe Ġspecified Ġform Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġform Ġparameter Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ${ this . to Request Name ()} Ġwithout Form Param ( final ĠString Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ this . to Request Name ()} Ġc Ġ= Ġcopy (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . form Params Ġ= Ġc . form Params . stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( e Ġ-> Ġ! e . getKey (). equalsIgnoreCase ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . toList ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġc ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġset Ġthe Ġform Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġform Params Ġlist Ġof Ġform Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ${ this . to Request Name ()} Ġwith Form Params ( final ĠList < Param Entry < String , ĠString >> Ġform Params ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBy Project Key Product Projection s Search Post Ġc Ġ= Ġcopy (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . form Params Ġ= Ġform Params ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġc ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < Param Entry < String , ĠString >> Ġget Form Params () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠArrayList <>( this . form Params ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < String > Ġget Form Param ( final ĠString Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . form Params . stream (). filter ( e Ġ-> Ġe . getKey (). equals ( key )). map ( Param Entry :: getValue ). collect ( Collectors . toList ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < String > Ġget Form Param Uri Strings () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . form Params . stream (). map ( Param Entry :: to Uri String ). collect ( Collectors . toList ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Form Param Uri String () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . form Params . stream (). map ( Param Entry :: to Uri String ). collect ( Collectors . join ing ("& ")); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nullable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget First Form Param ( final ĠString Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . form Params . stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( e Ġ-> Ġe . getKey (). equals ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Map . Entry :: getValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. findFirst () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse ( null ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (). escape All () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . imports (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . type . to V rap Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ! is ĠV rap Scalar Type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Imports ForType ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . isNull Or Blank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ" import Ġ${ it }; " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n ") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . mark Deprecated () Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanno Ġ= Ġthis . getAnnotation (" mark Deprecated ") ĊĠĠĠĠĠĠĠ Ġreturn Ġ( anno Ġ!= Ġnull Ġ&& Ġ( anno . value Ġas ĠBoolean Instance ). value ) ĊĠĠĠ Ġ} Ċ } Ċ