Plantilla de Facebook de spring fetchObject a PagedList

Estoy usando el siguiente enfoque para devolver las preferences de música de un usuario de Facebook:

//FIXME: Fetch results in a single operation val likes = facebook.likeOperations().music val artists = ArrayList<Artist>() for (musicLiked in likes) { val musicProfile = facebook.fetchObject(musicLiked.id, Page::class.java, "id", "name", "genre"); artists.add(Artist(name = musicProfile.name, genre = musicProfile.genre)) } 

El enfoque anterior no se escalará, ya que tenemos una operación de networking adicional para cada artista que le gusta al usuario.

Lo intenté:

Traté de usar facebook.likeOperations.music pero esto no busca el género.

Pregunta:

Me gustaría usar facebook.fetchObject con una consulta que devuelve una PagedList . ¿Como hacer esto?

(No es necesario que publiques código de ejemplo en Kotlin si prefieres o estás más familiarizado con Java; estaré contento con la información en cualquier idioma) .

    La API de Facebook usa el parámetro "campos" en las requestes para devolver campos personalizados para objects. Este parámetro también se puede usar para la request de descanso de música preferida.

     me/music?fields=id,genre,name 

    El enlace anterior devolverá toda la música que le haya gustado con id, género y nombre del artista / grupo. Lamentablemente, FacebookTemplate no tiene un método que se aplique a sus necesidades. El método Facebook.likeOperations () devuelve instancia de la class LikeTemplate que tiene PAGE_FIELDS constante con valor

     private static final String PAGE_FIELDS = "id,name,category,description,location,website,picture,phone,affiliation,company_overview,likes,checkins"; 

    En la constante anterior, no tienes campo de género. Entonces tienes dos forms:

    1. Simplemente puede usar facebook rest api con alguna biblioteca de descanso
    2. Puede anular FacebookTemplate y devolver su propia implementación de LikeTemplate como resultado del método likeOperations (). La implementación de la class LikeTemplate debe tener un valor diferente en la constante mencionada (campo de género agregado al final de la cadena)

    Tal vez alguien sea más útil pero, según mi conocimiento, no tienes otras opciones.

    Gracias a los consejos dados en la respuesta de @ burovmarley, inspeccioné la fuente y se me ocurrió:

     val music = facebook.fetchConnections(userPage.id, "music", Page::class.java, PagingParameters(25, 0, null, null).toMap(), "id,name,,genre") for (musicLiked in music) { println("likes: ${musicLiked.name}, genre: ${musicLiked.genre}") } 

    Esto permite usar Spring Social Facebook como una dependencia no modificada, y sin emitir una request de extracción, que parece ser bastante lenta en el procesamiento a través de la queue en este momento.