Skip to content

Commit 1e08e5d

Browse files
committed
deserialization for collections, null leads to empty collection
1 parent 66ff1d7 commit 1e08e5d

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

src/main/scala/tools/jackson/module/scala/deser/GenericFactoryDeserializerResolver.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ abstract class GenericFactoryDeserializerResolver[CC[_], CF[X[_]]](config: Scala
145145
bw.builder.result().asInstanceOf[Object]
146146
}
147147

148+
override def getNullValue(ctxt: DeserializationContext): Object = getEmptyValue(ctxt)
149+
148150
private def newBuilderWrapper(ctxt: DeserializationContext): BuilderWrapper[AnyRef] = {
149151
containerDeserializer.getValueInstantiator.createUsingDefault(ctxt).asInstanceOf[BuilderWrapper[AnyRef]]
150152
}

src/main/scala/tools/jackson/module/scala/deser/GenericMapFactoryDeserializerResolver.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ abstract class GenericMapFactoryDeserializerResolver[CC[K, V], CF[X[_, _]]](conf
166166
bw.builder.result().asInstanceOf[Object]
167167
}
168168

169+
override def getNullValue(ctxt: DeserializationContext): Object = getEmptyValue(ctxt)
170+
169171
private def newBuilderWrapper(ctxt: DeserializationContext): BuilderWrapper[AnyRef, AnyRef] = {
170172
containerDeserializer.getValueInstantiator.createUsingDefault(ctxt).asInstanceOf[BuilderWrapper[AnyRef, AnyRef]]
171173
}

src/test/scala/tools/jackson/module/scala/deser/CaseClassDeserializerTest.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,11 @@ class CaseClassDeserializerTest extends DeserializerTest {
199199
result shouldEqual ClassWithOnlyUnitField(())
200200
}
201201

202-
it should "support deserializing null input for list as empty list" ignore {
202+
it should "support deserializing null input for list as empty list" in {
203203
val input = """{}"""
204204
val result = deserialize(input, classOf[ListHolder[String]])
205-
result.list shouldBe null // ideally should be empty list, Scala users expect no nulls
205+
// this result has only happened since 3.0.0 - befpre result.list was null
206+
result.list shouldBe List.empty
206207
}
207208

208209
it should "support deserializing null input for list as empty list (JsonSetter annotation)" in {

0 commit comments

Comments
 (0)