Я пытаюсь выполнить службу в spray.io, следуя примерам из оригинальной документации, и я застрял на сообщении об ошибке:
could not find implicit value for parameter marshaller: spray.httpx.marshalling.ToResponseMarshaller[scala.concurrent.Future[AdImporterServiceActor.StatusOfImport]]
val adServiceRoute: Route = {
path("service" / "import" / "status") {
get {
respondWithMediaType(`text/plain`) {
complete {
adImporterService.ask(GetImportStatus)(1 second).mapTo[StatusOfImport]
}
}
}
}
}
implicit val importStatusMarshaller: Marshaller[StatusOfImport] =
Marshaller.of[StatusOfImport](ContentTypes.`text/plain`) { (value, contentType, ctx) =>
val string = "Hello marshalled status"
ctx.marshalTo(HttpEntity(contentType, string))
}
куда
case class StatusOfImport(statuses: Map[String, ImportStatus], activeRequests:Set[Import])
case class ImportStatusUpdate(adId: String, statusUpdate: ImportStatus)
Я не уверен, что мне здесь не хватает. Может кто более опытный подскажет?
Спасибо
implicit instance
изspray.httpx.marshalling.ToResponseMarshaller[ A ]
, если вы хотите маршалировать некоторый типA
, который сообщает маршаллеру о том, как маршалировать эту вещь. Но здесь... вы пытаетесьmarshal
Future
. Звучит странно, как вы думаете, что бы вы написали, если бы вам пришлось отStringify
доFuture[ Int ]
?. Пример - вместоList( 1, 2, 3 )
можно написать что-то вроде[ 1, 2, 3 ]
. - person sarveshseri   schedule 12.03.2015