mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-29 18:40:39 +00:00
40 lines
1.2 KiB
Java
40 lines
1.2 KiB
Java
package org.asamk.signal;
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
import org.asamk.signal.util.Util;
|
|
|
|
import java.io.BufferedWriter;
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
import java.io.OutputStreamWriter;
|
|
import java.io.Writer;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
public class JsonWriterImpl implements JsonWriter {
|
|
|
|
private final Writer writer;
|
|
private final ObjectMapper objectMapper;
|
|
|
|
public JsonWriterImpl(final OutputStream outputStream) {
|
|
this.writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|