Невозможно привести «java.lang.Object []» к реактору.core.publisher.Mono' - PullRequest
0 голосов
/ 07 мая 2019

Моя проблема связана с хранением некоторого содержимого в кэше и извлечением его из кэша для последующих запросов. Проблема, с которой я сталкиваюсь, заключается в том, что содержимое, хранящееся в кэше, возвращается как объект, поэтому при попытке его преобразовать в моей модели выдается исключение 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);
    });
...