1 package org
.asamk
.signal
;
3 import com
.fasterxml
.jackson
.annotation
.JsonAutoDetect
;
4 import com
.fasterxml
.jackson
.annotation
.PropertyAccessor
;
5 import com
.fasterxml
.jackson
.core
.JsonGenerator
;
6 import com
.fasterxml
.jackson
.core
.JsonProcessingException
;
7 import com
.fasterxml
.jackson
.databind
.ObjectMapper
;
9 import java
.io
.BufferedWriter
;
10 import java
.io
.IOException
;
11 import java
.io
.OutputStream
;
12 import java
.io
.OutputStreamWriter
;
13 import java
.io
.Writer
;
14 import java
.nio
.charset
.StandardCharsets
;
16 public class JsonWriter
{
18 private final Writer writer
;
19 private final ObjectMapper objectMapper
;
21 public JsonWriter(final OutputStream writer
) {
22 this.writer
= new BufferedWriter(new OutputStreamWriter(writer
, StandardCharsets
.UTF_8
));
24 objectMapper
= new ObjectMapper();
25 objectMapper
.setVisibility(PropertyAccessor
.ALL
, JsonAutoDetect
.Visibility
.PUBLIC_ONLY
);
26 objectMapper
.disable(JsonGenerator
.Feature
.AUTO_CLOSE_TARGET
);
29 public void write(final Object object
) throws IOException
{
31 objectMapper
.writeValue(writer
, object
);
32 } catch (JsonProcessingException e
) {
33 // Some issue with json serialization, probably caused by a bug
34 throw new AssertionError(e
);
36 writer
.write(System
.lineSeparator());