package Ġcom . f reen ow . and rome da . docker . service Ċ Ċ import Ġcom . f reen ow . and rome da . docker . model . Configuration Item Ċ import Ġcom . f reen ow . and rome da . docker . model . Configuration Keys Ċ import Ġcom . f reen ow . and rome da . docker . repository . Configuration Item Repository Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service Ċ class ĠConfiguration Service Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġconfiguration Item Repository : ĠConfiguration Item Repository ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠĠĠ Ġfun Ġset Configuration ( Ġconfiguration Item : ĠConfiguration Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Configuration Item Ġ= Ġconfiguration Item Repository . find Configuration Item ByKey ( configuration Item . key ) ĊĊĠĠĠĠĠĠĠ Ġif ( existing Configuration Item . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexisting Configuration Item . get (). value Ġ= Ġconfiguration Item . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Item Repository . save ( existing Configuration Item . get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Item Repository . save ( Configuration Item ( key Ġ= Ġconfiguration Item . key , Ġvalue Ġ= Ġconfiguration Item . value )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Configuration ( key : ĠConfiguration Keys ) Ġ= Ġconfiguration Item Repository . find Configuration Item ByKey ( key ) ĊĊĠĠĠ Ġfun Ġget Configurations (): ĠMutable List < Configuration Item > Ġ= Ġconfiguration Item Repository . findAll () ĊĊĠĠĠ Ġfun Ġget Configuration S af ely ( key : ĠConfiguration Keys , ĠdefaultValue : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġconfiguration Ġ= ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Ġget Configuration ( key ). isPresent Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Ġ= Ġget Configuration ( key ). get (). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error Ġ{ Ġ" Unable Ġto Ġget Ġ$ key " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconfiguration ĊĠĠĠ Ġ} Ċ Ċ }