add a jersey MessageBodyWriter that serializes scala lists to JSON arrays
This commit is contained in:
parent
6c4d05bbdc
commit
e58128fccf
2 changed files with 39 additions and 0 deletions
|
|
@ -0,0 +1 @@
|
|||
se.scalablesolutions.akka.rest.ListWriter
|
||||
38
akka-rest/src/main/scala/ListWriter.scala
Normal file
38
akka-rest/src/main/scala/ListWriter.scala
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
/**
|
||||
* Copyright (C) 2009 Scalable Solutions.
|
||||
*/
|
||||
package se.scalablesolutions.akka.rest
|
||||
|
||||
import java.io.OutputStream
|
||||
import se.scalablesolutions.akka.serialization.Serializer
|
||||
import javax.ws.rs.core.{MultivaluedMap, MediaType}
|
||||
import javax.ws.rs.ext.{MessageBodyWriter, Provider}
|
||||
import javax.ws.rs.Produces
|
||||
|
||||
/**
|
||||
* writes Lists of JSON serializable objects
|
||||
*/
|
||||
@Provider
|
||||
@Produces(Array("application/json"))
|
||||
class ListWriter extends MessageBodyWriter[List[_]] {
|
||||
|
||||
def isWriteable(aClass: Class[_], aType: java.lang.reflect.Type, annotations: Array[java.lang.annotation.Annotation], mediaType: MediaType) = {
|
||||
classOf[List[_]].isAssignableFrom(aClass) || aClass == ::.getClass
|
||||
}
|
||||
|
||||
def getSize(list: List[_], aClass: Class[_], aType: java.lang.reflect.Type, annotations: Array[java.lang.annotation.Annotation], mediaType: MediaType) = -1L
|
||||
|
||||
def writeTo(list: List[_],
|
||||
aClass: Class[_],
|
||||
aType: java.lang.reflect.Type,
|
||||
annotations: Array[java.lang.annotation.Annotation],
|
||||
mediaType: MediaType,
|
||||
stringObjectMultivaluedMap: MultivaluedMap[String, Object],
|
||||
outputStream: OutputStream) : Unit = {
|
||||
if (list.isEmpty)
|
||||
outputStream.write(" ".getBytes)
|
||||
else
|
||||
outputStream.write(Serializer.ScalaJSON.out(list))
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue