1 package org
.asamk
.signal
.dbus
;
3 import org
.asamk
.SignalControl
;
4 import org
.asamk
.signal
.manager
.ProvisioningManager
;
5 import org
.asamk
.signal
.manager
.api
.UserAlreadyExistsException
;
6 import org
.freedesktop
.dbus
.connections
.impl
.DBusConnection
;
8 import java
.io
.IOException
;
10 import java
.net
.URISyntaxException
;
11 import java
.util
.concurrent
.TimeoutException
;
14 * This class implements the ProvisioningManager interface using the DBus Signal interface, where possible.
15 * It's used for the signal-cli dbus client mode (--dbus, --dbus-system)
17 public class DbusProvisioningManagerImpl
implements ProvisioningManager
{
19 private final SignalControl signalControl
;
20 private final DBusConnection connection
;
22 private URI deviceLinkUri
;
24 public DbusProvisioningManagerImpl(final SignalControl signalControl
, DBusConnection connection
) {
25 this.signalControl
= signalControl
;
26 this.connection
= connection
;
29 public DbusProvisioningManagerImpl(
30 final SignalControl signalControl
,
31 DBusConnection connection
,
34 this.signalControl
= signalControl
;
35 this.connection
= connection
;
36 this.deviceLinkUri
= deviceLinkUri
;
40 public URI
getDeviceLinkUri() throws TimeoutException
, IOException
{
42 deviceLinkUri
= new URI(signalControl
.startLink());
44 } catch (URISyntaxException e
) {
45 throw new IOException(e
);
50 public String
finishDeviceLink(final String deviceName
) throws IOException
, TimeoutException
, UserAlreadyExistsException
{
51 return signalControl
.finishLink(deviceLinkUri
.toString(), deviceName
);