package Ġcom . netflix . graphql . d gs . metrics . micro meter . dataloader Ċ Ċ import Ġcom . netflix . graphql . d gs . DataLoader Instrumentation Extension Provider Ċ import Ġcom . netflix . graphql . d gs . metrics . micro meter . D gs Meter Registry Supplier Ċ import Ġnet . byte buddy . Byte Bu ddy Ċ import Ġnet . byte buddy . implementation . Method Deleg ation Ċ import Ġnet . byte buddy . implementation . bind . annotation . Pipe Ċ import Ġnet . byte buddy . matcher . Element Matchers Ċ import Ġorg . dataloader . Batch Loader Ċ import Ġorg . dataloader . Batch Loader WithContext Ċ import Ġorg . dataloader . Mapped Batch Loader Ċ import Ġorg . dataloader . Mapped Batch Loader WithContext Ċ Ċ class ĠD gs DataLoader Instrumentation Provider ( ĊĠĠĠ Ġprivate Ġval Ġmeter Registry Supplier : ĠD gs Meter Registry Supplier , Ċ ) Ġ: ĠDataLoader Instrumentation Extension Provider Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbatch Loader Classes Ġ= Ġmutable Map Of < String , ĠClass < out ĠBatch Loader < *, Ġ* >> >() ĊĠĠĠ Ġprivate Ġval Ġbatch Loader WithContext Classes Ġ= Ġmutable Map Of < String , ĠClass < out ĠBatch Loader WithContext < *, Ġ* >> >() ĊĠĠĠ Ġprivate Ġval Ġmapped Batch Loader Classes Ġ= Ġmutable Map Of < String , ĠClass < out ĠM apped Batch Loader < *, Ġ* >> >() ĊĠĠĠ Ġprivate Ġval Ġmapped Batch Loader WithContext Classes Ġ= Ġmutable Map Of < String , ĠClass < out ĠM apped Batch Loader WithContext < *, Ġ* >> >() ĊĊĠĠĠ Ġoverride Ġfun Ġprovide ( original : ĠBatch Loader < *, Ġ* >, Ġname : ĠString ): ĠBatch Loader < *, Ġ*> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbatch Loader Classes . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwith Bind ers Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod Deleg ation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Default Configuration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Bind ers ( Pipe . Binder . install ( For warder :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( Batch Loader Interceptor ( original , Ġname , Ġmeter Registry Supplier . get ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte Bu ddy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subclass ( Batch Loader :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method ( Element Matchers . named (" load ")). intercept ( with Bind ers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( java Class . class Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. loaded ĊĠĠĠĠĠĠĠ Ġ}. newInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprovide ( original : ĠBatch Loader WithContext < *, Ġ* >, Ġname : ĠString ): ĠBatch Loader WithContext < *, Ġ*> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbatch Loader WithContext Classes . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwith Bind ers Ġ= ĠMethod Deleg ation . with Default Configuration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Bind ers ( Pipe . Binder . install ( For warder :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( Batch Loader WithContext Interceptor ( original , Ġname , Ġmeter Registry Supplier . get ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte Bu ddy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subclass ( Batch Loader WithContext :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method ( Element Matchers . named (" load ")). intercept ( with Bind ers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( java Class . class Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. loaded ĊĠĠĠĠĠĠĠ Ġ}. newInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprovide ( original : ĠM apped Batch Loader < *, Ġ* >, Ġname : ĠString ): ĠM apped Batch Loader < *, Ġ*> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapped Batch Loader Classes . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwith Bind ers Ġ= ĠMethod Deleg ation . with Default Configuration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Bind ers ( Pipe . Binder . install ( For warder :: class . java )). to ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM apped Batch Loader Interceptor ( original , Ġname , Ġmeter Registry Supplier . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte Bu ddy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subclass ( Mapped Batch Loader :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method ( Element Matchers . named (" load ")). intercept ( with Bind ers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( java Class . class Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. loaded ĊĠĠĠĠĠĠĠ Ġ}. newInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprovide ( ĊĠĠĠĠĠĠĠ Ġoriginal : ĠM apped Batch Loader WithContext < *, Ġ* >, ĊĠĠĠĠĠĠĠ Ġname : ĠString ĊĠĠĠ Ġ): ĠM apped Batch Loader WithContext < *, Ġ*> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapped Batch Loader WithContext Classes . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwith Bind ers Ġ= ĠMethod Deleg ation . with Default Configuration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Bind ers ( Pipe . Binder . install ( For warder :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( Mapped Batch Loader WithContext Interceptor ( original , Ġname , Ġmeter Registry Supplier . get ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte Bu ddy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subclass ( Mapped Batch Loader WithContext :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method ( Element Matchers . named (" load ")). intercept ( with Bind ers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( java Class . class Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. loaded ĊĠĠĠĠĠĠĠ Ġ}. newInstance () ĊĠĠĠ Ġ} Ċ } Ċ