]> nmode's Git Repositories - signal-cli/commitdiff
Add PlainTextWriter interface
authorAsamK <asamk@gmx.de>
Mon, 9 Aug 2021 17:02:24 +0000 (19:02 +0200)
committerAsamK <asamk@gmx.de>
Mon, 9 Aug 2021 17:03:59 +0000 (19:03 +0200)
16 files changed:
src/main/java/org/asamk/signal/App.java
src/main/java/org/asamk/signal/JsonWriter.java
src/main/java/org/asamk/signal/JsonWriterImpl.java [new file with mode: 0644]
src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java
src/main/java/org/asamk/signal/commands/JoinGroupCommand.java
src/main/java/org/asamk/signal/commands/LinkCommand.java
src/main/java/org/asamk/signal/commands/ListContactsCommand.java
src/main/java/org/asamk/signal/commands/ListDevicesCommand.java
src/main/java/org/asamk/signal/commands/ListIdentitiesCommand.java
src/main/java/org/asamk/signal/commands/QuitGroupCommand.java
src/main/java/org/asamk/signal/commands/ReceiveCommand.java
src/main/java/org/asamk/signal/commands/RemoteDeleteCommand.java
src/main/java/org/asamk/signal/commands/SendReactionCommand.java
src/main/java/org/asamk/signal/commands/UnregisterCommand.java
src/main/java/org/asamk/signal/commands/UpdateGroupCommand.java
src/main/java/org/asamk/signal/commands/UploadStickerPackCommand.java

index 6cc7365553c044d8fcfc5fcc19567b0556fdac62..49172f800c2f9e547373d9c6ed180c17e36a7a07 100644 (file)
@@ -92,7 +92,7 @@ public class App {
     public void init() throws CommandException {
         var outputType = ns.<OutputType>get("output");
         var outputWriter = outputType == OutputType.JSON
-                ? new JsonWriter(System.out)
+                ? new JsonWriterImpl(System.out)
                 : new PlainTextWriterImpl(System.out);
 
         var commandKey = ns.getString("command");
index c48fd095bdb9c1bef0758ba29f66edf0b0cf588e..78a04c6230acb7d851f5bb3f730ffce19ca53312 100644 (file)
@@ -1,43 +1,6 @@
 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;
+public interface JsonWriter extends OutputWriter {
 
-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 JsonWriter implements OutputWriter {
-
-    private final Writer writer;
-    private final ObjectMapper objectMapper;
-
-    public JsonWriter(final OutputStream outputStream) {
-        this.writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
-
-        objectMapper = new ObjectMapper();
-        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.PUBLIC_ONLY);
-        objectMapper.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
-    }
-
-    public 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);
-        }
-    }
+    void write(final Object object);
 }
diff --git a/src/main/java/org/asamk/signal/JsonWriterImpl.java b/src/main/java/org/asamk/signal/JsonWriterImpl.java
new file mode 100644 (file)
index 0000000..772e4c7
--- /dev/null
@@ -0,0 +1,43 @@
+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.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 = new ObjectMapper();
+        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.PUBLIC_ONLY);
+        objectMapper.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
+    }
+
+    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);
+        }
+    }
+}
index 4a35fc11c07059a9fff5bc660af2dfe65a0d6aa5..01b5a2600498268465c4794f911a412376c76193 100644 (file)
@@ -6,7 +6,7 @@ import net.sourceforge.argparse4j.inf.Subparser;
 import org.asamk.signal.JsonWriter;
 import org.asamk.signal.OutputType;
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.manager.Manager;
@@ -60,7 +60,7 @@ public class GetUserStatusCommand implements LocalCommand {
 
             jsonWriter.write(jsonUserStatuses);
         } else {
-            final var writer = (PlainTextWriterImpl) outputWriter;
+            final var writer = (PlainTextWriter) outputWriter;
 
             for (var entry : registered.entrySet()) {
                 writer.println("{}: {}", entry.getKey(), entry.getValue());
index 6cb81b7edefa707e61e4f9f3160bd096067fc1d7..9b65b193e12daa35d09e919411a3c062a90d064b 100644 (file)
@@ -4,7 +4,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
@@ -49,7 +49,7 @@ public class JoinGroupCommand implements LocalCommand {
         }
 
         try {
-            final var writer = (PlainTextWriterImpl) outputWriter;
+            final var writer = (PlainTextWriter) outputWriter;
 
             final var results = m.joinGroup(linkUrl);
             var newGroupId = results.first();
index ae496758aa308c0fe3ba0c5acb88a05984835dab..f117436c913874f247cb4b1267749ab7b0a134c8 100644 (file)
@@ -4,7 +4,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
@@ -32,7 +32,7 @@ public class LinkCommand implements ProvisioningCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final ProvisioningManager m) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         var deviceName = ns.getString("name");
         if (deviceName == null) {
index d0e115281bfeb8df4ca9f8eeaf54274fee81c8ba..f9a5e0c2de6da5d572a7f004b74d4b1cc6aced11 100644 (file)
@@ -4,7 +4,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.manager.Manager;
 
 import static org.asamk.signal.util.Util.getLegacyIdentifier;
@@ -23,7 +23,7 @@ public class ListContactsCommand implements LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Manager m) {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         var contacts = m.getContacts();
         for (var c : contacts) {
index c0873c15a1e90c7875abc05a78cd4f4373b5511f..cb2019e24c02b68aa18833c76c5c0ac4a843d3a9 100644 (file)
@@ -4,7 +4,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.manager.Manager;
@@ -31,7 +31,7 @@ public class ListDevicesCommand implements LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         List<Device> devices;
         try {
index 9f4765997622ae251781baac391e6bd948884dfa..2b0b1f96a4948aad90ca6ab6a5276dc2e6e7f9aa 100644 (file)
@@ -5,7 +5,6 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
 import org.asamk.signal.PlainTextWriter;
-import org.asamk.signal.PlainTextWriterImpl;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
@@ -46,7 +45,7 @@ public class ListIdentitiesCommand implements LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         var number = ns.getString("number");
 
index 3414d304c9683fe6b07ccf27511af65b965c89cc..ee64bac504a0a3cfcba98ed140b9ab9aab119493 100644 (file)
@@ -5,7 +5,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
@@ -48,7 +48,7 @@ public class QuitGroupCommand implements LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         final GroupId groupId;
         try {
index 301694e986631e0b9b8ef07e04b4f23394a5330a..517d894b1c0a4063cd2975b8a9774a8e1a616375 100644 (file)
@@ -10,7 +10,6 @@ import org.asamk.signal.JsonWriter;
 import org.asamk.signal.OutputType;
 import org.asamk.signal.OutputWriter;
 import org.asamk.signal.PlainTextWriter;
-import org.asamk.signal.PlainTextWriterImpl;
 import org.asamk.signal.ReceiveMessageHandler;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
@@ -79,7 +78,7 @@ public class ReceiveCommand implements ExtendedDbusCommand, LocalCommand {
                     jsonWriter.write(object);
                 });
             } else {
-                final var writer = (PlainTextWriterImpl) outputWriter;
+                final var writer = (PlainTextWriter) outputWriter;
 
                 dbusconnection.addSigHandler(Signal.MessageReceived.class, signal, messageReceived -> {
                     writer.println("Envelope from: {}", messageReceived.getSender());
index 0ab68a902b5575fb783beed4ea3f23b4e800f667..acd912272ee301cc7247b754d34448b414048f7a 100644 (file)
@@ -5,7 +5,7 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.Signal;
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
@@ -49,7 +49,7 @@ public class RemoteDeleteCommand implements DbusCommand {
 
         final long targetTimestamp = ns.getLong("target-timestamp");
 
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         byte[] groupId = null;
         if (groupIdString != null) {
index 8ed9ac6359f8247f650abae1e310d63f77fb834d..f77a2c4bde4d67dc9ba8bfe5e150b8c07c2eafba 100644 (file)
@@ -6,7 +6,7 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.Signal;
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
@@ -60,7 +60,7 @@ public class SendReactionCommand implements DbusCommand {
         final var targetAuthor = ns.getString("target-author");
         final long targetTimestamp = ns.getLong("target-timestamp");
 
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
 
         byte[] groupId = null;
         if (groupIdString != null) {
index c8c754acb17123311cb7ca816b08d3217e9a811e..dbb8b53541f5af2fcf6f17a794f94594557ae881 100644 (file)
@@ -32,7 +32,6 @@ public class UnregisterCommand implements LocalCommand {
                 m.unregister();
             }
         } catch (IOException e) {
-            e.printStackTrace();
             throw new IOErrorException("Unregister error: " + e.getMessage());
         }
     }
index b392df052d68a02065997b69790d67c740110fa0..20c9649bf516a7f12a13843e876fefe88d6293fd 100644 (file)
@@ -8,7 +8,7 @@ import org.asamk.Signal;
 import org.asamk.signal.GroupLinkState;
 import org.asamk.signal.GroupPermission;
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
@@ -74,7 +74,7 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
         GroupId groupId = null;
         final var groupIdString = ns.getString("group");
         if (groupIdString != null) {
@@ -142,7 +142,7 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Signal signal) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
         byte[] groupId = null;
         if (ns.getString("group") != null) {
             try {
index e2ba2ff9edc27937d89a1ff215ebb4f61f96e266..993e37c48c3d83f754217846d993df5d7746be72 100644 (file)
@@ -4,7 +4,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.OutputWriter;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.PlainTextWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
@@ -33,7 +33,7 @@ public class UploadStickerPackCommand implements LocalCommand {
 
     @Override
     public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
-        final var writer = (PlainTextWriterImpl) outputWriter;
+        final var writer = (PlainTextWriter) outputWriter;
         var path = new File(ns.getString("path"));
 
         try {