package Ġplugins . openapi Ċ Ċ import Ġde . under couch . gradle . tasks . download . Download Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . provider . Map Property Ċ import Ġorg . gradle . api . tasks . Copy Ċ import Ġorg . gradle . api . tasks . Delete Ċ import Ġorg . gradle . kotlin . dsl . named Ċ import Ġorg . gradle . kotlin . dsl . provide Delegate Ċ import Ġorg . gradle . kotlin . dsl . register Ċ import Ġorg . gradle . kotlin . dsl . the Ċ import Ġorg . open ap it ools . generator . gradle . plugin . Open Api Generator Plugin Ċ import Ġorg . open ap it ools . generator . gradle . plugin . extensions . Open Api Generator Generate Extension Ċ import Ġplugins . Plugin Adapter Ċ import Ġplugins . apply Ċ import Ġplugins . utils . load Local Properties Ċ import Ġplugins . utils . load Properties Ċ import Ġjava . util .* Ċ Ċ class ĠOpen Api Kotlin Jvm Plugin Ġ: ĠPlugin < Project > Ġby Ġapply < Open Api Kotlin Jvm >() Ċ Ċ class ĠOpen Api Kotlin Jvm ( project : ĠProject ) Ġ: ĠPlugin Adapter ( project ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgenerator Props Ġby Ġlazy Ġ{ Ġload Properties (" generator "). toMap () Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠProject . apply () Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin Manager . apply ( Open Api Generator Plugin :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġopen Api Kotlin Ġ= Ġextensions . create (" open Api Kotlin ", ĠOpen Api Generate Kotlin :: class . java , Ġthis ) ĊĠĠĠĠĠĠĠ Ġval Ġopen Api Generate Ġ= Ġthe < Open Api Generator Generate Extension >() ĊĊĠĠĠĠĠĠĠ Ġapply Defaults ( open Api Kotlin , Ġopen Api Generate ) ĊĠĠĠĠĠĠĠ Ġregister Tasks ( open Api Generate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProject . apply Defaults ( open Api Kotlin : ĠOpen Api Generate Kotlin , Ġopen Api Generate : ĠOpen Api Generator Generate Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Api Generate . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Spec . set ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator Name . set (" kotlin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary . set (" multi platform ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Dir . set ("${ root Project . project Dir }/ kotlin - template ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig File . set ("${ root Project . project Dir }/ kotlin - template / libraries / multi platform / config . yml ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Dir . set ( open Api Kotlin . artifact Name . map Ġ{ Ġ"${ root Project . build Dir }/ generated /$ it " Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator Props [" groupId "] ?. let Ġ{ ĠgroupId . set ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName . set ( open Api Kotlin . short Name . flatMap Ġ{ Ġshort Name Ġ-> ĠgroupId . map Ġ{ Ġ"${ it . replace (" just - ai ", Ġ" just ai ") }. $ short Name " Ġ} Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Package . set ( packageName . map Ġ{ Ġ"$ it . api " Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Package . set ( api Package . map Ġ{ Ġ"$ it . model " Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Mappings . put All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" file " Ġto Ġ" java . io . File ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" date - time " Ġto Ġ" java . time . Instant ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" DateTime " Ġto Ġ" java . time . Instant " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Mappings . put All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Object Node " Ġto Ġ" kotlin x . serialization . json . JsonObject ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JsonNode " Ġto Ġ" kotlin x . serialization . json . Json Element " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Options . put All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" date Library " Ġto Ġ" java 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" enum Property Naming " Ġto Ġ" UPPER CASE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Options . put (" artifactId ", Ġopen Api Kotlin . artifact Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator Props [" artifact Version "] ?. let Ġ{ Ġconfig Options . put (" artifact Version ", Ġit ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Properties . put All ( generator Props ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProject . register Tasks ( open Api Generate : ĠOpen Api Generator Generate Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtasks . register < Download >(" download Spec ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest ("$ build Dir ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtasks . register < Copy >(" move Sources ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( open Api Generate . output Dir . map Ġ{ Ġ"$ it / src / common Main " Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinto ( open Api Generate . output Dir . map Ġ{ Ġ"$ it / src / main " Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtasks . register < Copy >(" move Local Properties ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( root Project . layout . project Directory . files (" local . properties ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinto ( open Api Generate . output Dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtasks . register < Delete >(" delete Un necessary Sources ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust Run After (" move Sources ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . add ( open Api Generate . output Dir . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it / src / common Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it / src / ios Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it / src / js Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it / src / jvm Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it / src / common Main " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtasks . named (" open Api Generate ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal ized By (" move Sources ", Ġ" move Local Properties ", Ġ" delete Un necessary Sources ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠProject . after Evalu ated () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopen Api Generate Ġ= Ġthe < Open Api Generator Generate Extension >() ĊĠĠĠĠĠĠĠ Ġval Ġopen Api Kotlin Ġ= Ġthe < Open Api Generate Kotlin >() ĊĊĠĠĠĠĠĠĠ Ġopen Api Generate . additional Properties . put (" pom Name ", Ġopen Api Kotlin . name . get ()) ĊĠĠĠĠĠĠĠ Ġopen Api Generate . additional Properties . put (" pom Description ", Ġopen Api Kotlin . description . get ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Property (" artifact Version ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Api Generate . config Options . put (" artifact Version ", Ġproperties [" artifact Version "] Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresolve Spec Location ( open Api Kotlin , Ġopen Api Generate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProject . resolve Spec Location ( open Api Kotlin : ĠOpen Api Generate Kotlin , Ġopen Api Generate : ĠOpen Api Generator Generate Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdownload Spec Ġ= Ġtasks . named < Download >(" download Spec ") ĊĠĠĠĠĠĠĠ Ġval Ġgenerate Task Ġ= Ġtasks . named (" open Api Generate ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Property (" spec Location ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Spec . configure Ġ{ Ġenabled Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Api Generate . input Spec . set ( root Project . project Dir . resolve ( properties [" spec Location "] Ġas ĠString ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Property (" spec Url ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Spec . configure Ġ{ Ġsrc ( properties [" spec Url "] Ġas ĠString ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Task . configure Ġ{ Ġdepends On (" download Spec ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Api Generate . input Spec . set ( download Spec . map Ġ{ Ġit . output Files . first (). absolute Path Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( open Api Generate . input Spec . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Spec . configure Ġ{ Ġenabled Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( open Api Kotlin . spec Location . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Spec . configure Ġ{ Ġenabled Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Api Generate . input Spec . set ( root Project . project Dir . resolve ( open Api Kotlin . spec Location . get ()). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( open Api Kotlin . specs Url . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurls Ġ= Ġopen Api Kotlin . specs Url . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( urls . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Spec . configure Ġ{ Ġsrc ( urls ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Task . configure Ġ{ Ġdepends On (" download Spec ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Api Generate . input Spec . set ( download Spec . map Ġ{ Ġit . output Files . first (). absolute Path Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Unable Ġto Ġdetermine Ġinput Ġspec Ġlocation ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< K , ĠV > ĠMap Property < K , ĠV >. put All ( var arg Ġentries : ĠPair < K , ĠV >) Ġ= Ġput All ( map Of (* entries )) Ċ Ċ private Ġfun ĠProperties . toMap () Ġ= Ġstring Property Names (). associate With Ġ{ ĠgetProperty ( it ) Ġ} Ċ