Vavr Проверка потока валидаторов

У меня есть такой код:

  return validators
            .stream()
            .flatMap(v -> v.validate(scoreRequest).stream())
            .collect(toList());

Каждый валидатор возвращает List<String> ошибок, если список пуст, это означает, что запрос действителен.

Теперь я хочу представить vavr.Validator. Новый тип возврата каждого validator.validate теперь Validation<List<String>,ScoreRequest>

Как я могу объединить вывод каждого валидатора, используя потоки, как раньше?

Я думаю, вы должны уточнить свои требования. Как мы могли сказать вам, что ты собирается делать с этой измененной подписью?! Вы изменили подпись этого метода, чтобы вернуть объект проверки. Теперь ты должен определить, как вы хотите разумно обработать это?!

GhostCat 16.04.2019 09:06

Я просто хочу объединить все проверки, выполненные каждым валидатором. На выходе комбайна должно быть: Validation<List<String>,ScoreRequest>

Fabry 16.04.2019 09:10

Вы говорите, что метод validate() каждый возвращает объект Validation. Как вы планируете их объединить? Как из списка ScoreRequest перейти в один?!

GhostCat 16.04.2019 09:31

Я думал, что Valivation.combine сделает именно это. Объедините List<String> ошибок или верните scoreRequest, если запрос действителен.

Fabry 16.04.2019 10:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
719
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать последовательность именно для этого.

Итак, если ваш validators является List<Validation<List<String>, ScoreRequest>>, применение к нему этой функции вернет Validation<Seq<String>, Seq<ScoreRequest>>, который выглядит точно так, как вы хотите. Я позволю вам разобраться с тонкостями обратного преобразования Seq в любую структуру, которую вы хотите.

Другие вопросы по теме