package Ġio . datal br y . connector . sdk . consumer . generic Ċ Ċ import Ġio . datal br y . connector . api . C rawl Processor Ċ import Ġio . datal br y . connector . api . document . Document Processor Ċ import Ġorg . springframework . core . Res olvable Type Ċ import Ġjava . lang . reflect . Method Ċ Ċ /** Ċ Ġ* ĠThe Ġ[ Reflection Processor Impl ] Ġis Ġable Ġto Ġconsume Ġa Ġ[ C rawl Processor ] Ċ Ġ* Ġwithout Ġit 's Ġtype Ġinformation Ġand Ġto Ġprovide Ġa Ġconvenient Ġfunctions Ġto Ġuse Ġfor Ċ Ġ* Ġthe Ġdynamic Ġtype Ġhandling . Ċ Ġ* Ċ Ġ* Ġ- ĠReflection Ġis Ġpretty Ġexpensive Ġat Ġruntime , Ġso Ġwe Ġare Ġreducing Ġthe Ġoverhead Ġto Ġa Ġvery Ġminimal Ċ Ġ* ĠĠ Ġfor Ġeach Ġcall . ĠReflection Ġhappens Ġespecially Ġat Ġconstruction Ġtime . ĠOnly Ġthe Ġmethod Ġcalling Ċ Ġ* ĠĠ Ġvia Ġreflection Ġis Ġdone Ġat ĠRuntime . Ċ Ġ* Ġ- ĠThe Ġclass Ġis Ġbeing Ġbrought Ġto Ġprovide Ġa Ġlayer Ġof Ġconvenience Ġfor Ġthe Ġwriting Ġof ĠConnector s Ġusing Ġthe Ċ Ġ* ĠĠ ĠConnector ĠSDK . Ċ Ġ* Ċ Ġ* ĠThe Ġmain Ġentry point Ġfor Ġthe Ġgeneric Ġprocessing Ġis Ġthe Ġ[ Generic C rawl Processor ] Ġwhich Ġis Ġthe Ġonly Ġconsumer Ġof Ċ Ġ* Ġ[ Reflection Processor ] s . Ċ Ġ* Ċ Ġ* Ġ@ param Ġinner Ġ[ C rawl Processor ] Ġwithout Ġany Ġgeneric Ġtype Ġinformation Ċ Ġ* Ċ Ġ* Ġ@ author Ġt imo Ġgr uen Ġ- Ġ 2 0 2 0 - 1 1 - 1 0 Ċ Ġ*/ Ċ class ĠReflection Processor Impl ( private Ġval Ġinner : ĠDocument Processor < *, Ġ* >): ĠReflection Processor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtype : ĠRes olvable Type Ġ= ĠRes olvable Type . for Class ( Document Processor :: class . java , Ġinner :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġname : ĠString Ġ= Ġinner :: class . qualified Name !! ĊĊĠĠĠ Ġprivate Ġval Ġconsume s : ĠClass < *> Ġ= Ġtype . gener ics [ 0 ]. resolve () !! ĊĠĠĠ Ġprivate Ġval Ġproduces : ĠClass < *> Ġ= Ġtype . gener ics [ 1 ]. resolve () !! ĊĊĠĠĠ Ġprivate Ġval Ġprocess : ĠMethod Ġ= Ġinner . java Class . methods . first Ġ{ Ġit . name Ġ== ĠC rawl Processor < *, Ġ* >:: process . name Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġprocess ( edge : ĠAny ): ĠCollection < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess . invoke ( inner , Ġedge ) Ġas ĠCollection < Any > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconsume s (): ĠClass < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . consume s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġproduces (): ĠClass < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . pro duces ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġname (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . name ĊĠĠĠ Ġ} Ċ } Ċ