in riff-raff/app/persistence/representation.scala [107:154]
override def writes(doc: MessageDocument): JsValue = doc match {
case DeployDocument =>
JsObject(List("_typeHint" -> JsString(DeployDocument.getClass.getName)))
case d @ TaskListDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
TaskListDocument.getClass.getName
))
case d @ TaskRunDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
TaskRunDocument.getClass.getName
))
case d @ InfoDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
InfoDocument.getClass.getName
))
case d @ CommandOutputDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
CommandOutputDocument.getClass.getName
))
case d @ CommandErrorDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
CommandErrorDocument.getClass.getName
))
case d @ VerboseDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
VerboseDocument.getClass.getName
))
case d @ FailDocument(_, _) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
FailDocument.getClass.getName
))
case FinishContextDocument =>
JsObject(
List("_typeHint" -> JsString(FinishContextDocument.getClass.getName))
)
case FailContextDocument =>
JsObject(
List("_typeHint" -> JsString(FailContextDocument.getClass.getName))
)
case d @ WarningDocument(_) =>
Json.toJson(d).as[JsObject] + ("_typeHint" -> JsString(
WarningDocument.getClass.getName
))
case d =>
throw new IllegalArgumentException(
s"Don't know how to write MessageDocument of type $d"
)
}