Skip to content

Commit cb39e4e

Browse files
committed
Merge remote-tracking branch 'FasterXML/2.x' into 3.x
2 parents 56ab5af + a41d747 commit cb39e4e

File tree

6 files changed

+337
-4
lines changed

6 files changed

+337
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass
2+
3+
import org.junit.jupiter.api.Assertions
4+
import org.junit.jupiter.api.Nested
5+
import org.junit.jupiter.api.Test
6+
import tools.jackson.module.kotlin.defaultMapper
7+
import tools.jackson.module.kotlin.testPrettyWriter
8+
9+
class WithoutCustomSerializeMethodTest {
10+
@JvmInline
11+
value class Primitive(val v: Int)
12+
13+
@JvmInline
14+
value class NonNullObject(val v: String)
15+
16+
@JvmInline
17+
value class NullableObject(val v: String?)
18+
19+
@JvmInline
20+
value class NullablePrimitive(val v: Int?)
21+
22+
@JvmInline
23+
value class TwoUnitPrimitive(val v: Long)
24+
25+
private val writer = defaultMapper.testPrettyWriter()
26+
27+
@Nested
28+
inner class DirectSerializeTest {
29+
@Test
30+
fun primitive() {
31+
val result = writer.writeValueAsString(Primitive(1))
32+
Assertions.assertEquals("1", result)
33+
}
34+
35+
@Test
36+
fun nonNullObject() {
37+
val result = writer.writeValueAsString(NonNullObject("foo"))
38+
Assertions.assertEquals("\"foo\"", result)
39+
}
40+
41+
@Suppress("ClassName")
42+
@Nested
43+
inner class NullableObject_ {
44+
@Test
45+
fun value() {
46+
val result = writer.writeValueAsString(NullableObject("foo"))
47+
Assertions.assertEquals("\"foo\"", result)
48+
}
49+
50+
@Test
51+
fun nullValue() {
52+
val result = writer.writeValueAsString(NullableObject(null))
53+
Assertions.assertEquals("null", result)
54+
}
55+
}
56+
57+
@Suppress("ClassName")
58+
@Nested
59+
inner class NullablePrimitive_ {
60+
@Test
61+
fun value() {
62+
val result = writer.writeValueAsString(NullablePrimitive(1))
63+
Assertions.assertEquals("1", result)
64+
}
65+
66+
@Test
67+
fun nullValue() {
68+
val result = writer.writeValueAsString(NullablePrimitive(null))
69+
Assertions.assertEquals("null", result)
70+
}
71+
}
72+
73+
@Test
74+
fun twoUnitPrimitive() {
75+
val result = writer.writeValueAsString(TwoUnitPrimitive(1))
76+
Assertions.assertEquals("1", result)
77+
}
78+
}
79+
80+
data class Src(
81+
val pNn: Primitive,
82+
val pN: Primitive?,
83+
val nnoNn: NonNullObject,
84+
val nnoN: NonNullObject?,
85+
val noNn: NullableObject,
86+
val noN: NullableObject?,
87+
val npNn: NullablePrimitive,
88+
val npN: NullablePrimitive?,
89+
val tupNn: TwoUnitPrimitive,
90+
val tupN: TwoUnitPrimitive?,
91+
)
92+
93+
@Test
94+
fun withoutNull() {
95+
val src = Src(
96+
Primitive(1),
97+
Primitive(2),
98+
NonNullObject("foo"),
99+
NonNullObject("bar"),
100+
NullableObject("baz"),
101+
NullableObject("qux"),
102+
NullablePrimitive(1),
103+
NullablePrimitive(2),
104+
TwoUnitPrimitive(3),
105+
TwoUnitPrimitive(4),
106+
)
107+
val result = writer.writeValueAsString(src)
108+
109+
Assertions.assertEquals(
110+
"""
111+
{
112+
"pNn" : 1,
113+
"pN" : 2,
114+
"nnoNn" : "foo",
115+
"nnoN" : "bar",
116+
"noNn" : "baz",
117+
"noN" : "qux",
118+
"npNn" : 1,
119+
"npN" : 2,
120+
"tupNn" : 3,
121+
"tupN" : 4
122+
}
123+
""".trimIndent(),
124+
result,
125+
)
126+
}
127+
128+
@Test
129+
fun withNull() {
130+
val src = Src(
131+
Primitive(1),
132+
null,
133+
NonNullObject("foo"),
134+
null,
135+
NullableObject(null),
136+
null,
137+
NullablePrimitive(null),
138+
null,
139+
TwoUnitPrimitive(3),
140+
null,
141+
)
142+
val result = writer.writeValueAsString(src)
143+
144+
Assertions.assertEquals(
145+
"""
146+
{
147+
"pNn" : 1,
148+
"pN" : null,
149+
"nnoNn" : "foo",
150+
"nnoN" : null,
151+
"noNn" : null,
152+
"noN" : null,
153+
"npNn" : null,
154+
"npN" : null,
155+
"tupNn" : 3,
156+
"tupN" : null
157+
}
158+
""".trimIndent(),
159+
result,
160+
)
161+
}
162+
163+
@JvmInline
164+
value class HasToString(val value: Int) {
165+
override fun toString(): String = "Custom($value)"
166+
}
167+
168+
@Test
169+
fun toStringTest() {
170+
val result = writer.writeValueAsString(HasToString(42))
171+
Assertions.assertEquals("42", result)
172+
}
173+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer
2+
3+
import org.junit.jupiter.api.Assertions
4+
import org.junit.jupiter.api.Nested
5+
import org.junit.jupiter.api.Test
6+
import tools.jackson.databind.module.SimpleModule
7+
import tools.jackson.module.kotlin.jacksonMapperBuilder
8+
import tools.jackson.module.kotlin.testPrettyWriter
9+
10+
class SpecifiedForObjectMapperTest {
11+
companion object {
12+
val mapper = jacksonMapperBuilder().apply {
13+
val module = SimpleModule().apply {
14+
this.addSerializer(Primitive::class.java, Primitive.Serializer())
15+
this.addSerializer(NonNullObject::class.java, NonNullObject.Serializer())
16+
this.addSerializer(NullableObject::class.java, NullableObject.Serializer())
17+
this.addSerializer(NullablePrimitive::class.java, NullablePrimitive.Serializer())
18+
this.addSerializer(TwoUnitPrimitive::class.java, TwoUnitPrimitive.Serializer())
19+
}
20+
addModule(module)
21+
}.build()
22+
val writer = mapper.testPrettyWriter()
23+
}
24+
25+
@Nested
26+
inner class DirectSerialize {
27+
@Test
28+
fun primitive() {
29+
val result = writer.writeValueAsString(Primitive(1))
30+
Assertions.assertEquals("101", result)
31+
}
32+
33+
@Test
34+
fun nonNullObject() {
35+
val result = writer.writeValueAsString(NonNullObject("foo"))
36+
Assertions.assertEquals("\"foo-ser\"", result)
37+
}
38+
39+
@Suppress("ClassName")
40+
@Nested
41+
inner class NullableObject_ {
42+
@Test
43+
fun value() {
44+
val result = writer.writeValueAsString(NullableObject("foo"))
45+
Assertions.assertEquals("\"foo-ser\"", result)
46+
}
47+
48+
@Test
49+
fun nullValue() {
50+
val result = writer.writeValueAsString(NullableObject(null))
51+
Assertions.assertEquals("\"NULL\"", result)
52+
}
53+
}
54+
55+
@Suppress("ClassName")
56+
@Nested
57+
inner class NullablePrimitive_ {
58+
@Test
59+
fun value() {
60+
val result = writer.writeValueAsString(NullablePrimitive(1))
61+
Assertions.assertEquals("101", result)
62+
}
63+
64+
@Test
65+
fun nullValue() {
66+
val result = writer.writeValueAsString(NullablePrimitive(null))
67+
Assertions.assertEquals("\"NULL\"", result)
68+
}
69+
}
70+
71+
@Test
72+
fun twoUnitPrimitive() {
73+
val result = writer.writeValueAsString(TwoUnitPrimitive(1))
74+
Assertions.assertEquals("101", result)
75+
}
76+
}
77+
78+
data class Src(
79+
val pNn: Primitive,
80+
val pN: Primitive?,
81+
val nnoNn: NonNullObject,
82+
val nnoN: NonNullObject?,
83+
val noNn: NullableObject,
84+
val noN: NullableObject?,
85+
val npNn: NullablePrimitive,
86+
val npN: NullablePrimitive?,
87+
val tupNn: TwoUnitPrimitive,
88+
val tupN: TwoUnitPrimitive?,
89+
)
90+
91+
@Test
92+
fun nonNull() {
93+
val src = Src(
94+
Primitive(1),
95+
Primitive(2),
96+
NonNullObject("foo"),
97+
NonNullObject("bar"),
98+
NullableObject("baz"),
99+
NullableObject("qux"),
100+
NullablePrimitive(3),
101+
NullablePrimitive(4),
102+
TwoUnitPrimitive(5),
103+
TwoUnitPrimitive(6),
104+
)
105+
val result = writer.writeValueAsString(src)
106+
107+
Assertions.assertEquals(
108+
"""
109+
{
110+
"pNn" : 101,
111+
"pN" : 102,
112+
"nnoNn" : "foo-ser",
113+
"nnoN" : "bar-ser",
114+
"noNn" : "baz-ser",
115+
"noN" : "qux-ser",
116+
"npNn" : 103,
117+
"npN" : 104,
118+
"tupNn" : 105,
119+
"tupN" : 106
120+
}
121+
""".trimIndent(),
122+
result,
123+
)
124+
}
125+
126+
@Test
127+
fun withNull() {
128+
val src = Src(
129+
Primitive(1),
130+
null,
131+
NonNullObject("foo"),
132+
null,
133+
NullableObject(null),
134+
null,
135+
NullablePrimitive(null),
136+
null,
137+
TwoUnitPrimitive(5),
138+
null,
139+
)
140+
val result = writer.writeValueAsString(src)
141+
142+
Assertions.assertEquals(
143+
"""
144+
{
145+
"pNn" : 101,
146+
"pN" : null,
147+
"nnoNn" : "foo-ser",
148+
"nnoN" : null,
149+
"noNn" : "NULL",
150+
"noN" : null,
151+
"npNn" : "NULL",
152+
"npN" : null,
153+
"tupNn" : 105,
154+
"tupN" : null
155+
}
156+
""".trimIndent(),
157+
result,
158+
)
159+
}
160+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullableObject.byAnnotation
1+
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullableObject
22

33
import tools.jackson.databind.annotation.JsonSerialize
44
import tools.jackson.module.kotlin.jacksonObjectMapper
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullableObject.byAnnotation
1+
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullableObject
22

33
import tools.jackson.databind.annotation.JsonSerialize
44
import tools.jackson.module.kotlin.jacksonObjectMapper
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullablePrimitive.byAnnotation
1+
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullablePrimitive
22

33
import tools.jackson.databind.annotation.JsonSerialize
44
import tools.jackson.module.kotlin.jacksonObjectMapper
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullablePrimitive.byAnnotation
1+
package tools.jackson.module.kotlin.kogeraIntegration.ser.valueClass.serializer.byAnnotation.nullablePrimitive
22

33
import tools.jackson.databind.annotation.JsonSerialize
44
import tools.jackson.module.kotlin.jacksonObjectMapper

0 commit comments

Comments
 (0)