/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġ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 . examples . server . spring . query Ċ Ċ import Ġcom . exp edi ag roup . graphql . examples . server . spring . model . Company Ċ import Ġcom . exp edi ag roup . graphql . examples . server . spring . model . Employee Ċ import Ġcom . exp edi ag roup . graphql . annotations . GraphQL Description Ċ import Ġcom . exp edi ag roup . graphql . server . operations . Query Ċ import Ġgraphql . schema . Data Fetcher Ċ import Ġgraphql . schema . Data Fetching Environment Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ Ċ /** Ċ Ġ* ĠExample Ġquery Ġthat Ġshow cases Ġthe Ġusage Ġof Ġdata Ġloader Ġpattern . Ċ Ġ*/ Ċ @ Component Ċ class ĠDataLoader Query Ġ: ĠQuery Ġ{ ĊĠĠĠ Ġprivate Ġval Ġemployees Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠEmployee ( name Ġ= Ġ" Mi ke ", Ġcompany Id Ġ= Ġ 1 ), ĊĠĠĠĠĠĠĠ ĠEmployee ( name Ġ= Ġ" John ", Ġcompany Id Ġ= Ġ 1 ), ĊĠĠĠĠĠĠĠ ĠEmployee ( name Ġ= Ġ" Ste ve ", Ġcompany Id Ġ= Ġ 2 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ GraphQL Description (" Get Ġall Ġemployees ") ĊĠĠĠ Ġfun Ġemployees (): ĠList < Employee > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġemployees ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Component (" Company Data Fetcher ") Ċ class ĠCompany Data Fetcher Ġ: ĠData Fetcher < Comp letableFuture < Company >> Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget ( environment : ĠData Fetching Environment ): ĠCompletableFuture < Company > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcompany Id Ġ= Ġenvironment . getSource < Employee >(). company Id ĊĊĠĠĠĠĠĠĠ Ġreturn Ġenvironment . getData Loader < Int , ĠCompany >(" company Loader "). load ( company Id ) ĊĠĠĠ Ġ} Ċ } Ċ