@@ -3,27 +3,30 @@ package com.fasterxml.jackson.module.kotlin.test
3
3
import com.fasterxml.jackson.annotation.JsonCreator
4
4
import com.fasterxml.jackson.annotation.JsonFormat
5
5
import com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING
6
+ import com.fasterxml.jackson.databind.ObjectMapper
6
7
import com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
7
8
import com.fasterxml.jackson.databind.SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS
8
9
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
9
10
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
10
11
import com.fasterxml.jackson.module.kotlin.JavaToKotlinDurationConverter
11
- import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
12
+ import com.fasterxml.jackson.module.kotlin.KotlinFeature.UseJavaDurationConversion
13
+ import com.fasterxml.jackson.module.kotlin.KotlinModule
14
+ import com.fasterxml.jackson.module.kotlin.kotlinModule
12
15
import com.fasterxml.jackson.module.kotlin.readValue
13
16
import org.junit.Test
14
17
import java.time.Instant
15
18
import kotlin.test.assertContentEquals
16
19
import kotlin.test.assertEquals
17
- import kotlin.time.Duration as KotlinDuration
18
- import java.time.Duration as JavaDuration
19
20
import kotlin.time.Duration.Companion.hours
21
+ import java.time.Duration as JavaDuration
22
+ import kotlin.time.Duration as KotlinDuration
20
23
21
24
class DurationTests {
25
+ private val objectMapper = jacksonObjectMapper { enable(UseJavaDurationConversion ) }
26
+
22
27
@Test
23
28
fun `should serialize Kotlin duration using Java time module` () {
24
- val mapper = jacksonObjectMapper()
25
- .registerModule(JavaTimeModule ())
26
- .disable(WRITE_DURATIONS_AS_TIMESTAMPS )
29
+ val mapper = objectMapper.registerModule(JavaTimeModule ()).disable(WRITE_DURATIONS_AS_TIMESTAMPS )
27
30
28
31
val result = mapper.writeValueAsString(1 .hours)
29
32
@@ -32,7 +35,7 @@ class DurationTests {
32
35
33
36
@Test
34
37
fun `should deserialize Kotlin duration` () {
35
- val mapper = jacksonObjectMapper() .registerModule(JavaTimeModule ())
38
+ val mapper = objectMapper .registerModule(JavaTimeModule ())
36
39
37
40
val result = mapper.readValue<KotlinDuration >(" \" PT1H\" " )
38
41
@@ -41,7 +44,7 @@ class DurationTests {
41
44
42
45
@Test
43
46
fun `should serialize Kotlin duration inside list using Java time module` () {
44
- val mapper = jacksonObjectMapper()
47
+ val mapper = objectMapper
45
48
.registerModule(JavaTimeModule ())
46
49
.disable(WRITE_DURATIONS_AS_TIMESTAMPS )
47
50
@@ -52,7 +55,7 @@ class DurationTests {
52
55
53
56
@Test
54
57
fun `should deserialize Kotlin duration inside list` () {
55
- val mapper = jacksonObjectMapper() .registerModule(JavaTimeModule ())
58
+ val mapper = objectMapper .registerModule(JavaTimeModule ())
56
59
57
60
val result = mapper.readValue<List <KotlinDuration >>(""" ["PT1H","PT2H","PT3H"]""" )
58
61
@@ -61,7 +64,7 @@ class DurationTests {
61
64
62
65
@Test
63
66
fun `should serialize Kotlin duration inside map using Java time module` () {
64
- val mapper = jacksonObjectMapper()
67
+ val mapper = objectMapper
65
68
.registerModule(JavaTimeModule ())
66
69
.disable(WRITE_DURATIONS_AS_TIMESTAMPS )
67
70
@@ -76,7 +79,7 @@ class DurationTests {
76
79
77
80
@Test
78
81
fun `should deserialize Kotlin duration inside map` () {
79
- val mapper = jacksonObjectMapper() .registerModule(JavaTimeModule ())
82
+ val mapper = objectMapper .registerModule(JavaTimeModule ())
80
83
81
84
val result = mapper.readValue<Map <String , KotlinDuration >>(""" {"a":"PT1H","b":"PT2H","c":"PT3H"}""" )
82
85
@@ -99,7 +102,7 @@ class DurationTests {
99
102
100
103
@Test
101
104
fun `should serialize Kotlin duration inside data class using Java time module` () {
102
- val mapper = jacksonObjectMapper()
105
+ val mapper = objectMapper
103
106
.registerModule(JavaTimeModule ())
104
107
.disable(WRITE_DATES_AS_TIMESTAMPS )
105
108
.disable(WRITE_DURATIONS_AS_TIMESTAMPS )
@@ -111,7 +114,7 @@ class DurationTests {
111
114
112
115
@Test
113
116
fun `should deserialize Kotlin duration inside data class` () {
114
- val mapper = jacksonObjectMapper() .registerModule(JavaTimeModule ())
117
+ val mapper = objectMapper .registerModule(JavaTimeModule ())
115
118
116
119
val result = mapper.readValue<Meeting >(""" {"start":"2023-06-20T14:00:00Z","duration":"PT1H30M"}""" )
117
120
@@ -139,11 +142,15 @@ class DurationTests {
139
142
140
143
@Test
141
144
fun `should serialize Kotlin duration exactly as Java duration` () {
142
- val mapper = jacksonObjectMapper() .registerModule(JavaTimeModule ())
145
+ val mapper = objectMapper .registerModule(JavaTimeModule ())
143
146
144
147
val jdto = JDTO ()
145
148
val kdto = KDTO ()
146
149
147
150
assertEquals(mapper.writeValueAsString(jdto), mapper.writeValueAsString(kdto))
148
151
}
149
- }
152
+
153
+ private fun jacksonObjectMapper (
154
+ configuration : KotlinModule .Builder .() -> Unit ,
155
+ ) = ObjectMapper ().registerModule(kotlinModule(configuration))
156
+ }
0 commit comments