Я из мира c #, поэтому привыкнуть к синтаксису Java немного сложно. Вот код, который я хочу изменить:
return _restClient
.createTask(batchGetRequest)
.map(Response::getItem)
.map(response -> {
if (response.getErrors().size() > 0) {
throw new ServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR,
"Failed to fetch data");
}
return response
.getResults()
.values()
.stream()
.map(Response::getItem)
.collect(Collectors.toList());
})
.recover(t -> {
throw ResponseUtils.addContext("Failed to get data", t);
});
Итак, я обнаружил, что не все ошибки в карте getErrors()
созданы равными. Для одного типа ошибки я хочу игнорировать ее и использовать key
, связанный с этой ошибкой (int
), чтобы удалить коррелированный ответ из response
, а затем продолжить анализ любых ошибок, которые мы выиграли. не игнорируйте, чтобы потенциально вызвать исключение.
Есть ли чистый способ сделать это в Java? Я знаю, как бы это сделать в c #, но этот декоративный шаблон Java, смешанный с этими streams
, сбивает меня с толку.