in http-core/src/main/scala/com/twitter/finatra/http/marshalling/DefaultMessageBodyWriterImpl.scala [29:63]
override def write(obj: Any): WriterResponse = {
obj match {
case null =>
WriterResponse.EmptyResponse
case buf: Buf =>
WriterResponse(octetStream, buf)
case bytes: Array[Byte] =>
WriterResponse(octetStream, bytes)
case "" =>
WriterResponse.EmptyResponse
case () =>
WriterResponse.EmptyResponse
case _: BoxedUnit =>
WriterResponse.EmptyResponse
case opt if opt == None =>
WriterResponse.EmptyResponse
case str: String =>
WriterResponse(plainText, str)
case is: InputStream =>
AutoClosable.tryWith(is) { closable =>
WriterResponse(octetStream, StreamIO.buffer(closable).toByteArray)
}
case file: File =>
AutoClosable.tryWith(new BufferedInputStream(new FileInputStream(file))) { closable =>
WriterResponse(
contentType = fileResolver.getContentType(file.getName),
StreamIO.buffer(closable).toByteArray)
}
case _ =>
if (isPrimitiveOrWrapper(obj.getClass))
WriterResponse(plainText, obj.toString)
else
WriterResponse(applicationJson, mapper.writeValueAsBytes(obj))
}
}