From 8c62fa39788f8423b5785e5a31bf504d225e774b Mon Sep 17 00:00:00 2001 From: hongwei Date: Mon, 20 Feb 2023 22:04:49 +0100 Subject: [PATCH] bugfix/added the JavaMathBigDecimalSerializer --- .../commons/util/JsonSerializers.scala | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/util/JsonSerializers.scala b/obp-commons/src/main/scala/com/openbankproject/commons/util/JsonSerializers.scala index c72ffe18c..7b0afb9b9 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/util/JsonSerializers.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/util/JsonSerializers.scala @@ -42,7 +42,7 @@ object JsonSerializers { BigDecimalSerializer :: StringDeserializer :: FiledRenameSerializer :: EnumValueSerializer :: JsonAbleSerializer :: ListResultSerializer.asInstanceOf[Serializer[_]] :: // here must do class cast, or it cause compile error, looks like a bug of scala. - MapperSerializer :: Nil + MapperSerializer :: JavaMathBigDecimalSerializer :: Nil implicit val commonFormats = CustomFormats ++ serializers @@ -130,6 +130,20 @@ object BigDecimalSerializer extends Serializer[BigDecimal] { case x: BigDecimal => JString(x.toString()) } } +object JavaMathBigDecimalSerializer extends Serializer[java.math.BigDecimal] { + private val IntervalClass = classOf[java.math.BigDecimal] + + override def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), java.math.BigDecimal] = { + case (TypeInfo(IntervalClass, _), json) => json match { + case JString(s) => BigDecimal(s).bigDecimal + case x => throw new MappingException("Can't convert " + x + " to BigDecimal") + } + } + + override def serialize(implicit format: Formats): PartialFunction[Any, JValue] = { + case x: java.math.BigDecimal => JString(x.toString()) + } +} object StringDeserializer extends ObpDeSerializer[String] { private val IntervalClass = classOf[String]