@@ -7,6 +7,7 @@ import com.fasterxml.jackson.module.kotlin.KotlinFeature.NullToEmptyCollection
7
7
import com.fasterxml.jackson.module.kotlin.KotlinFeature.NullToEmptyMap
8
8
import com.fasterxml.jackson.module.kotlin.KotlinFeature.SingletonSupport
9
9
import com.fasterxml.jackson.module.kotlin.KotlinFeature.StrictNullChecks
10
+ import com.fasterxml.jackson.module.kotlin.KotlinFeature.NewStrictNullChecks
10
11
import com.fasterxml.jackson.module.kotlin.KotlinFeature.KotlinPropertyNameAsImplicitName
11
12
import com.fasterxml.jackson.module.kotlin.KotlinFeature.UseJavaDurationConversion
12
13
import java.util.*
@@ -42,9 +43,10 @@ class KotlinModule private constructor(
42
43
val nullToEmptyMap : Boolean = NullToEmptyMap .enabledByDefault,
43
44
val nullIsSameAsDefault : Boolean = NullIsSameAsDefault .enabledByDefault,
44
45
val singletonSupport : Boolean = SingletonSupport .enabledByDefault,
45
- val strictNullChecks : Boolean = StrictNullChecks .enabledByDefault,
46
+ strictNullChecks : Boolean = StrictNullChecks .enabledByDefault,
46
47
val kotlinPropertyNameAsImplicitName : Boolean = KotlinPropertyNameAsImplicitName .enabledByDefault,
47
48
val useJavaDurationConversion : Boolean = UseJavaDurationConversion .enabledByDefault,
49
+ private val newStrictNullChecks : Boolean = NewStrictNullChecks .enabledByDefault,
48
50
) : SimpleModule(KotlinModule : :class.java.name, PackageVersion .VERSION ) {
49
51
/*
50
52
* Prior to 2.18, an older Enum called SingletonSupport was used to manage feature.
@@ -64,6 +66,19 @@ class KotlinModule private constructor(
64
66
)
65
67
val enabledSingletonSupport: Boolean get() = singletonSupport
66
68
69
+ private val oldStrictNullChecks: Boolean = strictNullChecks
70
+
71
+ // To reduce the amount of destructive changes, no properties will be added to the public.
72
+ val strictNullChecks: Boolean = if (strictNullChecks) {
73
+ if (newStrictNullChecks) {
74
+ throw IllegalArgumentException (" Enabling both StrictNullChecks and NewStrictNullChecks is not permitted." )
75
+ }
76
+
77
+ true
78
+ } else {
79
+ newStrictNullChecks
80
+ }
81
+
67
82
companion object {
68
83
// Increment when option is added
69
84
private const val serialVersionUID = 3L
@@ -84,6 +99,7 @@ class KotlinModule private constructor(
84
99
builder.isEnabled(StrictNullChecks ),
85
100
builder.isEnabled(KotlinPropertyNameAsImplicitName ),
86
101
builder.isEnabled(UseJavaDurationConversion ),
102
+ builder.isEnabled(NewStrictNullChecks ),
87
103
)
88
104
89
105
override fun setupModule (context : SetupContext ) {
@@ -95,7 +111,7 @@ class KotlinModule private constructor(
95
111
96
112
val cache = ReflectionCache (reflectionCacheSize)
97
113
98
- context.addValueInstantiators(KotlinInstantiators (cache, nullToEmptyCollection, nullToEmptyMap, nullIsSameAsDefault, strictNullChecks ))
114
+ context.addValueInstantiators(KotlinInstantiators (cache, nullToEmptyCollection, nullToEmptyMap, nullIsSameAsDefault, oldStrictNullChecks ))
99
115
100
116
if (singletonSupport) {
101
117
context.addBeanDeserializerModifier(KotlinBeanDeserializerModifier )
@@ -109,7 +125,9 @@ class KotlinModule private constructor(
109
125
nullIsSameAsDefault,
110
126
useJavaDurationConversion
111
127
))
112
- context.appendAnnotationIntrospector(KotlinNamesAnnotationIntrospector (cache, kotlinPropertyNameAsImplicitName))
128
+ context.appendAnnotationIntrospector(
129
+ KotlinNamesAnnotationIntrospector (cache, newStrictNullChecks, kotlinPropertyNameAsImplicitName)
130
+ )
113
131
114
132
context.addDeserializers(KotlinDeserializers (cache, useJavaDurationConversion))
115
133
context.addKeyDeserializers(KotlinKeyDeserializers )
0 commit comments