/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġ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 . directives Ċ Ċ import Ġcom . exp edi ag roup . graphql . exceptions . Invalid Schema Directive W iring Exception Ċ import Ġcom . exp edi ag roup . graphql . generator . extensions . getAll Directives Ċ import Ġgraphql . schema . Field Coordinates Ċ import Ġgraphql . schema . GraphQL Code Registry Ċ import Ġgraphql . schema . GraphQL Directive Ċ import Ġgraphql . schema . GraphQL Directive Container Ċ import Ġgraphql . schema . GraphQL Field Definition Ċ import Ġgraphql . schema . GraphQL Schema Element Ċ Ċ /** Ċ Ġ* ĠW iring Ġfactory Ġthat Ġis Ġused Ġto Ġprovide Ġthe Ġdirectives . Ċ Ġ*/ Ċ open Ġclass ĠKotlin Directive W iring Factory ( ĊĠĠĠ Ġprivate Ġval Ġmanual W iring : ĠMap < String , ĠKotlin Schema Directive W iring > Ġ= Ġempty Map () Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWire Ġup Ġthe Ġdirective Ġbased Ġon Ġthe ĠGraphQL Ġtype . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Wire ( graph QL Schema Element : ĠGraphQL Schema Element , Ġcoordinates : ĠField Coordinates ? Ġ= Ġnull , Ġcode Registry : ĠGraphQL Code Registry . Builder ? Ġ= Ġnull ): ĠGraphQL Schema Element Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( graph QL Schema Element Ġ! is ĠGraphQL Directive Container ) Ġreturn Ġgraph QL Schema Element ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwire Directives ( graph QL Schema Element , Ġcoordinates , Ġgraph QL Schema Element . getAll Directives (), Ġcode Registry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġschema Ġdirective Ġw iring Ġfor Ġthe Ġspecified Ġenvironment Ġor ĠNULL Ġif Ġw iring Ġis Ġnot Ġsupported Ġby Ġthis Ġfactory . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġget Schema Directive W iring ( environment : ĠKotlin Schema Directive Environment < GraphQL Directive Container >): ĠKotlin Schema Directive W iring ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress (" Det ek t . Throws Count ") ĊĠĠĠ Ġprivate Ġfun Ġwire Directives ( ĊĠĠĠĠĠĠĠ Ġelement : ĠGraphQL Directive Container , ĊĠĠĠĠĠĠĠ Ġcoordinates : ĠField Coordinates ?, ĊĠĠĠĠĠĠĠ Ġdirectives : ĠList < GraphQL Directive >, ĊĠĠĠĠĠĠĠ Ġcode Registry : ĠGraphQL Code Registry . Builder ? ĊĠĠĠ Ġ): ĠGraphQL Directive Container Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmodified Object Ġ= Ġelement ĊĠĠĠĠĠĠĠ Ġfor Ġ( directive Ġin Ġdirectives ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġif Ġ( modified Object Ġis ĠGraphQL Field Definition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Field Directive Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġmodified Object , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Directive Ġ= Ġdirective , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoordinates Ġ= Ġcoordinates Ġ?: Ġthrow ĠInvalid Schema Directive W iring Exception (" Unable Ġto Ġwire Ġdirective Ġon Ġa Ġfield Ġdue Ġto Ġmissing Ġfield Ġcoordinates "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Registry Ġ= Ġcode Registry Ġ?: Ġthrow ĠInvalid Schema Directive W iring Exception (" Unable Ġto Ġwire Ġdirective Ġon Ġa Ġfield Ġdue Ġto Ġa Ġmissing Ġcode Ġregistry ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Schema Directive Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġmodified Object , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirective Ġ= Ġdirective ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! env . isValid ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Schema Directive W iring Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Directive Ġ${ directive . name } Ġnot Ġapplicable Ġon Ġspecified Ġ${ element . name } ĠGraphQL Type , Ġvalid Ġdirective Ġlocations Ġ${ directive . valid Locations () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirective W iring Ġ= Ġdiscover W iring Provider ( directive . name , Ġenv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( directive W iring Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Object Ġ= Ġdirective W iring . wire On Environment ( env ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmodified Object ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdiscover W iring Provider ( directive Name : ĠString , Ġenv : ĠKotlin Schema Directive Environment < GraphQL Directive Container >): ĠKotlin Schema Directive W iring ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( directive Name Ġin Ġmanual W iring ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanual W iring [ directive Name ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Schema Directive W iring ( env ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ