データを処理するための既存のJavaクラスがあります。最初のpromiseからObjectNodeを使用して、Scala Asyncアクションでより多くの処理を行うにはどうすればよいですか?
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")))
}
}
編集1
@hbfコードで試しましたが、この行のコンパイルエラーが発生しました。
[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 =>
objJsからObjectNodeを削除すると、このエラーが発生します。
[error] missing parameter type
[error] var result = futureObj map { objJs =>
新しいコード
def index = Action {
val futureInt = JavaClass.intensiveComputation()
Async {
var result = futureObj map { objJs: ObjectNode =>
Ok(Json.toJson(Map("status" -> "ok")))
}
result
}