Author: vdichev
Date: Sat Jul 18 13:29:14 2009
New Revision: 795363
URL: http://svn.apache.org/viewvc?rev=795363&view=rev
Log:
ESME-79 Action filters for resent messages
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala
incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala
URL:
http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala?rev=795363&r1=795362&r2=795363&view=diff
==============================================================================
---
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala
(original)
+++
incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/MsgParser.scala
Sat Jul 18 13:29:14 2009
@@ -47,13 +47,13 @@
lazy val url: Parser[URL] = httpUrl ^^ {url => URL(UrlStore.make(url))}
- lazy val atNameStr: Parser[String] = alpha ~ rep(alpha | digit | '_') ^^ {
+ lazy val userNameStr: Parser[String] = alpha ~ rep(alpha | digit | '_') ^^ {
case first ~ more => first + more.mkString
}
- lazy val poolNameStr = atNameStr
+ lazy val poolNameStr = userNameStr
- lazy val atName: Parser[MsgInfo] = '@' ~> atNameStr ~ rep('.' ~> atNameStr)
^^ {
+ lazy val atName: Parser[MsgInfo] = '@' ~> userNameStr ~ rep('.' ~>
userNameStr) ^^ {
case name ~ domainlist =>
val nickName: String = name
val wholeName: String = (name :: domainlist).mkString(".")
@@ -71,6 +71,14 @@
}
}
+ lazy val resenderName: Parser[MsgInfo] = acceptCI("resent:") ~> userNameStr
^^ {
+ case name =>
+ User.find(By(User.nickname, name)) match {
+ case Full(u) => ResenderName(u)
+ case _ => MsgText("resent:"+name)
+ }
+ }
+
// def ip_schemepart = (accept("//") ~> login) ~> opt( '/' ~> urlpath)
lazy val login: Parser[String] = userPass ^^ {
@@ -245,6 +253,7 @@
lazy val testFactor: Parser[TestAction] = (notTest |
testAt | testRegex | testString |
testTag | testPool |
+ testResent |
testParen | testPercent |
testDates | testLogin |
testFollowed | testUnfollowed |
@@ -328,6 +337,14 @@
(poolName ^^ {
case PoolName(pool) => PoolAction(pool.id)
})
+
+ lazy val testResent: Parser[TestAction] =
+ (whiteSpace ~ acceptCI("resent:") ~> rep1(digit) <~ whiteSpace ^^ {case id
=> ResentAction(id.mkString.toLong)}) |
+ (resenderName ^^ {
+ case ResenderName(user) => ResentAction(user.id)
+ }) |
+ (whiteSpace ~ acceptCI("resent") ~ whiteSpace ^^^ ResentAction)
+
lazy val testAt: Parser[AtUserAction] =
(whiteSpace ~ '@' ~> rep1(digit) <~ whiteSpace ^^ {case dig =>
AtUserAction(dig.mkString.toLong)}) |
@@ -381,6 +398,7 @@
sealed trait MsgInfo
case class MsgText(text: String) extends MsgInfo
case class AtName(user: User) extends MsgInfo
+case class ResenderName(user: User) extends MsgInfo
case class HashTag(tag: Tag) extends MsgInfo
case class URL(url: UrlStore) extends MsgInfo
case class PoolName(pool: AccessPool) extends MsgInfo
Modified:
incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala
URL:
http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala?rev=795363&r1=795362&r2=795363&view=diff
==============================================================================
---
incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala
(original)
+++
incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Action.scala
Sat Jul 18 13:29:14 2009
@@ -95,6 +95,15 @@
case PoolAction(poolId) =>
(m, u, c, r) => m.pool.is == poolId
+
+ case ResentAction(userId) =>
+ (m, u, c, r) => r match {
+ case ResendReason(`userId`) => true
+ case _ => false
+ }
+
+ case ResentAction =>
+ (m, u, c, r) => r.isInstanceOf[ResendReason]
case SentToMeAction =>
SentToMe
@@ -301,6 +310,14 @@
def toStr = "pool:" + poolId
}
+case object ResentAction extends TestAction {
+ def toStr = "resent"
+}
+
+case class ResentAction(userId: Long) extends TestAction {
+ def toStr = "resent:" + userId
+}
+
case class RegexAction(re: String) extends TestAction {
def toStr = "/"+fix+"/"