package Ġeu . wo jc ie ch zure k . p wn ed password checker Ċ Ċ import Ġorg . springframework . cache . annotation . Cache able Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġreactor . core . publisher . Flux Ċ import Ġjava . util . stream . Collectors Ċ import Ġjava . util . stream . Stream Ċ import Ġkotlin . streams . toList Ċ Ċ const Ġval ĠDE LIMITER Ġ= Ġ":" Ċ Ċ @ Service Ċ class ĠP wn ed Password ServiceImpl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġp wn ed Password Repository : ĠP wn ed Password Repository Ċ ) Ġ: ĠP wn ed Password Service Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠfindBy Prefix ( prefix : ĠInt ) Ġ= Ġp wn ed Password Repository . findBy Prefix ( prefix ) ĊĊĠĠĠ Ġoverride Ġfun ĠfindBy Prefix AsStream ( prefix : ĠInt ): ĠStream < P wn ed Password Response > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindBy Prefix ( prefix ). map Ġ{ ĠP wn ed Password Response . from ( it ) Ġ} ĊĊĠĠĠ Ġ@ Cache able ( cache Names Ġ= Ġ[" text - passwords "]) ĊĠĠĠ Ġoverride Ġfun ĠfindBy Prefix As Text ( prefix : ĠInt ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindBy Prefix ( prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"${ it . suffix }$ DE LIMITER ${ it . count }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . join ing ("\ n ")) ĊĊĠĠĠ Ġoverride Ġfun ĠfindBy Prefix As Text Stream ( prefix : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlux . from Stream ( findBy Prefix ( prefix ). map Ġ{ Ġ"${ it . suffix }$ DE LIMITER ${ it . count }" Ġ}) ĊĊĠĠĠ Ġ@ Cache able ( cache Names Ġ= Ġ[" list - passwords "]) ĊĠĠĠ Ġoverride Ġfun ĠfindBy Prefix As List ( prefix : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindBy Prefix ( prefix ). map Ġ{ ĠP wn ed Password Response . from ( it ) Ġ}. toList () ĊĊĠĠĠ Ġoverride Ġfun ĠfindBy Prefix As Flux ( prefix : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlux . from Stream ( findBy Prefix ( prefix ). map Ġ{ ĠP wn ed Password Response . from ( it ) Ġ}) Ċ }