Comment vérifier si la Collecte n'est pas vide à l'aide de java Flux
Je suis nouveau sur Java 8. Je ne suis pas en mesure de comprendre ce qui est mauvais dans le morceau de code suivant. L'idée est d'envoyer Collection<User>
si elle n'est pas vide. Mais si la collection est vide que les envoyés HttpStatus.NOT_FOUND
Entité de réponse.
@RequestMapping(value = "/find/pks",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<User>> getUsers(@RequestBody final Collection<String> pks)
{
return StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
.map(list -> new ResponseEntity<>(list , HttpStatus.OK))
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
Eclipse me montre l'erreur dans le point suivant .orElse
La méthode
orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND))
est pas défini pour le typeStream<ResponseEntity<User>>
Mon interface de base de la méthode ressemble à ce qui suit
Iterable<T> findAll(Iterable<PK> pks);
Flux de données.map() renvoie un Flux de données, et d'un Flux n'a pas de orElse() la méthode. Vous créez votre propre vie compliquée en retournant un objet iterable. Pourquoi ne pas vous retourner une Liste ou d'un Ensemble, ou même d'une Collection, et d'utiliser la fonction isEmpty()? BTW, ce que vous êtes à la cartographie n'est pas une liste, c'est un utilisateur. Si vous voulez vraiment garder à l'aide de Itératif, l'utilisation itératif.iterator().hasNext() pour voir si elle est vide ou pas.
L'interface est fournie par l'un des ressorts. ))))
Ensuite, utilisez itératif.iterator().hasNext() pour voir si elle est vide ou pas. Mais cela dit, je ne voudrais pas retourner une erreur 404 dans un tel cas. il suffit de retourner un 200 avec une liste vide. 404 est une ressource inconnue vous essayez d'obtenir. Vous êtes à la recherche de ressources, et de ne pas trouver quoi que ce soit est un résultat valide.
L'interface est fournie par l'un des ressorts. ))))
Ensuite, utilisez itératif.iterator().hasNext() pour voir si elle est vide ou pas. Mais cela dit, je ne voudrais pas retourner une erreur 404 dans un tel cas. il suffit de retourner un 200 avec une liste vide. 404 est une ressource inconnue vous essayez d'obtenir. Vous êtes à la recherche de ressources, et de ne pas trouver quoi que ce soit est un résultat valide.
OriginalL'auteur Saurabh Kumar | 2015-06-03
Vous devez vous connecter pour publier un commentaire.
Vous mélangez deux choses. La première tâche consiste à convertir le
Iterable
à unCollection
qui vous pouvez en effet résoudre à l'aide de laStream
API:Noter que ce flux est un flux de
User
s, pas un flux de listes. Par conséquent, vous ne pouvez pas mapper unlist
à autre chose avec ce flux. Lemap
opération carte chaque élément de la diffuser à un nouvel élément.Alors vous pouvez utiliser cette liste pour créer la
ResponseEntity
Vous pouvez combiner ces étapes, par la création d'un
Collector
effectuer ces étapes, même si cela ne fournissent aucun avantage, c'est seulement une question de style:OriginalL'auteur Holger
Il n'est pas nécessaire, et souvent une erreur, tasser le tout dans une seule ligne. Dans ce cas, vous ne pouvez pas - il n'y a pas d'API pour votre intention.
Faire simple:
mais si vous avez absolument doit:
OriginalL'auteur Bohemian
Cela dépend de votre terminal fonctionnement du cours d'eau, rappelez-vous qu'un cours d'eau ne peuvent être consommés une fois.
Optional
(commefindAny
) alors vous pouvez utiliser l'option null vérification de méthodes.OriginalL'auteur the8472