--- /dev/null
+package org.asamk.signal.output;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.asamk.signal.util.Util;
+
+import java.io.IOException;
+import java.io.Writer;
+
+public class JsonWriterImpl implements JsonWriter {
+
+ private final Writer writer;
+ private final ObjectMapper objectMapper;
+
+ public JsonWriterImpl(final Writer writer) {
+ this.writer = writer;
+ this.objectMapper = Util.createJsonObjectMapper();
+ }
+
+ public synchronized void write(final Object object) {
+ try {
+ try {
+ objectMapper.writeValue(writer, object);
+ } catch (JsonProcessingException e) {
+ // Some issue with json serialization, probably caused by a bug
+ throw new AssertionError(e);
+ }
+ writer.write(System.lineSeparator());
+ writer.flush();
+ } catch (IOException e) {
+ throw new AssertionError(e);
+ }
+ }
+}