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
- All
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 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 useful if you are statically wiring together filter chains based on a configuration file, for instance.
- condAndFilter
a tuple of boolean and filter.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
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: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- 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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )