@@ -49,20 +49,20 @@ object ULongSerializer : StdSerializer<ULong>(ULong::class.java) {
49
49
private fun Class <* >.getStaticJsonValueGetter (): Method ? = this .declaredMethods
50
50
.find { method -> Modifier .isStatic(method.modifiers) && method.annotations.any { it is JsonValue } }
51
51
52
- internal sealed class ValueClassSerializer <T : Any >(t : Class <T >) : StdSerializer<T>(t) {
53
- object Unbox : ValueClassSerializer<Any>(Any : :class.java) {
54
- override fun serialize (value : Any , gen : JsonGenerator , provider : SerializerProvider ) {
55
- val unboxed = value::class .java.getMethod(" unbox-impl" ).invoke(value)
56
-
57
- if (unboxed == null ) {
58
- provider.findNullValueSerializer(null ).serialize(unboxed, gen, provider)
59
- return
60
- }
52
+ object ValueClassUnboxSerializer : StdSerializer<Any>(Any : :class.java) {
53
+ override fun serialize (value : Any , gen : JsonGenerator , provider : SerializerProvider ) {
54
+ val unboxed = value::class .java.getMethod(" unbox-impl" ).invoke(value)
61
55
62
- provider.findValueSerializer(unboxed::class .java).serialize(unboxed, gen, provider)
56
+ if (unboxed == null ) {
57
+ provider.findNullValueSerializer(null ).serialize(null , gen, provider)
58
+ return
63
59
}
60
+
61
+ provider.findValueSerializer(unboxed::class .java).serialize(unboxed, gen, provider)
64
62
}
63
+ }
65
64
65
+ internal sealed class ValueClassSerializer <T : Any >(t : Class <T >) : StdSerializer<T>(t) {
66
66
class StaticJsonValue <T : Any >(
67
67
t : Class <T >, private val staticJsonValueGetter : Method
68
68
) : ValueClassSerializer<T>(t) {
@@ -83,9 +83,9 @@ internal sealed class ValueClassSerializer<T : Any>(t: Class<T>) : StdSerializer
83
83
// If create a function with a JsonValue in the value class,
84
84
// it will be compiled as a static method (= cannot be processed properly by Jackson),
85
85
// so use a ValueClassSerializer.StaticJsonValue to handle this.
86
- fun from (t : Class <* >): ValueClassSerializer <* > = t.getStaticJsonValueGetter()
86
+ fun from (t : Class <* >): StdSerializer <* > = t.getStaticJsonValueGetter()
87
87
?.let { StaticJsonValue (t, it) }
88
- ? : Unbox
88
+ ? : ValueClassUnboxSerializer
89
89
}
90
90
}
91
91
0 commit comments