diff --git a/framework/src/play/src/main/scala/play/api/libs/json/Reads.scala b/framework/src/play/src/main/scala/play/api/libs/json/Reads.scala index 0ff359ab1a3..6b1b8b10c9a 100644 --- a/framework/src/play/src/main/scala/play/api/libs/json/Reads.scala +++ b/framework/src/play/src/main/scala/play/api/libs/json/Reads.scala @@ -322,7 +322,7 @@ trait DefaultReads { implicit def OptionReads[T](implicit fmt: Reads[T]): Reads[Option[T]] = new Reads[Option[T]] { import scala.util.control.Exception._ - def reads(json: JsValue) = fmt.reads(json).fold( e => JsSuccess(None), v => JsSuccess(Some(v))) + def reads(json: JsValue) = fmt.reads(json).fold( e => JsError(e), v => JsSuccess(Some(v))) } /** diff --git a/framework/src/play/src/test/scala/play/api/libs/json/JsonValidSpec.scala b/framework/src/play/src/test/scala/play/api/libs/json/JsonValidSpec.scala index e691a95ce33..63a4f24f47f 100644 --- a/framework/src/play/src/test/scala/play/api/libs/json/JsonValidSpec.scala +++ b/framework/src/play/src/test/scala/play/api/libs/json/JsonValidSpec.scala @@ -24,6 +24,7 @@ object JsonValidSpec extends Specification { "invalidate wrong simple type conversion" in { JsString("string").validate[Long] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber"))))) + JsString("string").validate[Option[Long]] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber"))))) JsNumber(5).validate[String] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsstring"))))) JsBoolean(false).validate[Double] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber"))))) }