in tormenta-core/src/main/scala/com/twitter/tormenta/scheme/Scheme.scala [62:86]
def filter(fn: T => Boolean): Scheme[T] =
Scheme(self.decode(_).filter(fn))
.withHandler(self.handle(_).filter(fn))
def map[R](fn: T => R): Scheme[R] =
Scheme(self.decode(_).map(fn))
.withHandler(self.handle(_).map(fn))
def flatMap[R](fn: T => TraversableOnce[R]): Scheme[R] =
Scheme(self.decode(_).flatMap(fn))
.withHandler(self.handle(_).flatMap(fn))
private def cast(t: Any): JList[AnyRef] = new Values(t.asInstanceOf[AnyRef])
private def toJava(items: TraversableOnce[Any]) =
if (!items.isEmpty)
items.map(cast).toIterable.asJava
else
null
override def deserialize(bytes: ByteBuffer) =
try {
toJava(decode(bytes))
} catch {
case t: Throwable => toJava(handle(t))
}