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
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]
}
},
+ // saveAction: E ⇒ S
imEvent ⇒ {
aquarium.imEventStore.insertIMEvent(imEvent)
},
+ // forwardAction: S ⇒ Unit
imEvent ⇒ {
aquarium.actorProvider.actorForRole(RouterRole) ! ProcessIMEvent(imEvent)
}
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
}
},
+ // saveAction: E ⇒ S
rcEvent ⇒ {
aquarium.resourceEventStore.insertResourceEvent(rcEvent)
},
+ // forwardAction: S ⇒ Unit
rcEvent ⇒ {
aquarium.actorProvider.actorForRole(RouterRole) ! ProcessResourceEvent(rcEvent)
}