2017-08-09 3 views
1

Je dois obtenir les commentaires avec vos réponses pour tous les nœuds appartenant à des utilisateurs authentifiés.Comment obtenir le nombre de réponses d'un commentaire avec RestFB

Je l'ai de la manière suivante avec flux java 8:

private Stream<Comment> getCommentsByObjectAfterThan(final FacebookClient facebookClient, final String objectId, final Date startDate, User user) { 

     Connection<Comment> commentConnection 
       = facebookClient.fetchConnection(objectId + "/comments", Comment.class); 

     return StreamUtils.asStream(commentConnection.iterator()) 
       .flatMap(List::stream) 
       .flatMap(comment 
         -> StreamUtils.concat(
         getCommentsByObjectAfterThan(facebookClient, comment.getId(), startDate, user), comment) 
       ) 
       .filter(comment -> !comment.getFrom().getId().equals(user.getId()) && 
         (startDate != null ? comment.getCreatedTime().after(startDate) : true)); 
    } 

J'ai besoin d'optimiser la seconde flapMap qui crée un flux avec le haut niveau commentaires et ses réponses.

Il est clair qu'il faudrait faire:

.flatMap(comment -> comment.getCommentCount() > 0 ? StreamUtils.concat(
      getCommentsByObjectAfterThan(facebookClient,comment.getId(), startDate, user), comment) : Stream.of(comment)) 

Le problème est qu'il comment.getCommentCount() retourne toujours 0 même si les commentaires ont des réponses.

Comment puis-je résoudre ce problème? Merci d'avance.

Répondre

3

Modifier la ligne

Connection<Comment> commentConnection 
      = facebookClient.fetchConnection(objectId + "/comments", Comment.class); 

à

Connection<Comment> commentConnection 
      = facebookClient.fetchConnection(objectId + "/comments", Comment.class, Parameter.with("fields","comment_count"); 

Ensuite, vous obtenez le champ comment_count du commentaire.

+0

Merci! Ça a marché –