@@ -7,6 +7,7 @@ import com.fasterxml.jackson.module.kotlin.KotlinFeature.NullToEmptyCollection
77import com.fasterxml.jackson.module.kotlin.KotlinFeature.NullToEmptyMap
88import com.fasterxml.jackson.module.kotlin.KotlinFeature.SingletonSupport
99import com.fasterxml.jackson.module.kotlin.KotlinFeature.StrictNullChecks
10+ import com.fasterxml.jackson.module.kotlin.KotlinFeature.NewStrictNullChecks
1011import com.fasterxml.jackson.module.kotlin.KotlinFeature.KotlinPropertyNameAsImplicitName
1112import com.fasterxml.jackson.module.kotlin.KotlinFeature.UseJavaDurationConversion
1213import java.util.*
@@ -42,9 +43,10 @@ class KotlinModule private constructor(
4243 val nullToEmptyMap : Boolean = NullToEmptyMap .enabledByDefault,
4344 val nullIsSameAsDefault : Boolean = NullIsSameAsDefault .enabledByDefault,
4445 val singletonSupport : Boolean = SingletonSupport .enabledByDefault,
45- val strictNullChecks : Boolean = StrictNullChecks .enabledByDefault,
46+ strictNullChecks : Boolean = StrictNullChecks .enabledByDefault,
4647 val kotlinPropertyNameAsImplicitName : Boolean = KotlinPropertyNameAsImplicitName .enabledByDefault,
4748 val useJavaDurationConversion : Boolean = UseJavaDurationConversion .enabledByDefault,
49+ private val newStrictNullChecks : Boolean = NewStrictNullChecks .enabledByDefault,
4850) : SimpleModule(KotlinModule : :class.java.name, PackageVersion .VERSION ) {
4951 /*
5052 * Prior to 2.18, an older Enum called SingletonSupport was used to manage feature.
@@ -64,6 +66,19 @@ class KotlinModule private constructor(
6466 )
6567 val enabledSingletonSupport: Boolean get() = singletonSupport
6668
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+
6782 companion object {
6883 // Increment when option is added
6984 private const val serialVersionUID = 3L
@@ -84,6 +99,7 @@ class KotlinModule private constructor(
8499 builder.isEnabled(StrictNullChecks ),
85100 builder.isEnabled(KotlinPropertyNameAsImplicitName ),
86101 builder.isEnabled(UseJavaDurationConversion ),
102+ builder.isEnabled(NewStrictNullChecks ),
87103 )
88104
89105 override fun setupModule (context : SetupContext ) {
@@ -95,7 +111,7 @@ class KotlinModule private constructor(
95111
96112 val cache = ReflectionCache (reflectionCacheSize)
97113
98- context.addValueInstantiators(KotlinInstantiators (cache, nullToEmptyCollection, nullToEmptyMap, nullIsSameAsDefault, strictNullChecks ))
114+ context.addValueInstantiators(KotlinInstantiators (cache, nullToEmptyCollection, nullToEmptyMap, nullIsSameAsDefault, oldStrictNullChecks ))
99115
100116 if (singletonSupport) {
101117 context.addBeanDeserializerModifier(KotlinBeanDeserializerModifier )
0 commit comments