]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/JsonWriterImpl.java
Implement jsonRpc command
[signal-cli] / src / main / java / org / asamk / signal / JsonWriterImpl.java
1 package org.asamk.signal;
2
3 import com.fasterxml.jackson.core.JsonProcessingException;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5
6 import org.asamk.signal.util.Util;
7
8 import java.io.BufferedWriter;
9 import java.io.IOException;
10 import java.io.OutputStream;
11 import java.io.OutputStreamWriter;
12 import java.io.Writer;
13 import java.nio.charset.StandardCharsets;
14
15 public class JsonWriterImpl implements JsonWriter {
16
17 private final Writer writer;
18 private final ObjectMapper objectMapper;
19
20 public JsonWriterImpl(final OutputStream outputStream) {
21 this.writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
22
23 objectMapper = Util.createJsonObjectMapper();
24 }
25
26 public synchronized void write(final Object object) {
27 try {
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 } catch (IOException e) {
37 throw new AssertionError(e);
38 }
39 }
40 }