diff --git a/core/common/src/main/scala/net/liftweb/common/Box.scala b/core/common/src/main/scala/net/liftweb/common/Box.scala index 05ceada361..db32f5d7dc 100644 --- a/core/common/src/main/scala/net/liftweb/common/Box.scala +++ b/core/common/src/main/scala/net/liftweb/common/Box.scala @@ -1037,6 +1037,9 @@ final class ParamFailure[T](override val msg: String, case null => 0 case x => x.hashCode() }) + + override def ~>[T](errorCode: => T): ParamFailure[T] = + ParamFailure(msg, exception, Full(this), errorCode) } /** diff --git a/core/common/src/test/scala/net/liftweb/common/BoxSpec.scala b/core/common/src/test/scala/net/liftweb/common/BoxSpec.scala index 3ea237dc0a..b79d8aa9dd 100644 --- a/core/common/src/test/scala/net/liftweb/common/BoxSpec.scala +++ b/core/common/src/test/scala/net/liftweb/common/BoxSpec.scala @@ -301,6 +301,9 @@ class BoxSpec extends Specification with ScalaCheck with BoxGenerator { Full(new Exception("broken")), Full(Failure("nested cause", Empty, Empty))).chain must_== Full(Failure("nested cause", Empty, Empty)) } + "be converted to a ParamFailure" in { + Failure("hi mom") ~> 404 must_== ParamFailure("hi mom", Empty, Empty, 404) + } } "A Failure is an Empty Box which" should { @@ -322,6 +325,15 @@ class BoxSpec extends Specification with ScalaCheck with BoxGenerator { } } + "A ParamFailure is a failure which" should { + "appear in the chain when ~> is invoked on it" in { + Failure("Apple") ~> 404 ~> "apple" must_== + ParamFailure("Apple", Empty, Full( + ParamFailure("Apple", Empty, Empty, 404) + ), "apple") + } + } + "A Box equals method" should { "return true with comparing two identical Box messages" in check {