package Ġde . rock yj . wort s chat z . configuration Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġjava . util . concurrent . atomic . Atomic Reference Ċ Ċ class ĠDataSource ( configuration : ĠGeneric Configuration , Ġsecrets : ĠGeneric Configuration ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġconfig Ġ= ĠH ikariConfig () ĊĠĠĠ Ġprivate Ġval Ġdb URL Ġ= Ġsecrets . get < String >(" db URL ") ĊĠĠĠ Ġprivate Ġvar Ġref : ĠAtomic Reference < Hikari DataSource ?> Ġ= ĠAtomic Reference () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig . jdbc Url Ġ= Ġdb URL ĊĠĠĠĠĠĠĠ Ġconfig . maximum PoolSize Ġ= Ġconfiguration . get (" max PoolSize ") Ġas ĠInt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Hikari DataSource (): ĠH ikari DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( ref . get () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref . update AndGet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ikari DataSource ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} !! ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref . get () !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ