abstract class Filter[-ReqIn, +RepOut, +ReqOut, -RepIn] extends (ReqIn, Service[ReqOut, RepIn]) => Future[RepOut]
A Filter acts as a decorator/transformer of a service. It may apply transformations to the input and output of that service:
(* MyService *) [ReqIn -> (ReqOut -> RepIn) -> RepOut]
For example, you may have a service that takes Strings
and
parses them as Ints
. If you want to expose this as a Network
Service via Thrift, it is nice to isolate the protocol handling
from the business rules. Hence you might have a Filter that
converts back and forth between Thrift structs. Again, your service
deals with plain objects:
[ThriftIn -> (String -> Int) -> ThriftOut]
Thus, a Filter[A, B, C, D]
converts a Service[C, D]
to a Service[A, B]
.
In other words, it converts a Service[ReqOut, RepIn]
to a
Service[ReqIn, RepOut]
.
- See also
The user guide for details and examples.
- Alphabetic
- By Inheritance
- Filter
- Function2
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Filter()
Abstract Value Members
- abstract def apply(request: ReqIn, service: Service[ReqOut, RepIn]): Future[RepOut]
This is the method to override/implement to create your own Filter.
This is the method to override/implement to create your own Filter.
- request
the input request type
- service
a service that takes the output request type and the input response type
- Definition Classes
- Filter → Function2
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
- def agnosticAndThen(next: TypeAgnostic): Filter[ReqIn, RepOut, ReqOut, RepIn]
Convert the Filter.TypeAgnostic filter to a Filter and chain it with
andThen
. - def andThen(factory: ServiceFactory[ReqOut, RepIn]): ServiceFactory[ReqIn, RepOut]
Terminates a filter chain in a ServiceFactory.
Terminates a filter chain in a ServiceFactory. For example,
myFilter.andThen(myServiceFactory)
- factory
a service factory that takes the output request type and the input response type.
- def andThen(service: Service[ReqOut, RepIn]): Service[ReqIn, RepOut]
Terminates a filter chain in a Service.
Terminates a filter chain in a Service. For example,
myFilter.andThen(myService)
- service
a service that takes the output request type and the input response type.
- def andThen[Req2, Rep2](next: Filter[ReqOut, RepIn, Req2, Rep2]): Filter[ReqIn, RepOut, Req2, Rep2]
Chains a series of filters together:
Chains a series of filters together:
myModularService = handleExceptions.andThen(thrift2Pojo.andThen(parseString))
- next
another filter to follow after this one
- Note
synchronously thrown exceptions in the underlying service are automatically lifted into Future.exception.
- def andThenIf[Req2 >: ReqOut, Rep2 <: RepIn](condAndFilter: (Boolean, Filter[ReqOut, RepIn, Req2, Rep2])): Filter[ReqIn, RepOut, Req2, Rep2]
Conditionally propagates requests down the filter chain.
Conditionally propagates requests down the filter chain. This may be useful if you are statically wiring together filter chains based on a configuration file, for instance.
- condAndFilter
a tuple of boolean and filter.
- def andThenIf[Req2 >: ReqOut, Rep2 <: RepIn](conditional: Boolean, filter: Filter[ReqOut, RepIn, Req2, Rep2]): Filter[ReqIn, RepOut, Req2, Rep2]
Conditionally propagates requests down the filter chain.
Conditionally propagates requests down the filter chain. This may be useful if you are statically wiring together filter chains based on a configuration file, for instance.
- conditional
a boolean value indicating whether the filter should be included in the filter chain.
- filter
the filter to be conditionally included.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def curried: (ReqIn) => (Service[ReqOut, RepIn]) => Future[RepOut]
- Definition Classes
- Function2
- Annotations
- @unspecialized()
- 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
- Filter → Function2 → AnyRef → Any
- def tupled: ((ReqIn, Service[ReqOut, RepIn])) => Future[RepOut]
- Definition Classes
- Function2
- Annotations
- @unspecialized()
- 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()