You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by vd...@apache.org on 2009/11/30 16:17:30 UTC
svn commit: r885445 - in
/incubator/esme/trunk/server/src/main/scala/org/apache/esme:
api/RestAPI.scala model/Message.scala
Author: vdichev
Date: Mon Nov 30 15:17:30 2009
New Revision: 885445
URL: http://svn.apache.org/viewvc?rev=885445&view=rev
Log:
ESME-128 Provide API for messages in text or XHTML format
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala
incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala
Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala?rev=885445&r1=885444&r2=885445&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/RestAPI.scala Mon Nov 30 15:17:30 2009
@@ -41,7 +41,7 @@
import model._
import org.apache.esme.actor._
-import scala.xml.{NodeSeq, Text, Elem, XML}
+import scala.xml.{NodeSeq, Text, Elem, Node, XML}
import scala.collection.mutable.ListBuffer
import java.util.logging._
@@ -53,7 +53,12 @@
case Req("api" :: "status" :: Nil, "", GetRequest) => status
case Req("api" :: "login" :: Nil, "", PostRequest) => login
case Req("api" :: "logout" :: Nil, "", GetRequest) => logout
- case Req("api" :: "get_msgs" :: Nil, "", GetRequest) => getMsgs
+ case Req("api" :: "get_msgs" :: Nil, "", GetRequest) =>
+ () => getMsgs(_.toXml)
+ case Req("api" :: "get_xhtml_msgs" :: Nil, "", GetRequest) =>
+ () => getMsgs(_.toXHTML)
+ case Req("api" :: "get_text_msgs" :: Nil, "", GetRequest) =>
+ () => getMsgs(_.toPlainTextBody)
case Req("api" :: "wait_for_msgs" :: Nil, "", GetRequest) =>
waitForMsgs
@@ -313,7 +318,7 @@
r
}
- def getMsgs(): LiftResponse = {
+ def getMsgs(format: Message => Node): LiftResponse = {
val t: Box[NodeSeq] =
for (tagName <- S.param("tag");
tag <- Tag.find(By(Tag.name, tagName)))
@@ -322,7 +327,12 @@
val r: Box[NodeSeq] =
t or (for (user <- calcUser ?~ S.?("base_rest_api_err_param_not_found", "User");
val lst = Mailbox.mostRecentMessagesFor(user.id, 40))
- yield lst.flatMap{ case (msg, why, _) => msg.toXml % why.attr})
+ yield lst.flatMap{ case (msg, why, _) =>
+ format(msg) match {
+ case e: Elem => e % why.attr
+ case x => x
+ }
+ })
r
}
Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala?rev=885445&r1=885444&r2=885445&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Message.scala Mon Nov 30 15:17:30 2009
@@ -350,6 +350,20 @@
}
private lazy val originalXml = XML.loadString(text.is)
+
+ def transformBody(ns: NodeSeq) = {
+ import scala.xml.transform.{RuleTransformer, RewriteRule}
+ toXml.map(new RuleTransformer(new RewriteRule{
+ override def transform(n: Node) = n match {
+ case e: Elem if "body" == e.label => <body>{ns}</body>
+ case _ => n
+ }
+ })).first
+ }
+
+ lazy val toXHTML = transformBody(digestedXHTML)
+
+ lazy val toPlainTextBody = transformBody(Text(getText))
private [model] def saveTheTags() = synchronized {
for (tag <- tagIds) {