Estoy poniendo en práctica una corriente en la que yo uso una colección listOfFoo para obtener los identificadores de todos los elementos de esa lista y los utilizo para obtener valores de las instancias de barras.
Me gustaría asegurar que este método va a lanzar ResourceNotFoundException en caso de que haya ninguna página en la lista de bares, aunque en el estado actual comprueba si bares lista es nula y no lo es, ya que contiene una lista vacía.
Podría usted por favor me ayude y sugerir alguna solución?
List<Bar> bars = Optional.ofNullable(
listOfFoos.stream()
.map(Foo::getId)
.map(fooId -> service.getBars(fooId))
.filter(Objects::nonNull)
.collect(Collectors.toList()))
.orElseThrow(() -> new ResourceNotFoundException(Bar.class, OBJECT_NULL));
Sólo tiene que añadir una Optional.filter
para entonces. Se podía hacerlo como:
List<Bar> bars = Optional.ofNullable(
listOfFoos.stream().map(fooId -> service.getBars(fooId))
.filter(Objects::nonNull).collect(Collectors.toList()))
.filter(a -> !a.isEmpty())
.orElseThrow(() -> new ResourceNotFoundException(Bar.class, OBJECT_NULL));
Aparte: Por la aplicación compartida en el código, la lista devuelta por la corriente no podría ser null
, por lo que Optional.ofNullable
podría ser reemplazado por Optional.of
.