@@ -60,6 +60,8 @@ public static GsonBuilder registerOption(GsonBuilder builder) {
60
60
*/
61
61
public static GsonBuilder registerAllMultimaps (GsonBuilder builder ) {
62
62
checkBuilder (builder );
63
+ registerMultimap (builder );
64
+ registerSortedMultimap (builder );
63
65
registerHashMultimap (builder );
64
66
registerLinkedHashMultimap (builder );
65
67
registerTreeMultimap (builder );
@@ -75,6 +77,24 @@ public static GsonBuilder registerHashMultimap(GsonBuilder builder) {
75
77
return checkBuilder (builder ).registerTypeAdapter (HashMultimap .class , new MultimapConverter <>(t -> HashMultimap .withSeq ().ofEntries (t )));
76
78
}
77
79
80
+ /**
81
+ * Registers the {@link Multimap} converter.
82
+ * @param builder The GSON builder to register the converters with.
83
+ * @return A reference to {@code builder}.
84
+ */
85
+ public static GsonBuilder registerMultimap (GsonBuilder builder ) {
86
+ return checkBuilder (builder ).registerTypeAdapter (Multimap .class , new MultimapConverter <>(t -> HashMultimap .withSeq ().ofEntries (t )));
87
+ }
88
+
89
+ /**
90
+ * Registers the {@link SortedMultimap} converter.
91
+ * @param builder The GSON builder to register the converters with.
92
+ * @return A reference to {@code builder}.
93
+ */
94
+ public static GsonBuilder registerSortedMultimap (GsonBuilder builder ) {
95
+ return checkBuilder (builder ).registerTypeAdapter (SortedMultimap .class , new MultimapConverter <>(t -> TreeMultimap .withSeq ().ofEntries (t )));
96
+ }
97
+
78
98
/**
79
99
* Registers the {@link LinkedHashMultimap} converter.
80
100
* @param builder The GSON builder to register the converters with.
@@ -100,6 +120,8 @@ public static GsonBuilder registerTreeMultimap(GsonBuilder builder) {
100
120
*/
101
121
public static GsonBuilder registerAllMaps (GsonBuilder builder ) {
102
122
checkBuilder (builder );
123
+ registerMap (builder );
124
+ registerSortedMap (builder );
103
125
registerHashMap (builder );
104
126
registerLinkedHashMap (builder );
105
127
registerTreeMap (builder );
@@ -115,6 +137,24 @@ public static GsonBuilder registerHashMap(GsonBuilder builder) {
115
137
return checkBuilder (builder ).registerTypeAdapter (HashMap .class , new MapConverter <>(HashMap ::ofEntries ));
116
138
}
117
139
140
+ /**
141
+ * Registers the {@link Map} converter.
142
+ * @param builder The GSON builder to register the converters with.
143
+ * @return A reference to {@code builder}.
144
+ */
145
+ public static GsonBuilder registerMap (GsonBuilder builder ) {
146
+ return checkBuilder (builder ).registerTypeAdapter (Map .class , new MapConverter <>(HashMap ::ofEntries ));
147
+ }
148
+
149
+ /**
150
+ * Registers the {@link SortedMap} converter.
151
+ * @param builder The GSON builder to register the converters with.
152
+ * @return A reference to {@code builder}.
153
+ */
154
+ public static GsonBuilder registerSortedMap (GsonBuilder builder ) {
155
+ return checkBuilder (builder ).registerTypeAdapter (SortedMap .class , new MapConverter <>(TreeMap ::ofEntries ));
156
+ }
157
+
118
158
/**
119
159
* Registers the {@link LinkedHashMap} converter.
120
160
* @param builder The GSON builder to register the converters with.
@@ -150,10 +190,15 @@ public static GsonBuilder registerTuples(GsonBuilder builder) {
150
190
public static GsonBuilder registerAllCollections (GsonBuilder builder ) {
151
191
checkBuilder (builder );
152
192
registerArray (builder );
193
+ registerSeq (builder );
194
+ registerIndexedSeq (builder );
195
+ registerLinearSeq (builder );
153
196
registerList (builder );
154
197
registerQueue (builder );
155
198
registerStream (builder );
156
199
registerVector (builder );
200
+ registerSet (builder );
201
+ registerSortedSet (builder );
157
202
registerHashSet (builder );
158
203
registerLinkedHashSet (builder );
159
204
registerTreeSet (builder );
@@ -180,6 +225,25 @@ public static GsonBuilder registerHashSet(GsonBuilder builder) {
180
225
return checkBuilder (builder ).registerTypeAdapter (HashSet .class , new TraversableConverter <>(HashSet ::ofAll ));
181
226
}
182
227
228
+ /**
229
+ * Registers the {@link Set} converter.
230
+ * @param builder The GSON builder to register the converters with.
231
+ * @return A reference to {@code builder}.
232
+ */
233
+ public static GsonBuilder registerSet (GsonBuilder builder ) {
234
+ return checkBuilder (builder ).registerTypeAdapter (Set .class , new TraversableConverter <>(HashSet ::ofAll ));
235
+ }
236
+
237
+ /**
238
+ * Registers the {@link SortedSet} converter.
239
+ * @param builder The GSON builder to register the converters with.
240
+ * @return A reference to {@code builder}.
241
+ */
242
+ @ SuppressWarnings ("unchecked" )
243
+ public static GsonBuilder registerSortedSet (GsonBuilder builder ) {
244
+ return checkBuilder (builder ).registerTypeAdapter (SortedSet .class , new TraversableConverter <>(it -> TreeSet .ofAll ((o1 , o2 ) -> ((Comparable ) o1 ).compareTo (o2 ), it )));
245
+ }
246
+
183
247
/**
184
248
* Registers the {@link LinkedHashSet} converter.
185
249
* @param builder The GSON builder to register the converters with.
@@ -208,6 +272,33 @@ public static GsonBuilder registerArray(GsonBuilder builder) {
208
272
return checkBuilder (builder ).registerTypeAdapter (Array .class , new TraversableConverter <>(Array ::ofAll ));
209
273
}
210
274
275
+ /**
276
+ * Registers the {@link Seq} converter.
277
+ * @param builder The GSON builder to register the converters with.
278
+ * @return A reference to {@code builder}.
279
+ */
280
+ public static GsonBuilder registerSeq (GsonBuilder builder ) {
281
+ return checkBuilder (builder ).registerTypeAdapter (Seq .class , new TraversableConverter <>(List ::ofAll ));
282
+ }
283
+
284
+ /**
285
+ * Registers the {@link IndexedSeq} converter.
286
+ * @param builder The GSON builder to register the converters with.
287
+ * @return A reference to {@code builder}.
288
+ */
289
+ public static GsonBuilder registerIndexedSeq (GsonBuilder builder ) {
290
+ return checkBuilder (builder ).registerTypeAdapter (IndexedSeq .class , new TraversableConverter <>(Vector ::ofAll ));
291
+ }
292
+
293
+ /**
294
+ * Registers the {@link LinearSeq} converter.
295
+ * @param builder The GSON builder to register the converters with.
296
+ * @return A reference to {@code builder}.
297
+ */
298
+ public static GsonBuilder registerLinearSeq (GsonBuilder builder ) {
299
+ return checkBuilder (builder ).registerTypeAdapter (LinearSeq .class , new TraversableConverter <>(List ::ofAll ));
300
+ }
301
+
211
302
/**
212
303
* Registers the {@link List} converter.
213
304
* @param builder The GSON builder to register the converters with.
0 commit comments