PageRenderTime 80ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/scala/com/mishlabs/xmpp/protocol/message/Error.scala

http://github.com/tomerd/scala-xmpp
Scala | 42 lines | 30 code | 11 blank | 1 comment | 0 complexity | c12a9f44ace8108d22faca55bc536f7d MD5 | raw file
  1. package com.mishlabs.xmpp
  2. {
  3. package protocol.message
  4. {
  5. import scala.collection._
  6. import scala.xml._
  7. import com.mishlabs.xmpp.protocol._
  8. import com.mishlabs.xmpp.protocol.Protocol._
  9. object Error
  10. {
  11. val messageType = MessageTypeEnumeration.Error
  12. def apply(message:Message, condition:StanzaErrorCondition.Value, description:Option[String]=None):Error = apply(message.id, message.from, message.to, message.extensions, condition, description)
  13. def apply(id:Option[String], to:Option[JID], from:Option[JID], extensions:Option[Seq[Extension]], condition:StanzaErrorCondition.Value, description:Option[String]):Error =
  14. {
  15. val xml = Message.error(id, to, from, extensions, condition, description)
  16. return apply(xml)
  17. }
  18. def apply(xml:Node):Error = new Error(xml)
  19. def unapply(error:Error):Option[(Option[String], Option[JID], Option[JID], StanzaErrorCondition.Value, Option[String])] = Some(error.id, error.to, error.from, error.condition, error.description)
  20. }
  21. class Error(xml:Node) extends Message(xml, Error.messageType)
  22. {
  23. // FIXME, this should be conditional
  24. private val error = StanzaError((xml \ "error")(0))
  25. val errorType:Option[StanzaErrorAction.Value] = error.errorType
  26. val condition:StanzaErrorCondition.Value = error.condition
  27. val description:Option[String] = error.description
  28. val otherConditions:Option[Seq[String]] = error.otherConditions
  29. }
  30. }
  31. }