J'ai une liste de jetons, cette liste doit contenir juste un élément avec l'état actif. S'il n'y a pas un élément avec un statut égal à actif, je dois lancer une exception.Comment compter les éléments et trouver d'abord en Java 8
Je veux écrire cela avec lambda Expresssions et ceci est mon code:
List<Token> listResult = tokenRepository.findByReference(tokenRefId);
if (listResult == null || listResult.isEmpty()) {
throw new IllegalStateException(Messages.TOKEN_NOT_FOUND);
}
if (listResult.stream().filter(t -> t.getStatus().equals(TokenStatus.ACTIVE.code())).count() != 1) {
throw new IllegalStateException(Messages.ONE_TOKEN_MUST_BE_ACTIVATED);
}
Token token = listResult.stream().filter(t -> t.getStatus().equals(TokenStatus.ACTIVE.code()))
.findFirst().orElseThrow(() -> new IllegalStateException(Messages.ONE_TOKEN_MUST_BE_ACTIVATED));
Notez que je jette la même exception à deux reprises. Comment puis-je vérifier s'il n'y a qu'un seul élément avec un statut actif et l'obtenir dans la même expression lambda?