X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/d4b4bd86038025ec69e95c9994e30077d1c9d241..03bf0439593dc1c5e02bdd49e18d649d1c24e721:/src/main/java/org/asamk/signal/JsonWriter.java diff --git a/src/main/java/org/asamk/signal/JsonWriter.java b/src/main/java/org/asamk/signal/JsonWriter.java new file mode 100644 index 00000000..3cc87514 --- /dev/null +++ b/src/main/java/org/asamk/signal/JsonWriter.java @@ -0,0 +1,37 @@ +package org.asamk.signal; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; + +public class JsonWriter { + + private final OutputStreamWriter writer; + private final ObjectMapper objectMapper; + + public JsonWriter(final OutputStream writer) { + this.writer = new OutputStreamWriter(writer, StandardCharsets.UTF_8); + + objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET); + } + + public void write(final Object object) throws IOException { + 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(); + } +}