Suppose I have a Spring Data Repository method.
Optional<Branch> findByName(@Nonnull final String name);
My business logic is such if I find any value for this method execution I would throw an exception.
I could do this for example :
Optional.of(branchRepository.findByName(branch.getName()))
.filter(bo -> !bo.isPresent())
.orElseThrow(NameNotAvailableException::new);
or another way:
Optional.of(branchRepository.findByName(branch.getName()))
.filter(Optional::isEmpty)
.orElseThrow(NameNotAvailableException::new);
I am not sure if using filter, in this case, is appropriate as my method returns Optional<Branch>
not a list.
It seems that if in JDK if there were ifPresentThrow() method was available that would serve my purpose.
Yes, this code can be written in an imperative style which I don't want. So my question is the same kind of things ifPresentThrow() can be achieved or there is a better way to do it in a functional style. Thanks in advance.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…