Моя проблема связана с хранением некоторого содержимого в кэше и извлечением его из кэша для последующих запросов. Проблема, с которой я сталкиваюсь, заключается в том, что содержимое, хранящееся в кэше, возвращается как объект, поэтому при попытке его преобразовать в моей модели выдается исключение Typecast.
Возвращение ответа в виде самого объекта не будет для меня решением, поскольку у меня уже есть модель для сопоставления содержимого.
Mono<DynamicModel[]> content;
String key = countryCode.toLowerCase() + "_" + languageCode.toLowerCase() + "_" + siteMapId;
Cache cache = cacheManager.getCache(Constants.CacheKey.DYNAMIC_PAGES + "_" + countryCode.toUpperCase());
Cache.ValueWrapper wrapper = cache.get(key);
if (nonNull(wrapper) && nonNull(wrapper.get())) {
content = (Mono<DynamicModel[]>) wrapper.get(); // returns Object - problem occurs here
} else {
content = contentProvider.getDynamicPageContent(id, countryCode, languageCode, siteId);
cache.put(key, content.block()); // stores as DynamicModel
}
return content.map(res -> {
ArrayList<TestModel> response = new ArrayList<>();
for (DynamicModel data : res) {
// Some logic
response.add(obj);
}
TestModel[] resp = new TestModel[res.length];
return response.toArray(resp);
});