/* Ċ Ġ* ĠBSD Ġ 3 - Clause ĠLicense , ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 2 , ĠP ul seq Ġand Ġcontributors . Ċ Ġ*/ Ċ Ċ package Ġuno . d 1 s . pul seq . aspect . cache Ċ Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġorg . aspect j . lang . Join Point Ċ import Ġorg . aspect j . lang . annotation . After Return ing Ċ import Ġorg . aspect j . lang . annotation . Aspect Ċ import Ġorg . aspect j . lang . annotation . Point cut Ċ import Ġorg . aspect j . lang . reflect . Method Signature Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . cache . CacheManager Ċ import Ġorg . springframework . context . ApplicationContext Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġuno . d 1 s . pul seq . annotation . cache . Cache Put ById Provider Ċ import Ġuno . d 1 s . pul seq . util . getCache Safe Ċ Ċ @ Aspect Ċ @ Component Ċ internal Ġclass ĠCache Put ById Provider Aspect Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcache Manager : ĠCache Manager ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapplication Context : ĠApplication Context ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLog Manager . getLogger () ĊĊĠĠĠ Ġ@ Point cut ("@ annotation ( uno . d 1 s . pul seq . annotation . cache . Cache Put ById Provider )") ĊĠĠĠ Ġprivate Ġfun Ġcache Put ById Provider () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Return ing (" cache Put ById Provider ()", Ġreturning Ġ= Ġ" returnValue ") ĊĠĠĠ Ġfun Ġdo Cache Put ting ( join Point : ĠJoin Point , ĠreturnValue : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġ( join Point . signature Ġas ĠMethod Signature ). method ĊĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġmethod . getAnnotation ( Cache Put ById Provider :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġcache Manager . getCache Safe ( annotation . cache Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getBean ( annotation . id Provider . java ). getId ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlogger . warn (" Method Ġ${ method . name } Ġreturned Ġthe Ġnull Ġvalue , Ġabort ing Ġthe Ġcaching Ġprocess .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĠreturnValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }