From 18b4c55a06a3a673894725701edef999e787c97c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bone=CC=81r?= Date: Fri, 18 Mar 2011 17:58:58 +0100 Subject: [PATCH] Added hierarchical event handler level to generic event publishing --- akka-actor/src/main/scala/akka/actor/Actor.scala | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/Actor.scala b/akka-actor/src/main/scala/akka/actor/Actor.scala index 19e168006e..47b99cbebe 100644 --- a/akka-actor/src/main/scala/akka/actor/Actor.scala +++ b/akka-actor/src/main/scala/akka/actor/Actor.scala @@ -111,10 +111,10 @@ object EventHandler extends ListenerManagement { import java.util.Date import akka.dispatch.Dispatchers - val ErrorLevel = 1 + val ErrorLevel = 1 val WarningLevel = 2 - val InfoLevel = 3 - val DebugLevel = 4 + val InfoLevel = 3 + val DebugLevel = 4 sealed trait Event { val thread: Thread = Thread.currentThread @@ -145,7 +145,7 @@ object EventHandler extends ListenerManagement { def notify(event: => AnyRef) = notifyListeners(event) def notify[T <: Event : ClassManifest](event: => T) { - if (classManifest[T].erasure.asInstanceOf[Class[_ <: Event]] == level) notifyListeners(event) + if (level >= levelFor(classManifest[T].erasure.asInstanceOf[Class[_ <: Event]])) notifyListeners(event) } def error(cause: Throwable, instance: AnyRef, message: => String) = { @@ -173,6 +173,14 @@ object EventHandler extends ListenerManagement { sw.toString } + private def levelFor(eventClass: Class[_ <: Event]) = { + if (eventClass.isInstanceOf[Error]) ErrorLevel + else if (eventClass.isInstanceOf[Warning]) WarningLevel + else if (eventClass.isInstanceOf[Info]) InfoLevel + else if (eventClass.isInstanceOf[Debug]) DebugLevel + else DebugLevel + } + class DefaultListener extends Actor { self.id = ID self.dispatcher = EventHandlerDispatcher