J'ai une classe java existante pour le traitement des données. Comment pourrais-je utiliser le ObjectNode de la première promesse et donc plus de traitement dans mon action Scala Async?Lecture 2.1 Futures et promesses multiples de chaîne Scala
public class JavaClass extends Controller {
public static Promise<ObjectNode> intensiveComputation(String imageId) {
}
}
def index = Action {
val futureInt = scala.concurrent.Future { JavaClass.intensiveComputation() }
Async {
futureInt.map(promise =>
var objJs = promise.GetObjectNodeFromPromise()
(objJs \ Config.RESP_STATUS_PARAM).as[String] match {
// I WANT TO READ ObjectNode from promise and do more works here
}
Ok(Json.toJson(Map("status" -> "ok")))
}
}
EDIT 1
J'ai essayé avec @hbf code, cependant, je me suis compiler erreur une cette ligne.
[error] found : org.codehaus.jackson.node.ObjectNode => play.api.mvc.SimpleResult[play.api.libs.json.JsValue]
[error] required: play.libs.F.Function[org.codehaus.jackson.node.ObjectNode,?]
[error] var result = futureObj map { objJs: ObjectNode =>
Si je retire ObjectNode de objJs, j'ai eu cette erreur.
[error] missing parameter type
[error] var result = futureObj map { objJs =>
Nouveau Code
def index = Action {
val futureInt = JavaClass.intensiveComputation()
Async {
var result = futureObj map { objJs: ObjectNode =>
Ok(Json.toJson(Map("status" -> "ok")))
}
result
}
J'ai essayé futureInt.map (objJs => Toutefois, je me suis trouvé cette erreur [error]: org.codehaus.jackson.node.ObjectNode => play.api.mvc. SimpleResult [play.api.libs.json.JsValue] [erreur] requise: play.libs.F.Function [org.codehaus.jackson.node.ObjectNode ,?] – angelokh
Il est également important de mentionner que Google a simplement créé "Scala Async". "vous obtenez comme votre premier coup les docs pour le jeu. 2.0 Seems Play a changé le concept de la programmation asynchrone de façon spectaculaire dans 2.1 (de la promesse [T] à l'avenir [T]) ainsi ces documents sont obsolètes. –