package Ġall an le wis . products Ċ Ċ import Ġall an le wis . api . Position Config Ċ import Ġall an le wis . api . Product Ċ import Ġall an le wis . api . RestApi Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ class ĠProduct Repository ( private Ġval Ġposition Configs : ĠArray < Position Config >, Ġprivate Ġval Ġrest Api : ĠRest Api ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĠĠĠ Ġprivate Ġval Ġproducts Ġ= ĠConcurrent HashMap < String , ĠMono < Product >>() ĊĊĠĠĠ Ġfun Ġinit (): ĠProduct Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( pc Ġin Ġposition Configs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Loading Ġproduct Ġ{}", Ġpc ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproducts [ pc . id ] Ġ= Ġrest Api . get Product ( pc . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġproducts (): ĠFlux < Product > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFlux . merge ( products . values ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġproduct ( id : ĠString ): ĠMono < Product > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( products [ id ] Ġ== Ġnull ) ĠMono . empty () Ġelse Ġproducts [ id ] !! ĊĠĠĠ Ġ} Ċ Ċ } Ċ