trait DefaultMessageBodyReader extends AnyRef
Marker trait denoting a class that can act as a default com.twitter.finatra.http.marshalling.MessageBodyReader for the HTTP server.
This default is invoked when the com.twitter.finatra.http.internal.CallbackConverter
cannot find a suitable com.twitter.finatra.http.marshalling.MessageBodyReader to convert the
incoming Finagle request into the route callback input type. E.g., given a defined route in a Controller:
get("/") { request: T => ... }
The com.twitter.finatra.http.internal.CallbackConverter
attempts to locate a
com.twitter.finatra.http.marshalling.MessageBodyManager which can parse a Finagle
request into the input type T
. If one is not found, this default is invoked.
The framework binds com.twitter.finatra.http.internal.marshalling.DefaultMessageBodyReaderImpl as an overridable implementation via the com.twitter.finatra.http.modules.MessageBodyModule.
To override this implementation, provide a customized com.twitter.inject.TwitterModule by overriding com.twitter.finatra.http.HttpServer.messageBodyModule, e.g.,
class MyServer extends HttpServer { ... override val messageBodyModule = MyCustomMessageBodyModule }
The framework default com.twitter.finatra.http.marshalling.MessageBodyReader will attempt to convert the incoming request body using the server's configured com.twitter.util.jackson.ScalaObjectMapper and is the basis for the framework's JSON Integration with Routing.
The com.twitter.finatra.http.marshalling.DefaultMessageBodyReader trait differs from the
com.twitter.finatra.http.marshalling.MessageBodyReader trait in that the
default is not parameterized to a specific type but instead defines a generic parse[T]
function
which can generate a type T
from a given request.
A com.twitter.finatra.http.marshalling.MessageBodyReader is expected to only
ever generate a single type T
from its parse[T]
implementation.
- Note
this class is explicitly NOT an extension of com.twitter.finatra.http.marshalling.MessageBodyReader because it is bound to the object graph and needs to support injectable value lookup by type passed into the parse method.
- See also
com.twitter.finatra.http.internal.marshalling.DefaultMessageBodyReaderImpl
https://twitter.github.io/finatra/user-guide/json/routing.html#requests
- Alphabetic
- By Inheritance
- DefaultMessageBodyReader
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()