10
10
* Do not edit the class manually.
11
11
*/
12
12
13
-
14
- package sendinblue ;
15
-
16
- import com .google .gson .Gson ;
17
- import com .google .gson .GsonBuilder ;
18
- import com .google .gson .JsonParseException ;
19
- import com .google .gson .TypeAdapter ;
20
- import com .google .gson .internal .bind .util .ISO8601Utils ;
21
- import com .google .gson .stream .JsonReader ;
22
- import com .google .gson .stream .JsonWriter ;
23
- import com .google .gson .JsonElement ;
24
- import io .gsonfire .GsonFireBuilder ;
25
- import io .gsonfire .TypeSelector ;
26
- import org .threeten .bp .LocalDate ;
27
- import org .threeten .bp .OffsetDateTime ;
28
- import org .threeten .bp .format .DateTimeFormatter ;
29
-
30
- import sibModel .*;
31
-
32
- import java .io .IOException ;
33
- import java .io .StringReader ;
34
- import java .lang .reflect .Type ;
35
- import java .text .DateFormat ;
36
- import java .text .ParseException ;
37
- import java .text .ParsePosition ;
38
- import java .util .Date ;
39
- import java .util .Map ;
40
- import java .util .HashMap ;
13
+ package sendinblue ;
14
+
15
+ import com .google .gson .*;
16
+ import com .google .gson .internal .bind .util .ISO8601Utils ;
17
+ import com .google .gson .stream .JsonReader ;
18
+ import com .google .gson .stream .JsonWriter ;
19
+ import io .gsonfire .GsonFireBuilder ;
20
+ import org .threeten .bp .LocalDate ;
21
+ import org .threeten .bp .OffsetDateTime ;
22
+ import org .threeten .bp .format .DateTimeFormatter ;
23
+
24
+ import java .io .IOException ;
25
+ import java .io .StringReader ;
26
+ import java .lang .reflect .Type ;
27
+ import java .text .DateFormat ;
28
+ import java .text .ParseException ;
29
+ import java .text .ParsePosition ;
30
+ import java .util .Base64 ;
31
+ import java .util .Date ;
32
+ import java .util .Map ;
41
33
42
34
public class Json {
43
35
private Gson gson ;
44
36
private boolean isLenientOnJson = false ;
45
37
private DateTypeAdapter dateTypeAdapter = new DateTypeAdapter ();
38
+ private ByteArrayToBase64TypeAdapter byteArrayToBase64TypeAdapter = new ByteArrayToBase64TypeAdapter ();
46
39
private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter ();
47
40
private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter ();
48
41
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter ();
49
42
43
+ public Json () {
44
+ gson = createGson ()
45
+ .registerTypeAdapter (Date .class , dateTypeAdapter )
46
+ .registerTypeAdapter (java .sql .Date .class , sqlDateTypeAdapter )
47
+ .registerTypeAdapter (OffsetDateTime .class , offsetDateTimeTypeAdapter )
48
+ .registerTypeAdapter (LocalDate .class , localDateTypeAdapter )
49
+ .registerTypeHierarchyAdapter (byte [].class , byteArrayToBase64TypeAdapter )
50
+ .create ();
51
+ }
52
+
50
53
public static GsonBuilder createGson () {
51
- GsonFireBuilder fireBuilder = new GsonFireBuilder ()
52
- ;
54
+ GsonFireBuilder fireBuilder = new GsonFireBuilder ();
53
55
return fireBuilder .createGsonBuilder ();
54
56
}
55
57
56
58
private static String getDiscriminatorValue (JsonElement readElement , String discriminatorField ) {
57
59
JsonElement element = readElement .getAsJsonObject ().get (discriminatorField );
58
- if (null == element ) {
60
+ if (null == element ) {
59
61
throw new IllegalArgumentException ("missing discriminator field: <" + discriminatorField + ">" );
60
62
}
61
63
return element .getAsString ();
62
64
}
63
65
64
66
private static Class getClassByDiscriminator (Map classByDiscriminatorValue , String discriminatorValue ) {
65
67
Class clazz = (Class ) classByDiscriminatorValue .get (discriminatorValue .toUpperCase ());
66
- if (null == clazz ) {
68
+ if (null == clazz ) {
67
69
throw new IllegalArgumentException ("cannot determine model class of name: <" + discriminatorValue + ">" );
68
70
}
69
71
return clazz ;
70
72
}
71
73
72
- public Json () {
73
- gson = createGson ()
74
- .registerTypeAdapter (Date .class , dateTypeAdapter )
75
- .registerTypeAdapter (java .sql .Date .class , sqlDateTypeAdapter )
76
- .registerTypeAdapter (OffsetDateTime .class , offsetDateTimeTypeAdapter )
77
- .registerTypeAdapter (LocalDate .class , localDateTypeAdapter )
78
- .create ();
79
- }
80
-
81
74
/**
82
75
* Get Gson.
83
76
*
@@ -91,7 +84,7 @@ public Gson getGson() {
91
84
* Set Gson.
92
85
*
93
86
* @param gson Gson
94
- * @return JSON
87
+ * @return Json
95
88
*/
96
89
public Json setGson (Gson gson ) {
97
90
this .gson = gson ;
@@ -104,20 +97,20 @@ public Json setLenientOnJson(boolean lenientOnJson) {
104
97
}
105
98
106
99
/**
107
- * Serialize the given Java object into JSON string.
100
+ * Serialize the given Java object into Json string.
108
101
*
109
102
* @param obj Object
110
- * @return String representation of the JSON
103
+ * @return String representation of the Json
111
104
*/
112
105
public String serialize (Object obj ) {
113
106
return gson .toJson (obj );
114
107
}
115
108
116
109
/**
117
- * Deserialize the given JSON string to Java object.
110
+ * Deserialize the given Json string to Java object.
118
111
*
119
112
* @param <T> Type
120
- * @param body The JSON string
113
+ * @param body The Json string
121
114
* @param returnType The type to deserialize into
122
115
* @return The deserialized Java object
123
116
*/
@@ -133,14 +126,34 @@ public <T> T deserialize(String body, Type returnType) {
133
126
return gson .fromJson (body , returnType );
134
127
}
135
128
} catch (JsonParseException e ) {
136
- // Fallback processing when failed to parse JSON form response body:
129
+ // Fallback processing when failed to parse Json form response body:
137
130
// return the response body string directly for the String return type;
138
131
if (returnType .equals (String .class ))
139
132
return (T ) body ;
140
133
else throw (e );
141
134
}
142
135
}
143
136
137
+ public Json setOffsetDateTimeFormat (DateTimeFormatter dateFormat ) {
138
+ offsetDateTimeTypeAdapter .setFormat (dateFormat );
139
+ return this ;
140
+ }
141
+
142
+ public Json setLocalDateFormat (DateTimeFormatter dateFormat ) {
143
+ localDateTypeAdapter .setFormat (dateFormat );
144
+ return this ;
145
+ }
146
+
147
+ public Json setDateFormat (DateFormat dateFormat ) {
148
+ dateTypeAdapter .setFormat (dateFormat );
149
+ return this ;
150
+ }
151
+
152
+ public Json setSqlDateFormat (DateFormat dateFormat ) {
153
+ sqlDateTypeAdapter .setFormat (dateFormat );
154
+ return this ;
155
+ }
156
+
144
157
/**
145
158
* Gson TypeAdapter for JSR310 OffsetDateTime type
146
159
*/
@@ -178,64 +191,23 @@ public OffsetDateTime read(JsonReader in) throws IOException {
178
191
default :
179
192
String date = in .nextString ();
180
193
if (date .endsWith ("+0000" )) {
181
- date = date .substring (0 , date .length ()- 5 ) + "Z" ;
194
+ date = date .substring (0 , date .length () - 5 ) + "Z" ;
182
195
}
183
196
return OffsetDateTime .parse (date , formatter );
184
197
}
185
198
}
186
199
}
187
200
188
- /**
189
- * Gson TypeAdapter for JSR310 LocalDate type
190
- */
191
- public class LocalDateTypeAdapter extends TypeAdapter <LocalDate > {
192
-
193
- private DateTimeFormatter formatter ;
194
-
195
- public LocalDateTypeAdapter () {
196
- this (DateTimeFormatter .ISO_LOCAL_DATE );
197
- }
198
-
199
- public LocalDateTypeAdapter (DateTimeFormatter formatter ) {
200
- this .formatter = formatter ;
201
- }
202
-
203
- public void setFormat (DateTimeFormatter dateFormat ) {
204
- this .formatter = dateFormat ;
205
- }
206
-
207
- @ Override
208
- public void write (JsonWriter out , LocalDate date ) throws IOException {
209
- if (date == null ) {
210
- out .nullValue ();
211
- } else {
212
- out .value (formatter .format (date ));
213
- }
201
+ public static class ByteArrayToBase64TypeAdapter implements JsonSerializer <byte []>, JsonDeserializer <byte []> {
202
+ public byte [] deserialize (JsonElement json , Type typeOfT , JsonDeserializationContext context ) throws JsonParseException {
203
+ return Base64 .getDecoder ().decode (json .getAsString ());
214
204
}
215
205
216
- @ Override
217
- public LocalDate read (JsonReader in ) throws IOException {
218
- switch (in .peek ()) {
219
- case NULL :
220
- in .nextNull ();
221
- return null ;
222
- default :
223
- String date = in .nextString ();
224
- return LocalDate .parse (date , formatter );
225
- }
206
+ public JsonElement serialize (byte [] src , Type typeOfSrc , JsonSerializationContext context ) {
207
+ return new JsonPrimitive (Base64 .getEncoder ().encodeToString (src ));
226
208
}
227
209
}
228
210
229
- public Json setOffsetDateTimeFormat (DateTimeFormatter dateFormat ) {
230
- offsetDateTimeTypeAdapter .setFormat (dateFormat );
231
- return this ;
232
- }
233
-
234
- public Json setLocalDateFormat (DateTimeFormatter dateFormat ) {
235
- localDateTypeAdapter .setFormat (dateFormat );
236
- return this ;
237
- }
238
-
239
211
/**
240
212
* Gson TypeAdapter for java.sql.Date type
241
213
* If the dateFormat is null, a simple "yyyy-MM-dd" format will be used
@@ -349,14 +321,45 @@ public Date read(JsonReader in) throws IOException {
349
321
}
350
322
}
351
323
352
- public Json setDateFormat ( DateFormat dateFormat ) {
353
- dateTypeAdapter . setFormat ( dateFormat );
354
- return this ;
355
- }
324
+ /**
325
+ * Gson TypeAdapter for JSR310 LocalDate type
326
+ */
327
+ public class LocalDateTypeAdapter extends TypeAdapter < LocalDate > {
356
328
357
- public Json setSqlDateFormat (DateFormat dateFormat ) {
358
- sqlDateTypeAdapter .setFormat (dateFormat );
359
- return this ;
329
+ private DateTimeFormatter formatter ;
330
+
331
+ public LocalDateTypeAdapter () {
332
+ this (DateTimeFormatter .ISO_LOCAL_DATE );
333
+ }
334
+
335
+ public LocalDateTypeAdapter (DateTimeFormatter formatter ) {
336
+ this .formatter = formatter ;
337
+ }
338
+
339
+ public void setFormat (DateTimeFormatter dateFormat ) {
340
+ this .formatter = dateFormat ;
341
+ }
342
+
343
+ @ Override
344
+ public void write (JsonWriter out , LocalDate date ) throws IOException {
345
+ if (date == null ) {
346
+ out .nullValue ();
347
+ } else {
348
+ out .value (formatter .format (date ));
349
+ }
350
+ }
351
+
352
+ @ Override
353
+ public LocalDate read (JsonReader in ) throws IOException {
354
+ switch (in .peek ()) {
355
+ case NULL :
356
+ in .nextNull ();
357
+ return null ;
358
+ default :
359
+ String date = in .nextString ();
360
+ return LocalDate .parse (date , formatter );
361
+ }
362
+ }
360
363
}
361
364
362
- }
365
+ }
0 commit comments