]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/JsonWriter.java
Bump version
[signal-cli] / src / main / java / org / asamk / signal / JsonWriter.java
1 package org.asamk.signal;
2
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;
8
9 import java.io.IOException;
10 import java.io.OutputStream;
11 import java.io.OutputStreamWriter;
12 import java.nio.charset.StandardCharsets;
13
14 public class JsonWriter {
15
16 private final OutputStreamWriter writer;
17 private final ObjectMapper objectMapper;
18
19 public JsonWriter(final OutputStream writer) {
20 this.writer = new OutputStreamWriter(writer, StandardCharsets.UTF_8);
21
22 objectMapper = new ObjectMapper();
23 objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.PUBLIC_ONLY);
24 objectMapper.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
25 }
26
27 public void write(final Object object) throws IOException {
28 try {
29 objectMapper.writeValue(writer, object);
30 } catch (JsonProcessingException e) {
31 // Some issue with json serialization, probably caused by a bug
32 throw new AssertionError(e);
33 }
34 writer.write(System.lineSeparator());
35 writer.flush();
36 }
37 }