Add comments for the functions needed in payload handlers
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 1 Jun 2012 09:20:28 +0000 (12:20 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 1 Jun 2012 09:20:28 +0000 (12:20 +0300)
src/main/scala/gr/grnet/aquarium/connector/handler/IMEventPayloadHandler.scala
src/main/scala/gr/grnet/aquarium/connector/handler/ResourceEventPayloadHandler.scala

index b976091..bc18607 100644 (file)
@@ -38,12 +38,12 @@ package gr.grnet.aquarium.connector.handler
 import gr.grnet.aquarium.Aquarium
 import org.slf4j.Logger
 import gr.grnet.aquarium.converter.JsonTextFormat
-import gr.grnet.aquarium.util.{Tags, shortClassNameOf}
 import gr.grnet.aquarium.actor.RouterRole
 import gr.grnet.aquarium.store.{IMEventStore, LocalFSEventStore}
 import gr.grnet.aquarium.event.model.im.{StdIMEvent, IMEventModel}
 import gr.grnet.aquarium.actor.message.event.ProcessIMEvent
 import gr.grnet.aquarium.util.date.MutableDateCalc
+import gr.grnet.aquarium.util.{LogHelpers, Tags, shortClassNameOf}
 
 /**
  * A [[gr.grnet.aquarium.connector.handler.PayloadHandler]] for
@@ -54,31 +54,44 @@ import gr.grnet.aquarium.util.date.MutableDateCalc
 
 class IMEventPayloadHandler(aquarium: Aquarium, logger: Logger)
   extends GenericPayloadHandler[IMEventModel, IMEventStore#IMEvent](
+      // jsonParser: Array[Byte] ⇒ JsonTextFormat
       payload ⇒ {
         aquarium.converters.convertEx[JsonTextFormat](payload)
       },
 
+      // onJsonParserSuccess: (Array[Byte], JsonTextFormat) ⇒ Unit
       (payload, jsonTextFormat) ⇒ {
       },
 
+      // onJsonParserError: (Array[Byte], Throwable) ⇒ Unit
       (payload, error) ⇒ {
-        logger.error("Error creating JSON from %s payload".format(Tags.IMEventTag), error)
+        val errMsg = "Error creating JSON from %s payload".format(Tags.IMEventTag)
+        LogHelpers.logChainOfCauses(logger, error, errMsg)
+        logger.error(errMsg, error)
 
         LocalFSEventStore.storeUnparsedIMEvent(aquarium, payload, error)
       },
 
+      // eventParser: JsonTextFormat ⇒ E
       jsonTextFormat ⇒ {
         StdIMEvent.fromJsonTextFormat(jsonTextFormat)
       },
 
+      // onEventParserSuccess: (Array[Byte], E) ⇒ Unit
       (payload, event) ⇒ {
         LocalFSEventStore.storeIMEvent(aquarium, event, payload)
       },
 
+      // onEventParserError: (Array[Byte], Throwable) ⇒ Unit
       (payload, error) ⇒ {
-        logger.error("Error creating object model from %s payload".format(Tags.IMEventTag), error)
+        val errMsg = "Error creating object model from %s payload".format(Tags.IMEventTag)
+        LogHelpers.logChainOfCauses(logger, error, errMsg)
+        logger.error(errMsg, error)
+
+        LocalFSEventStore.storeUnparsedIMEvent(aquarium, payload, error)
       },
 
+      // preSaveAction: E ⇒ Option[HandlerResult]
       imEvent ⇒ {
         val id = imEvent.id
         val acceptMessage = None: Option[HandlerResult]
@@ -164,10 +177,12 @@ class IMEventPayloadHandler(aquarium: Aquarium, logger: Logger)
         }
       },
 
+      // saveAction: E ⇒ S
       imEvent ⇒ {
         aquarium.imEventStore.insertIMEvent(imEvent)
       },
 
+      // forwardAction: S ⇒ Unit
       imEvent ⇒ {
         aquarium.actorProvider.actorForRole(RouterRole) ! ProcessIMEvent(imEvent)
       }
index f23b4c5..90adb24 100644 (file)
@@ -53,31 +53,44 @@ import gr.grnet.aquarium.util._
 
 class ResourceEventPayloadHandler(aquarium: Aquarium, logger: Logger)
   extends GenericPayloadHandler[ResourceEventModel, ResourceEventStore#ResourceEvent](
+      // jsonParser: Array[Byte] ⇒ JsonTextFormat
       payload ⇒ {
         aquarium.converters.convertEx[JsonTextFormat](payload)
       },
 
+      // onJsonParserSuccess: (Array[Byte], JsonTextFormat) ⇒ Unit
       (payload, jsonTextFormat) ⇒ {
       },
 
+      // onJsonParserError: (Array[Byte], Throwable) ⇒ Unit
       (payload, error) ⇒ {
-        logger.error("Error creating JSON from %s payload".format(Tags.ResourceEventTag), error)
+        val errMsg = "Error creating JSON from %s payload".format(Tags.ResourceEventTag)
+        LogHelpers.logChainOfCauses(logger, error, errMsg)
+        logger.error(errMsg, error)
 
         LocalFSEventStore.storeUnparsedResourceEvent(aquarium, payload, error)
       },
 
+      // eventParser: JsonTextFormat ⇒ E
       jsonTextFormat ⇒ {
         StdResourceEvent.fromJsonTextFormat(jsonTextFormat)
       },
 
+      // onEventParserSuccess: (Array[Byte], E) ⇒ Unit
       (payload, event) ⇒ {
         LocalFSEventStore.storeResourceEvent(aquarium, event, payload)
       },
 
+      // onEventParserError: (Array[Byte], Throwable) ⇒ Unit
       (payload, error) ⇒ {
-        logger.error("Error creating object model from %s payload".format(Tags.ResourceEventTag), error)
+        val errMsg = "Error creating object model from %s payload".format(Tags.ResourceEventTag)
+        LogHelpers.logChainOfCauses(logger, error, errMsg)
+        logger.error(errMsg, error)
+
+        LocalFSEventStore.storeUnparsedResourceEvent(aquarium, payload, error)
       },
 
+      // preSaveAction: E ⇒ Option[HandlerResult]
       rcEvent ⇒ {
         val className = shortClassNameOf(rcEvent)
         val id = rcEvent.id
@@ -101,10 +114,12 @@ class ResourceEventPayloadHandler(aquarium: Aquarium, logger: Logger)
         }
       },
 
+      // saveAction: E ⇒ S
       rcEvent ⇒ {
         aquarium.resourceEventStore.insertResourceEvent(rcEvent)
       },
 
+      // forwardAction: S ⇒ Unit
       rcEvent ⇒ {
         aquarium.actorProvider.actorForRole(RouterRole) ! ProcessResourceEvent(rcEvent)
       }