From a0ecd85b60304eaee80325a0c3c66e15afd9e4a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Cio=C5=82ecki?= Date: Tue, 26 Nov 2024 14:07:22 +0100 Subject: [PATCH] Improvemetns to abr's comment --- .../engine/util/json/ToJsonEncoder.scala | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/utils/utils/src/main/scala/pl/touk/nussknacker/engine/util/json/ToJsonEncoder.scala b/utils/utils/src/main/scala/pl/touk/nussknacker/engine/util/json/ToJsonEncoder.scala index d851473c449..649c777e593 100644 --- a/utils/utils/src/main/scala/pl/touk/nussknacker/engine/util/json/ToJsonEncoder.scala +++ b/utils/utils/src/main/scala/pl/touk/nussknacker/engine/util/json/ToJsonEncoder.scala @@ -65,15 +65,14 @@ case class ToJsonEncoder( case a: OffsetDateTime => Encoder[OffsetDateTime].apply(a) case a: UUID => safeString(a.toString) case a: DisplayJson => a.asJson - case a: scala.collection.immutable.ListMap[_, _] => encodeListMap(a) - case a: scala.collection.Map[_, _] => encodeMap(a.toMap) - case a: java.util.Map[_, _] => encodeMap(a.asScala.toMap) - case a: Iterable[_] => fromValues(a.map(encode)) - case a: Enum[_] => safeString(a.toString) - case a: java.util.Collection[_] => fromValues(a.asScala.map(encode)) - case a: Array[_] => fromValues(a.map(encode)) - case _ if !failOnUnknown => safeString(any.toString) - case a => throw new IllegalArgumentException(s"Invalid type: ${a.getClass}") + case a: scala.collection.Map[_, _] => encodeMap(a.toMap) + case a: java.util.Map[_, _] => encodeMap(a.asScala.toMap) + case a: Iterable[_] => fromValues(a.map(encode)) + case a: Enum[_] => safeString(a.toString) + case a: java.util.Collection[_] => fromValues(a.asScala.map(encode)) + case a: Array[_] => fromValues(a.map(encode)) + case _ if !failOnUnknown => safeString(any.toString) + case a => throw new IllegalArgumentException(s"Invalid type: ${a.getClass}") } ) @@ -83,20 +82,12 @@ case class ToJsonEncoder( case None => Null } - private def encodeListMap(value: scala.collection.immutable.ListMap[_, _]): Json = { - val mapWithStringKeys = value.view.map { case (k, v) => - k.toString -> encode(v) - } - - fromFields(mapWithStringKeys) - } - // TODO: make encoder aware of NU Types to encode things like multiset differently. Right now its handled by calling // toString on keys. private def encodeMap(map: Map[_, _]) = { val mapWithStringKeys = map.view.map { case (k, v) => k.toString -> encode(v) - }.toMap + } fromFields(mapWithStringKeys) }