Skip to content

Commit 2d3714c

Browse files
committed
Merge remote-tracking branch 'FasterXML/2.16' into 2.17
2 parents 16046f6 + 41dd67c commit 2d3714c

File tree

6 files changed

+43
-0
lines changed

6 files changed

+43
-0
lines changed

release-notes/CREDITS-2.x

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ WrongWrong (@k163377)
2121
* #732: SequenceSerializer removed.
2222
* #727: Fixed overriding findCreatorAnnotation instead of hasCreatorAnnotation
2323

24+
# 2.16.1 (not yet released)
25+
26+
WrongWrong (@k163377)
27+
* #733: Fix problem with Serializable objects not implementing readResolve
28+
2429
# 2.16.0
2530

2631
kkurczewski

release-notes/VERSION-2.x

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ Co-maintainers:
2121
#732: SequenceSerializer removed.
2222
#727: Fixed overriding findCreatorAnnotation instead of hasCreatorAnnotation.
2323

24+
2.16.1 (not yet released)
25+
26+
#733: Fix problem with Serializable objects not implementing readResolve.
27+
2428
2.16.0 (15-Nov-2023)
2529

2630
#707: If JsonSetter(nulls = Nulls.SKIP) is specified, the default argument is now used when null.

src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinDeserializers.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@ import com.fasterxml.jackson.databind.deser.std.StdDeserializer
1313
import kotlin.time.Duration as KotlinDuration
1414

1515
object SequenceDeserializer : StdDeserializer<Sequence<*>>(Sequence::class.java) {
16+
private fun readResolve(): Any = SequenceDeserializer
17+
1618
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Sequence<*> {
1719
return ctxt.readValue(p, List::class.java).asSequence()
1820
}
1921
}
2022

2123
object RegexDeserializer : StdDeserializer<Regex>(Regex::class.java) {
24+
private fun readResolve(): Any = RegexDeserializer
25+
2226
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Regex {
2327
val node = ctxt.readTree(p)
2428

@@ -43,6 +47,8 @@ object RegexDeserializer : StdDeserializer<Regex>(Regex::class.java) {
4347
}
4448

4549
object UByteDeserializer : StdDeserializer<UByte>(UByte::class.java) {
50+
private fun readResolve(): Any = UByteDeserializer
51+
4652
override fun deserialize(p: JsonParser, ctxt: DeserializationContext) =
4753
p.shortValue.asUByte() ?: throw InputCoercionException(
4854
p,
@@ -53,6 +59,8 @@ object UByteDeserializer : StdDeserializer<UByte>(UByte::class.java) {
5359
}
5460

5561
object UShortDeserializer : StdDeserializer<UShort>(UShort::class.java) {
62+
private fun readResolve(): Any = UShortDeserializer
63+
5664
override fun deserialize(p: JsonParser, ctxt: DeserializationContext) =
5765
p.intValue.asUShort() ?: throw InputCoercionException(
5866
p,
@@ -63,6 +71,8 @@ object UShortDeserializer : StdDeserializer<UShort>(UShort::class.java) {
6371
}
6472

6573
object UIntDeserializer : StdDeserializer<UInt>(UInt::class.java) {
74+
private fun readResolve(): Any = UIntDeserializer
75+
6676
override fun deserialize(p: JsonParser, ctxt: DeserializationContext) =
6777
p.longValue.asUInt() ?: throw InputCoercionException(
6878
p,
@@ -73,6 +83,8 @@ object UIntDeserializer : StdDeserializer<UInt>(UInt::class.java) {
7383
}
7484

7585
object ULongDeserializer : StdDeserializer<ULong>(ULong::class.java) {
86+
private fun readResolve(): Any = ULongDeserializer
87+
7688
override fun deserialize(p: JsonParser, ctxt: DeserializationContext) =
7789
p.bigIntegerValue.asULong() ?: throw InputCoercionException(
7890
p,

src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinKeyDeserializers.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializers
1010
// If StdKeyDeserializer is modified, need to modify this too.
1111

1212
internal object UByteKeyDeserializer : StdKeyDeserializer(TYPE_SHORT, UByte::class.java) {
13+
private fun readResolve(): Any = UByteKeyDeserializer
14+
1315
override fun deserializeKey(key: String?, ctxt: DeserializationContext): UByte? = super.deserializeKey(key, ctxt)
1416
?.let {
1517
(it as Short).asUByte() ?: throw InputCoercionException(
@@ -22,6 +24,8 @@ internal object UByteKeyDeserializer : StdKeyDeserializer(TYPE_SHORT, UByte::cla
2224
}
2325

2426
internal object UShortKeyDeserializer : StdKeyDeserializer(TYPE_INT, UShort::class.java) {
27+
private fun readResolve(): Any = UShortKeyDeserializer
28+
2529
override fun deserializeKey(key: String?, ctxt: DeserializationContext): UShort? = super.deserializeKey(key, ctxt)
2630
?.let {
2731
(it as Int).asUShort() ?: throw InputCoercionException(
@@ -34,6 +38,8 @@ internal object UShortKeyDeserializer : StdKeyDeserializer(TYPE_INT, UShort::cla
3438
}
3539

3640
internal object UIntKeyDeserializer : StdKeyDeserializer(TYPE_LONG, UInt::class.java) {
41+
private fun readResolve(): Any = UIntKeyDeserializer
42+
3743
override fun deserializeKey(key: String?, ctxt: DeserializationContext): UInt? = super.deserializeKey(key, ctxt)
3844
?.let {
3945
(it as Long).asUInt() ?: throw InputCoercionException(
@@ -47,6 +53,8 @@ internal object UIntKeyDeserializer : StdKeyDeserializer(TYPE_LONG, UInt::class.
4753

4854
// kind parameter is dummy.
4955
internal object ULongKeyDeserializer : StdKeyDeserializer(TYPE_LONG, ULong::class.java) {
56+
private fun readResolve(): Any = ULongKeyDeserializer
57+
5058
override fun deserializeKey(key: String?, ctxt: DeserializationContext): ULong? = key?.let {
5159
it.toBigInteger().asULong() ?: throw InputCoercionException(
5260
null,
@@ -58,6 +66,8 @@ internal object ULongKeyDeserializer : StdKeyDeserializer(TYPE_LONG, ULong::clas
5866
}
5967

6068
internal object KotlinKeyDeserializers : StdKeyDeserializers() {
69+
private fun readResolve(): Any = KotlinKeyDeserializers
70+
6171
override fun findKeyDeserializer(
6272
type: JavaType,
6373
config: DeserializationConfig?,

src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinKeySerializers.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import java.lang.reflect.Method
1313
import java.lang.reflect.Modifier
1414

1515
internal object ValueClassUnboxKeySerializer : StdSerializer<Any>(Any::class.java) {
16+
private fun readResolve(): Any = ValueClassUnboxKeySerializer
17+
1618
override fun serialize(value: Any, gen: JsonGenerator, provider: SerializerProvider) {
1719
val method = value::class.java.getMethod("unbox-impl")
1820
val unboxed = method.invoke(value)

src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinSerializers.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,29 @@ import java.lang.reflect.Modifier
1414
import java.math.BigInteger
1515

1616
object UByteSerializer : StdSerializer<UByte>(UByte::class.java) {
17+
private fun readResolve(): Any = UByteSerializer
18+
1719
override fun serialize(value: UByte, gen: JsonGenerator, provider: SerializerProvider) =
1820
gen.writeNumber(value.toShort())
1921
}
2022

2123
object UShortSerializer : StdSerializer<UShort>(UShort::class.java) {
24+
private fun readResolve(): Any = UShortSerializer
25+
2226
override fun serialize(value: UShort, gen: JsonGenerator, provider: SerializerProvider) =
2327
gen.writeNumber(value.toInt())
2428
}
2529

2630
object UIntSerializer : StdSerializer<UInt>(UInt::class.java) {
31+
private fun readResolve(): Any = UIntSerializer
32+
2733
override fun serialize(value: UInt, gen: JsonGenerator, provider: SerializerProvider) =
2834
gen.writeNumber(value.toLong())
2935
}
3036

3137
object ULongSerializer : StdSerializer<ULong>(ULong::class.java) {
38+
private fun readResolve(): Any = ULongSerializer
39+
3240
override fun serialize(value: ULong, gen: JsonGenerator, provider: SerializerProvider) {
3341
val longValue = value.toLong()
3442
when {
@@ -44,6 +52,8 @@ private fun Class<*>.getStaticJsonValueGetter(): Method? = this.declaredMethods.
4452
}
4553

4654
object ValueClassUnboxSerializer : StdSerializer<Any>(Any::class.java) {
55+
private fun readResolve(): Any = ValueClassUnboxSerializer
56+
4757
override fun serialize(value: Any, gen: JsonGenerator, provider: SerializerProvider) {
4858
val unboxed = value::class.java.getMethod("unbox-impl").invoke(value)
4959

0 commit comments

Comments
 (0)