39
39
import java .util .Set ;
40
40
import java .util .stream .Collectors ;
41
41
42
- import org .joda .time .DateTime ;
43
- import org .joda .time .DateTimeZone ;
44
42
import org .junit .jupiter .api .BeforeEach ;
45
43
import org .junit .jupiter .api .Test ;
46
44
import org .junit .jupiter .params .ParameterizedTest ;
49
47
import tools .jackson .databind .JsonNode ;
50
48
import tools .jackson .databind .ObjectMapper ;
51
49
import tools .jackson .databind .json .JsonMapper ;
52
- import tools .jackson .datatype .joda .JodaModule ;
53
50
import tools .jackson .module .kotlin .KotlinModule ;
54
51
55
52
import static org .assertj .core .api .Assertions .assertThat ;
62
59
*/
63
60
class JacksonJsonObjectMapperTests {
64
61
65
- private static final JacksonModule JODA_MODULE = new JodaModule ();
66
-
67
- private static final JacksonModule KOTLIN_MODULE = new KotlinModule .Builder ().build ();
68
-
69
62
private JacksonJsonObjectMapper mapper ;
70
63
71
64
@ BeforeEach
@@ -75,17 +68,15 @@ void setUp() {
75
68
76
69
@ Test
77
70
void compareAutoDiscoveryVsManualModules () {
71
+ KotlinModule kotlinModule = new KotlinModule .Builder ().build ();
78
72
ObjectMapper manualMapper = JsonMapper .builder ()
79
- .addModules (collectWellKnownModulesIfAvailable () )
73
+ .addModules (kotlinModule )
80
74
.build ();
81
75
82
- Set <String > collectedModuleNames = getModuleNames (collectWellKnownModulesIfAvailable ());
83
-
84
76
Set <String > autoModuleNames = getModuleNames (mapper .getObjectMapper ().getRegisteredModules ());
85
- assertThat (autoModuleNames ).isEqualTo (collectedModuleNames );
86
-
87
77
Set <String > manualModuleNames = getModuleNames (manualMapper .getRegisteredModules ());
88
- assertThat (manualModuleNames ).isEqualTo (collectedModuleNames );
78
+
79
+ assertThat (autoModuleNames ).isEqualTo (manualModuleNames );
89
80
}
90
81
91
82
@ Test
@@ -196,7 +187,7 @@ void testMapTypes() throws IOException {
196
187
}
197
188
198
189
@ Test
199
- public void testOptional () throws IOException {
190
+ void testOptional () throws IOException {
200
191
TestData data =
new TestData (
"John" ,
Optional .
of (
"[email protected] " ),
Optional .
empty ());
201
192
202
193
String json = mapper .toJson (data );
@@ -207,72 +198,29 @@ public void testOptional() throws IOException {
207
198
}
208
199
209
200
@ Test
210
- public void testJavaTime () throws Exception {
201
+ void testJavaTime () throws IOException {
211
202
LocalDateTime localDateTime = LocalDateTime .of (2000 , 1 , 1 , 0 , 0 );
212
203
ZonedDateTime zonedDateTime = ZonedDateTime .of (localDateTime , ZoneId .of ("UTC" ));
213
204
TimeData data = new TimeData (localDateTime , zonedDateTime );
214
205
215
206
String json = mapper .toJson (data );
216
- assertThat ("{\" localDate\" :\" 2000-01-01T00:00:00\" ,\" zoneDate\" :\" 2000-01-01T00:00:00Z\" }" ). isEqualTo ( json );
207
+ assertThat (json ). isEqualTo ( "{\" localDate\" :\" 2000-01-01T00:00:00\" ,\" zoneDate\" :\" 2000-01-01T00:00:00Z\" }" );
217
208
218
209
TimeData deserialized = mapper .fromJson (json , TimeData .class );
219
210
assertThat (deserialized .localDate ()).isEqualTo (data .localDate ());
220
211
assertThat (deserialized .zoneDate ().toInstant ()).isEqualTo (data .zoneDate ().toInstant ());
221
212
}
222
213
223
- @ Test
224
- public void testJodaWithJodaModule () throws Exception {
225
- ObjectMapper objectMapper = mapper .getObjectMapper ();
226
- Set <String > registeredModules = getModuleNames (objectMapper .getRegisteredModules ());
227
- assertThat (registeredModules .contains (JODA_MODULE .getModuleName ())).isTrue ();
228
-
229
- org .joda .time .DateTime jodaDateTime = new DateTime (2000 , 1 , 1 , 0 , 0 , DateTimeZone .UTC );
230
- JodaData data = new JodaData ("John" , jodaDateTime );
231
-
232
- String json = mapper .toJson (data );
233
- assertThat ("{\" name\" :\" John\" ,\" jodaDate\" :\" 2000-01-01T00:00:00.000Z\" }" ).isEqualTo (json );
234
-
235
- JodaData deserialized = mapper .fromJson (json , JodaData .class );
236
- assertThat (deserialized .name ()).isEqualTo (data .name ());
237
- assertThat (deserialized .jodaDate ()).isEqualTo (data .jodaDate ());
238
- }
239
-
240
- @ Test
241
- public void testJodaWithoutJodaModule () {
242
- ObjectMapper customMapper = JsonMapper .builder ().build ();
243
- JacksonJsonObjectMapper mapper = new JacksonJsonObjectMapper (customMapper );
244
-
245
- Set <String > registeredModules = getModuleNames (mapper .getObjectMapper ().getRegisteredModules ());
246
- assertThat (registeredModules .contains (JODA_MODULE .getModuleName ())).isFalse ();
247
-
248
- org .joda .time .DateTime jodaDateTime = new DateTime (2000 , 1 , 1 , 0 , 0 , DateTimeZone .UTC );
249
- JodaData data = new JodaData ("John" , jodaDateTime );
250
-
251
- assertThatThrownBy (() -> mapper .toJson (data ))
252
- .isInstanceOf (IOException .class );
253
-
254
- String json = "{\" name\" :\" John\" ,\" jodaDate\" :\" 2000-01-01T00:00:00.000Z\" }" ;
255
- assertThatThrownBy (() -> mapper .fromJson (json , JodaData .class ))
256
- .isInstanceOf (IOException .class );
257
- }
258
-
259
214
private Set <String > getModuleNames (Collection <JacksonModule > modules ) {
260
215
return modules .stream ()
261
216
.map (JacksonModule ::getModuleName )
262
217
.collect (Collectors .toUnmodifiableSet ());
263
218
}
264
219
265
- private List <JacksonModule > collectWellKnownModulesIfAvailable () {
266
- return List .of (JODA_MODULE , KOTLIN_MODULE );
267
- }
268
-
269
220
private record TestData (String name , Optional <String > email , Optional <Integer > age ) {
270
221
}
271
222
272
223
private record TimeData (LocalDateTime localDate , ZonedDateTime zoneDate ) {
273
224
}
274
225
275
- private record JodaData (String name , org .joda .time .DateTime jodaDate ) {
276
- }
277
-
278
226
}
0 commit comments