]> nmode's Git Repositories - signal-cli/commitdiff
Move Writer creation out of WriterImpls
authorAsamK <asamk@gmx.de>
Sun, 7 Nov 2021 14:13:53 +0000 (15:13 +0100)
committerAsamK <asamk@gmx.de>
Mon, 8 Nov 2021 21:16:44 +0000 (22:16 +0100)
src/main/java/org/asamk/signal/App.java
src/main/java/org/asamk/signal/JsonWriterImpl.java
src/main/java/org/asamk/signal/PlainTextWriterImpl.java
src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java

index 9f216daad012b40b3dc5a6626191ecd6c7ae6baf..7375a5c320e6887add8e85e7b0f944113b6fd093 100644 (file)
@@ -32,8 +32,11 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.BufferedWriter;
 import java.io.File;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -105,9 +108,10 @@ public class App {
         var outputType = outputTypeInput == null
                 ? command.getSupportedOutputTypes().stream().findFirst().orElse(null)
                 : outputTypeInput;
+        var writer = new BufferedWriter(new OutputStreamWriter(System.out, Charset.defaultCharset()));
         var outputWriter = outputType == null
                 ? null
-                : outputType == OutputType.JSON ? new JsonWriterImpl(System.out) : new PlainTextWriterImpl(System.out);
+                : outputType == OutputType.JSON ? new JsonWriterImpl(writer) : new PlainTextWriterImpl(writer);
 
         if (outputWriter != null && !command.getSupportedOutputTypes().contains(outputType)) {
             throw new UserErrorException("Command doesn't support output type " + outputType);
index f0daaa85dbafb632c1cd674473857b54cee6366d..aabf399a37cc9476a6009ed65075521fd62a00d6 100644 (file)
@@ -5,22 +5,17 @@ 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 JsonWriterImpl(final Writer writer) {
+        this.writer = writer;
+        this.objectMapper = Util.createJsonObjectMapper();
     }
 
     public synchronized void write(final Object object) {
index bb18b7f38f7266b231f7f2fd029dcf58f9ea4cea..f43fe73ea220a48303e5e97bf18ceda6b72bd077 100644 (file)
@@ -2,10 +2,7 @@ package org.asamk.signal;
 
 import org.slf4j.helpers.MessageFormatter;
 
-import java.io.BufferedWriter;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.io.Writer;
 
 public final class PlainTextWriterImpl implements PlainTextWriter {
@@ -14,8 +11,8 @@ public final class PlainTextWriterImpl implements PlainTextWriter {
 
     private PlainTextWriter indentedWriter;
 
-    public PlainTextWriterImpl(final OutputStream outputStream) {
-        this.writer = new BufferedWriter(new OutputStreamWriter(outputStream));
+    public PlainTextWriterImpl(final Writer writer) {
+        this.writer = writer;
     }
 
     @Override
index b61916a1950df78136ced5fe12be0db9c926b1be..4cfa58916923455852b2952c7359af9634a1b595 100644 (file)
@@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.Reader;
 import java.util.List;
 import java.util.function.Supplier;
 
@@ -49,16 +50,20 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
         m.setIgnoreAttachments(ignoreAttachments);
 
         final var jsonOutputWriter = (JsonWriter) outputWriter;
-        final var reader = new BufferedReader(new InputStreamReader(System.in));
-        final Supplier<String> lineSupplier = () -> {
+        final Supplier<String> lineSupplier = getLineSupplier(new InputStreamReader(System.in));
+
+        final var handler = new SignalJsonRpcDispatcherHandler(m, jsonOutputWriter, lineSupplier);
+        handler.handleConnection();
+
+    private Supplier<String> getLineSupplier(final Reader reader) {
+        final var bufferedReader = new BufferedReader(reader);
+        return () -> {
             try {
-                return reader.readLine();
+                return bufferedReader.readLine();
             } catch (IOException e) {
-                throw new AssertionError(e);
+                logger.error("Error occurred while reading line", e);
+                return null;
             }
         };
-
-        final var handler = new SignalJsonRpcDispatcherHandler(m, jsonOutputWriter, lineSupplier);
-        handler.handleConnection();
     }
 }