]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/DaemonCommand.java
Update dbus-java
[signal-cli] / src / main / java / org / asamk / signal / commands / DaemonCommand.java
index 7c972496dc919dacf57dd440d538c3af3e8fb0a7..e6fb1d812cecf02f34b499e1e813cf96ba55a16a 100644 (file)
@@ -10,6 +10,7 @@ import org.asamk.signal.ReceiveMessageHandler;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
+import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.dbus.DbusSignalControlImpl;
 import org.asamk.signal.dbus.DbusSignalImpl;
 import org.asamk.signal.json.JsonReceiveMessageHandler;
@@ -22,6 +23,7 @@ import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriter;
 import org.asamk.signal.util.IOUtils;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
+import org.freedesktop.dbus.connections.impl.DBusConnectionBuilder;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -282,7 +284,7 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
     private void runDbusSingleAccount(
             final Manager m, final boolean isDbusSystem, final boolean noReceiveOnStart
-    ) throws UnexpectedErrorException {
+    ) throws CommandException {
         runDbus(isDbusSystem, (conn, objectPath) -> {
             try {
                 exportDbusObject(conn, objectPath, m, noReceiveOnStart).join();
@@ -293,7 +295,7 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
     private void runDbusMultiAccount(
             final MultiAccountManager c, final boolean noReceiveOnStart, final boolean isDbusSystem
-    ) throws UnexpectedErrorException {
+    ) throws CommandException {
         runDbus(isDbusSystem, (connection, objectPath) -> {
             final var signalControl = new DbusSignalControlImpl(c, objectPath);
             connection.exportObject(signalControl);
@@ -332,7 +334,7 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
     private void runDbus(
             final boolean isDbusSystem, DbusRunner dbusRunner
-    ) throws UnexpectedErrorException {
+    ) throws CommandException {
         DBusConnection.DBusBusType busType;
         if (isDbusSystem) {
             busType = DBusConnection.DBusBusType.SYSTEM;
@@ -341,10 +343,12 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
         }
         DBusConnection conn;
         try {
-            conn = DBusConnection.getConnection(busType);
+            conn = DBusConnectionBuilder.forType(busType).build();
             dbusRunner.run(conn, DbusConfig.getObjectPath());
         } catch (DBusException e) {
             throw new UnexpectedErrorException("Dbus command failed: " + e.getMessage(), e);
+        } catch (UnsupportedOperationException e) {
+            throw new UserErrorException("Failed to connect to Dbus: " + e.getMessage(), e);
         }
 
         try {