Skip to content

Commit 26f72f7

Browse files
authored
include ScalaObjectDeserializerModule in DefaultScalaModule (#647)
1 parent 88e99a3 commit 26f72f7

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ val mapper = JsonMapper.builder()
7272

7373
One Scala module that isn't part of `DefaultScalaModule` is `ScalaObjectDeserializerModule`. This module is used to
7474
ensure that deserialization to a Scala object does not create a new instance of the object.
75-
This latter module is not yet included in `DefaultScalaModule` for backward compatibility reasons.
76-
It is included in the v3.0.0, which is still under development.
75+
This latter module is not yet included in `DefaultScalaModule` but will be included in v2.16.0.
76+
It is already included in v3.0.0, which is still under development.
7777

7878
## DeserializationFeature.FAIL_ON_NULL_CREATOR_PROPERTIES
7979

src/main/scala/com/fasterxml/jackson/module/scala/DefaultScalaModule.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.fasterxml.jackson.module.scala
22

3-
import com.fasterxml.jackson.module.scala.deser.{ScalaNumberDeserializersModule, UntypedObjectDeserializerModule}
3+
import com.fasterxml.jackson.module.scala.deser.{
4+
ScalaNumberDeserializersModule,
5+
ScalaObjectDeserializerModule,
6+
UntypedObjectDeserializerModule
7+
}
48
import com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospectorModule
59

610
/**
@@ -25,6 +29,7 @@ class DefaultScalaModule
2529
with MapModule
2630
with SetModule
2731
with ScalaNumberDeserializersModule
32+
with ScalaObjectDeserializerModule
2833
with ScalaAnnotationIntrospectorModule
2934
with UntypedObjectDeserializerModule
3035
with EitherModule

src/test/scala/com/fasterxml/jackson/module/scala/deser/CaseObjectDeserializerTest.scala

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.{JsonAutoDetect, PropertyAccessor}
44
import com.fasterxml.jackson.databind.json.JsonMapper
55
import com.fasterxml.jackson.module.scala.{ClassTagExtensions, DefaultScalaModule}
66
import com.fasterxml.jackson.module.scala.deser.CaseObjectDeserializerTest.{Foo, TestObject}
7+
import com.fasterxml.jackson.module.scala.introspect.ScalaAnnotationIntrospectorModule
78

89
object CaseObjectDeserializerTest {
910
case object TestObject
@@ -13,12 +14,11 @@ object CaseObjectDeserializerTest {
1314
}
1415
}
1516

16-
//see also CaseObjectScala2DeserializerTest
1717
class CaseObjectDeserializerTest extends DeserializerTest {
1818
def module = DefaultScalaModule
1919

20-
"An ObjectMapper with DefaultScalaModule and ScalaObjectDeserializerModule" should "deserialize a case object and not create a new instance" in {
21-
val mapper = JsonMapper.builder().addModule(DefaultScalaModule).addModule(ScalaObjectDeserializerModule).build()
20+
"An ObjectMapper with DefaultScalaModule" should "deserialize a case object and not create a new instance" in {
21+
val mapper = JsonMapper.builder().addModule(DefaultScalaModule).build()
2222
val original = TestObject
2323
val json = mapper.writeValueAsString(original)
2424
val deserialized = mapper.readValue(json, TestObject.getClass)
@@ -36,7 +36,6 @@ class CaseObjectDeserializerTest extends DeserializerTest {
3636
it should "deserialize Foo and not create a new instance (visibility settings)" in {
3737
val mapper = JsonMapper.builder()
3838
.addModule(DefaultScalaModule)
39-
.addModule(ScalaObjectDeserializerModule)
4039
.visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
4140
.visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
4241
.build()
@@ -46,19 +45,18 @@ class CaseObjectDeserializerTest extends DeserializerTest {
4645
assert(deserialized == original)
4746
}
4847

49-
"An ObjectMapper with ClassTagExtensions and ScalaObjectDeserializerModule" should "deserialize a case object and not create a new instance" in {
48+
"An ObjectMapper with ClassTagExtensions and DefaultScalaModule" should "deserialize a case object and not create a new instance" in {
5049
val mapper = JsonMapper.builder()
5150
.addModule(DefaultScalaModule)
52-
.addModule(ScalaObjectDeserializerModule)
5351
.build() :: ClassTagExtensions
5452
val original = TestObject
5553
val json = mapper.writeValueAsString(original)
5654
val deserialized = mapper.readValue[TestObject.type](json)
5755
assert(deserialized == original)
5856
}
5957

60-
"An ObjectMapper with DefaultScalaModule but not ScalaObjectDeserializerModule" should "deserialize a case object but create a new instance" in {
61-
val mapper = JsonMapper.builder().addModule(DefaultScalaModule).build()
58+
"An ObjectMapper without ScalaObjectDeserializerModule" should "deserialize a case object but create a new instance" in {
59+
val mapper = JsonMapper.builder().addModule(ScalaAnnotationIntrospectorModule).build()
6260
val original = TestObject
6361
val json = mapper.writeValueAsString(original)
6462
val deserialized = mapper.readValue(json, TestObject.getClass)

0 commit comments

Comments
 (0)