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
, DBusConnection connection
, URI deviceLinkUri
32 this.signalControl
= signalControl
;
33 this.connection
= connection
;
34 this.deviceLinkUri
= deviceLinkUri
;
38 public URI
getDeviceLinkUri() throws TimeoutException
, IOException
{
40 deviceLinkUri
= new URI(signalControl
.startLink());
42 } catch (URISyntaxException e
) {
43 throw new IOException(e
);
48 public String
finishDeviceLink(final String deviceName
) throws IOException
, TimeoutException
, UserAlreadyExistsException
{
49 return signalControl
.finishLink(deviceLinkUri
.toString(), deviceName
);