For type processing Elemyou will need MessageBodyWriter. This component is what the entire Java object goes through to serialize the response flow. You can read more at JAX-RS Entity Providers . For example, for Elemyou can use something like
import java.io.OutputStream
import java.lang.Class
import java.lang.reflect.Type
import java.lang.annotation.Annotation
import javax.ws.rs.{ Produces }
import javax.ws.rs.core.{ MultivaluedMap, MediaType }
import javax.ws.rs.ext.{ MessageBodyWriter, Provider }
import scala.xml.Elem
@Provider
@Produces(Array("application/xml"))
class ElemWriterProvider extends MessageBodyWriter[Elem] {
override def isWriteable(cls: Class[_], genericType: Type,
annotations: Array[Annotation],
mediaType: MediaType) = {
classOf[Elem].isAssignableFrom(cls)
}
override def getSize(elem: Elem, cls: Class[_], genericType: Type,
annotations: Array[Annotation], mediaType: MediaType) = {
-1L
}
override def writeTo(elem: Elem, cls: Class[_], genericType: Type,
annotations: Array[Annotation], mediaType: MediaType,
headers: MultivaluedMap[String, Object],
entityStream: OutputStream): Unit = {
println("------- writeTo --------")
entityStream.write(elem.buildString(false).getBytes)
}
}
, .
UPDATE
( ) - XML-; -)