package Ġio . hol ix on . ax on . avro . registry . plugin . apic ur io . cache Ċ Ċ import Ġio . hol ix on . avro . adapter . api . Av ro Schema Id Ċ import Ġio . hol ix on . avro . adapter . api . Av ro Schema Resolver Ċ import Ġio . hol ix on . avro . adapter . api . Av ro Schema With Id Ċ import Ġmu . K Logging Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ /** Ċ Ġ* ĠResolver s Ġusing Ġa Ġlocal Ġin - memory Ġcache Ġfor Ġthe Ġresolution . Ċ Ġ*/ Ċ class ĠC aching Schema Resolver ( private Ġval Ġschema Resolver : ĠAv ro Schema Resolver ) Ġ: ĠAv ro Schema Resolver Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠ Ġprivate Ġval Ġcache Ġ= ĠConcurrent HashMap < Av ro Schema Id , ĠAv ro Schema With Id ?> () ĊĊĠ Ġoverride Ġfun Ġapply ( schema Id : ĠAv ro Schema Id ): ĠOptional < Av ro Schema With Id > Ġ{ ĊĠĠĠ Ġlogger . info Ġ{ Ġ" Requested Ġ$ schema Id Ġfrom Ġcache " Ġ} ĊĠĠĠ Ġreturn ĠOptional . of Nullable ( cache . compute If Absent ( schema Id ) Ġ{ ĊĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Cache Ġmiss , Ġtrying Ġto Ġget Ġit Ġfrom Ġthe Ġregistry ..." Ġ} ĊĠĠĠĠĠ Ġschema Resolver . apply ( schema Id ). orElse ( null ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" res olving Ġ- Ġschema Id =$ schema Id , Ġschema =$ it " Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠ Ġ} Ċ } Ċ