Mam taką sytuację, jest sobie interface do otrzymywania kursów walut:
interface CurrencyExchangeRatioProvider {
fun getCurrencyExchange(from: Currency, to: Currency, exchangeDate: LocalDate) : Option<ExchangeRatio>
}
Jedną z implementacji jest restowy klient z którego zwracam Vavrowy Option (hehe pozdrawiam @Charles_Ray) - jak będzie 2xx to zwórci Option.Some, a inaczej pustego Optiona. To co chce zrobić to kolejną implementację będzie wrapperem z Guavovym Cachem i chcę wykorzystać CacheLoader i tu pojawia sięzagwostka - jeśli będzie problem dla pary walutowej (bo na przykład dostawca kursów będzie niedostępny), to wtedy zostanie zwrócony zwracany pusty Option. Jak najlepiej poradzić sobie z takim problemem?
Jeydny hack który wymyśliłem to dodawanie kluczy dla ktorych delegator zwraca pusty option do jakieś kolekcji i co jakiś czas robenie refresha dla niej...