OnHandler.kt

  1. package com.hexagontk.handlers

  2. class OnHandler<T : Any>(
  3.     override val predicate: (Context<T>) -> Boolean = { true },
  4.     val callback: (Context<T>) -> Context<T>,
  5. ) : Handler<T> {

  6.     override fun process(context: Context<T>): Context<T> =
  7.         try {
  8.             val callbackContext = callback(context)
  9.             callbackContext.with(handled = true).next()
  10.         }
  11.         catch (e: Exception) {
  12.             context.with(exception = e).next()
  13.         }
  14. }