2525import java .util .LinkedHashMap ;
2626import java .util .List ;
2727import java .util .Map ;
28+ import java .util .Objects ;
2829import java .util .function .Function ;
2930
3031/**
@@ -47,18 +48,30 @@ public final class GsonJsonMapper implements TypedTypeMapper {
4748 private final Gson gson ;
4849
4950 public GsonJsonMapper () {
50- this .gson =
51- new GsonBuilder ()
52- .registerTypeAdapter (Instant .class , iso (Instant ::toString , Instant ::parse ))
53- .registerTypeAdapter (
54- OffsetDateTime .class , iso (OffsetDateTime ::toString , OffsetDateTime ::parse ))
55- .registerTypeAdapter (
56- ZonedDateTime .class , iso (ZonedDateTime ::toString , ZonedDateTime ::parse ))
57- .registerTypeAdapter (
58- LocalDateTime .class , iso (LocalDateTime ::toString , LocalDateTime ::parse ))
59- .registerTypeAdapter (LocalDate .class , iso (LocalDate ::toString , LocalDate ::parse ))
60- .registerTypeAdapter (LocalTime .class , iso (LocalTime ::toString , LocalTime ::parse ))
61- .create ();
51+ this (defaultGson ());
52+ }
53+
54+ public GsonJsonMapper (Gson gson ) {
55+ this .gson = Objects .requireNonNull (gson , "gson must not be null" );
56+ }
57+
58+ /** Returns the wrapped {@link Gson} instance. */
59+ public Gson gson () {
60+ return gson ;
61+ }
62+
63+ private static Gson defaultGson () {
64+ return new GsonBuilder ()
65+ .registerTypeAdapter (Instant .class , iso (Instant ::toString , Instant ::parse ))
66+ .registerTypeAdapter (
67+ OffsetDateTime .class , iso (OffsetDateTime ::toString , OffsetDateTime ::parse ))
68+ .registerTypeAdapter (
69+ ZonedDateTime .class , iso (ZonedDateTime ::toString , ZonedDateTime ::parse ))
70+ .registerTypeAdapter (
71+ LocalDateTime .class , iso (LocalDateTime ::toString , LocalDateTime ::parse ))
72+ .registerTypeAdapter (LocalDate .class , iso (LocalDate ::toString , LocalDate ::parse ))
73+ .registerTypeAdapter (LocalTime .class , iso (LocalTime ::toString , LocalTime ::parse ))
74+ .create ();
6275 }
6376
6477 @ Override
0 commit comments