/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠExp edia , ĠInc Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ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 . exp edi ag roup . graphql . generator Ċ Ċ import Ġcom . exp edi ag roup . graphql . Schema Generator Config Ċ import Ġcom . exp edi ag roup . graphql . exceptions . Invalid Packages Exception Ċ import Ġcom . exp edi ag roup . graphql . extensions . deep Name Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠSchema Generator Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Additional Types With Annotation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠSchema Generator Config ( listOf (" com . exp edi ag roup . graphql . generator ")) ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠCustom Schema Generator ( config ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġgenerator . additional Types . size ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa Ġnon - ex istant Ġannot ait on ĊĠĠĠĠĠĠĠ Ġgenerator . add Types ( My Other Custom Annotation :: class ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġgenerator . additional Types . size ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa Ġvalid Ġannotation ĊĠĠĠĠĠĠĠ Ġgenerator . add Types ( My Custom Annotation :: class ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġgenerator . additional Types . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgenerate Additional Types () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠSchema Generator Config ( listOf (" com . exp edi ag roup . graphql . generator ")) ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠCustom Schema Generator ( config ) ĊĠĠĠĠĠĠĠ Ġgenerator . add Types ( My Custom Annotation :: class ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgenerator . generate Custom Additional Types () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresult . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Some Object With Annotation !", Ġresult . first (). deep Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinvalid Packages Throws Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With ( Invalid Packages Exception :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠSchema Generator Config ( listOf (" foo . bar ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Generator ( config ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCustom Schema Generator ( config : ĠSchema Generator Config ) Ġ: ĠSchema Generator ( config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġadd Types ( annotation : ĠK Class <* >) Ġ= Ġadd Additional Types With Annotation ( annotation ) ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġgenerate Custom Additional Types () Ġ= Ġgenerate Additional Types () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġannotation Ġclass ĠMy Custom Annotation ĊĠĠĠ Ġannotation Ġclass ĠMy Other Custom Annotation ĊĊĠĠĠ Ġ@ My Custom Annotation ĊĠĠĠ Ġdata Ġclass ĠSome Object With Annotation ( val Ġname : ĠString ) Ċ } Ċ