/* Ċ Ġ* Ġ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 . spring Ċ Ċ import Ġcom . exp edi ag roup . graphql . spring . execution . DataLoader Registry Factory Ċ import Ġcom . exp edi ag roup . graphql . spring . execution . Query Handler Ċ import Ġcom . exp edi ag roup . graphql . spring . execution . Simple Query Handler Ċ import Ġgraphql . GraphQL Ċ import Ġgraphql . execution . Async Execution Strategy Ċ import Ġgraphql . execution . Async Serial Execution Strategy Ċ import Ġgraphql . execution . Data Fetcher ExceptionHandler Ċ import Ġgraphql . execution . Execution Id Provider Ċ import Ġgraphql . execution . Subscription Execution Strategy Ċ import Ġgraphql . execution . instrumentation . Chain ed Instrumentation Ċ import Ġgraphql . execution . instrumentation . Instrumentation Ċ import Ġgraphql . execution . pre parsed . Pre parsed Document Provider Ċ import Ġgraphql . schema . GraphQL Schema Ċ import Ġorg . springframework . boot . autoconfigure . condition . Conditional On Missing Bean Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . context . annotation . Import Ċ import Ġorg . springframework . core . Ordered Ċ import Ġjava . util . Optional Ċ Ċ /** Ċ Ġ* ĠDefault Ġorder Ġapplied Ġto ĠInstrument ation Ġbe ans . Ċ Ġ*/ Ċ const Ġval ĠDEFAULT _ INSTR UMENT ATION _ ORDER Ġ= Ġ 0 Ċ Ċ /** Ċ Ġ* ĠConfiguration Ġclass Ġthat Ġloads Ġboth Ġthe Ġf ederated Ġand Ġnon - fed eration Ċ Ġ* Ġconfigur ait on Ġand Ġcreates Ġthe ĠGraphQL Ġschema Ġobject Ġand Ġrequest Ġhandler . Ċ Ġ* Ċ Ġ* ĠThis Ġconfig Ġcan Ġthen Ġbe Ġused Ġby Ġall ĠSpring Ġspecific Ġconfiguration Ġclasses Ċ Ġ* Ġto Ġhandle Ġincoming Ġrequests Ġfrom ĠHTTP Ġroutes Ġor Ġsubscriptions Ġand Ġsend Ġthem Ċ Ġ* Ġto Ġthe Ġschema Ġobject . Ċ Ġ*/ Ċ @ Configuration Ċ @ Import ( ĊĠĠĠ ĠNon F ederated Schema Auto Configuration :: class , ĊĠĠĠ ĠF ederated Schema Auto Configuration :: class Ċ ) Ċ class ĠGraphQL Schema Configuration Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġ@ Conditional On Missing Bean ĊĠĠĠ Ġfun Ġgraph QL ( ĊĠĠĠĠĠĠĠ Ġschema : ĠGraphQL Schema , ĊĠĠĠĠĠĠĠ Ġdata Fetcher ExceptionHandler : ĠData Fetcher ExceptionHandler , ĊĠĠĠĠĠĠĠ Ġinstrument ations : ĠOptional < List < Instrumentation >>, ĊĠĠĠĠĠĠĠ Ġexecution Id Provider : ĠOptional < Execution Id Provider >, ĊĠĠĠĠĠĠĠ Ġpre parsed Document Provider : ĠOptional < Pre parsed Document Provider >, ĊĠĠĠĠĠĠĠ Ġconfig : ĠGraphQL Configuration Properties ĊĠĠĠ Ġ): ĠGraphQL Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph QL Ġ= ĠGraphQL . new GraphQL ( schema ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. query Execution Strategy ( Async Execution Strategy ( data Fetcher ExceptionHandler )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. mutation Execution Strategy ( Async Serial Execution Strategy ( data Fetcher ExceptionHandler )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscription Execution Strategy ( Subscription Execution Strategy ( data Fetcher ExceptionHandler )) ĊĊĠĠĠĠĠĠĠ Ġinstrument ations . if Present Ġ{ Ġunordered Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unordered . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL . instrumentation ( unordered . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Ġ= Ġunordered . sorted By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠOrdered ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDEFAULT _ INSTR UMENT ATION _ ORDER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL . instrumentation ( Chain ed Instrumentation ( sorted )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexecution Id Provider . if Present Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL . execution Id Provider ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpre parsed Document Provider . if Present Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL . pre parsed Document Provider ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġgraph QL . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġ@ Conditional On Missing Bean ĊĠĠĠ Ġfun Ġgraph QL Query Handler ( ĊĠĠĠĠĠĠĠ Ġgraphql : ĠGraphQL , ĊĠĠĠĠĠĠĠ Ġdata Loader Registry Factory : ĠDataLoader Registry Factory ĊĠĠĠ Ġ): ĠQuery Handler Ġ= ĠSimple Query Handler ( graphql , Ġdata Loader Registry Factory ) Ċ } Ċ