14
14
package io .dapr .client ;
15
15
16
16
import com .fasterxml .jackson .annotation .JsonInclude ;
17
+ import com .fasterxml .jackson .core .JsonGenerator ;
18
+ import com .fasterxml .jackson .core .JsonParser ;
19
+ import com .fasterxml .jackson .databind .DeserializationContext ;
17
20
import com .fasterxml .jackson .databind .DeserializationFeature ;
18
21
import com .fasterxml .jackson .databind .JavaType ;
22
+ import com .fasterxml .jackson .databind .JsonDeserializer ;
19
23
import com .fasterxml .jackson .databind .JsonNode ;
24
+ import com .fasterxml .jackson .databind .JsonSerializer ;
20
25
import com .fasterxml .jackson .databind .ObjectMapper ;
26
+ import com .fasterxml .jackson .databind .SerializationFeature ;
27
+ import com .fasterxml .jackson .databind .SerializerProvider ;
28
+ import com .fasterxml .jackson .datatype .jsr310 .JavaTimeModule ;
21
29
import com .google .protobuf .MessageLite ;
22
30
import io .dapr .client .domain .CloudEvent ;
23
31
import io .dapr .utils .TypeRef ;
24
32
25
33
import java .io .IOException ;
26
34
import java .lang .reflect .Method ;
35
+ import java .time .ZonedDateTime ;
36
+ import java .time .format .DateTimeFormatter ;
27
37
28
38
/**
29
39
* Serializes and deserializes an internal object.
@@ -35,6 +45,8 @@ public class ObjectSerializer {
35
45
*/
36
46
protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper ()
37
47
.configure (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false )
48
+ .registerModule (new JavaTimeModule ())
49
+ .disable (SerializationFeature .WRITE_DATES_AS_TIMESTAMPS )
38
50
.setSerializationInclusion (JsonInclude .Include .NON_NULL );
39
51
40
52
/**
@@ -149,7 +161,7 @@ private <T> T deserialize(byte[] content, JavaType javaType) throws IOException
149
161
* @throws IOException In case content cannot be parsed.
150
162
*/
151
163
public JsonNode parseNode (byte [] content ) throws IOException {
152
- return OBJECT_MAPPER .readTree (content );
164
+ return OBJECT_MAPPER .readTree (content );
153
165
}
154
166
155
167
/**
@@ -200,4 +212,20 @@ private static <T> T deserializePrimitives(byte[] content, JavaType javaType) th
200
212
201
213
return OBJECT_MAPPER .readValue (content , javaType );
202
214
}
215
+
216
+ private static class ZonedDateTimeDeserializer extends JsonDeserializer <ZonedDateTime > {
217
+ @ Override
218
+ public ZonedDateTime deserialize (JsonParser jsonParser , DeserializationContext deserializationContext )
219
+ throws IOException {
220
+ return ZonedDateTime .parse (jsonParser .getText ());
221
+ }
222
+ }
223
+
224
+ private static class ZonedDateTimeSerializer extends JsonSerializer <ZonedDateTime > {
225
+ @ Override
226
+ public void serialize (ZonedDateTime zonedDateTime , JsonGenerator jsonGenerator ,
227
+ SerializerProvider serializerProvider ) throws IOException {
228
+ jsonGenerator .writeString (zonedDateTime .format (DateTimeFormatter .ISO_ZONED_DATE_TIME ));
229
+ }
230
+ }
203
231
}
0 commit comments